diff --git a/.gitignore b/.gitignore
index a09a7a0d6b9..9a90619a107 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,9 @@
-tools/xtensa-esp32-elf
-tools/dist
-tools/esptool
-tools/esptool.exe
-tools/mkspiffs/mkspiffs
-tools/mkspiffs/mkspiffs.exe
+tools/
+.vale/
+docs/
+tests/
+
 .DS_Store
- 
 #Ignore files built by Visual Studio/Visual Micro
 [Dd]ebug*/
 [Rr]elease*/
diff --git a/LIBRARIES_TEST.md b/LIBRARIES_TEST.md
new file mode 100644
index 00000000000..65f068ee50d
--- /dev/null
+++ b/LIBRARIES_TEST.md
@@ -0,0 +1,18 @@
+### External libraries build test
+
+Library|ESP32|ESP32C3|ESP32C6|ESP32H2|ESP32P4|ESP32S2|ESP32S3
+-|:-:|:-:|:-:|:-:|:-:|:-:|:-:
+Adafruit NeoPixel|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: 
+ArduinoBLE|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :x: |N/A|1 :white_check_mark: 
+ESP32Servo|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: 
+ESPAsyncWebServer|32 :white_check_mark: |32 :white_check_mark: |32 :white_check_mark: |32 :white_check_mark: |32 :white_check_mark: |32 :white_check_mark: |32 :white_check_mark: 
+EthernetESP32|2 :warning: |2 :white_check_mark: |2 :white_check_mark: |2 :white_check_mark: |2 :x: |2 :white_check_mark: |2 :white_check_mark: 
+FastLED|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :warning: |1 :warning: |1 :white_check_mark: |1 :warning: 
+IRremote|1 :warning: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :warning: |1 :white_check_mark: |1 :white_check_mark: 
+MFRC522|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: 
+WS2812FX|1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: |1 :white_check_mark: 
+ZACwire for TSic|2 :warning: |2 :warning: |2 :warning: |2 :warning: |2 :warning: |2 :warning: |2 :warning: 
+
+
+Generated on: May-11-2025 04:38:10
+/ [GitHub Action Link](https://github.com/espressif/arduino-esp32/actions/runs/14952088361)
diff --git a/SIZES_TEST.md b/SIZES_TEST.md
new file mode 100644
index 00000000000..f9c8d3369aa
--- /dev/null
+++ b/SIZES_TEST.md
@@ -0,0 +1,238 @@
+### Memory usage test
+
+The table below shows the summary of memory usage change (decrease - increase) in bytes and percentage for each target.
+
+<table>
+<tr><th nowrap>Memory</th><th colspan='2' align='center' nowrap>FLASH [bytes]</th><th colspan='2' align='center' nowrap>FLASH [%]</th><th colspan='2' align='center' nowrap>RAM [bytes]</th><th colspan='2' align='center' nowrap>RAM [%]</th></tr>
+<tr><td nowrap>Target</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td></tr>
+<tr><td nowrap>ESP32S3</td><td align='center' nowrap>:green_heart: -3K</td><td align='center' nowrap>:bangbang: +209K</td><td align='center' nowrap>:green_heart: -0.89</td><td align='center' nowrap>:bangbang: +32.03</td><td align='center' nowrap>:green_heart: -7K</td><td align='center' nowrap>0</td><td align='center' nowrap>:green_heart: -26.12</td><td align='center' nowrap>0.00</td></tr>
+<tr><td nowrap>ESP32S2</td><td align='center' nowrap>:green_heart: -431K</td><td align='center' nowrap>:bangbang: +207K</td><td align='center' nowrap>:green_heart: -31.46</td><td align='center' nowrap>:bangbang: +32.70</td><td align='center' nowrap>:green_heart: -15K</td><td align='center' nowrap>0</td><td align='center' nowrap>:green_heart: -41.42</td><td align='center' nowrap>0.00</td></tr>
+<tr><td nowrap>ESP32C3</td><td align='center' nowrap>:green_heart: -11K</td><td align='center' nowrap>:bangbang: +221K</td><td align='center' nowrap>:green_heart: -4.35</td><td align='center' nowrap>:bangbang: +32.70</td><td align='center' nowrap>:green_heart: -7K</td><td align='center' nowrap>0</td><td align='center' nowrap>:green_heart: -34.51</td><td align='center' nowrap>0.00</td></tr>
+<tr><td nowrap>ESP32C6</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
+<tr><td nowrap>ESP32H2</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
+<tr><td nowrap>ESP32</td><td align='center' nowrap>:green_heart: -474K</td><td align='center' nowrap>:bangbang: +200K</td><td align='center' nowrap>:green_heart: -36.63</td><td align='center' nowrap>:bangbang: +28.22</td><td align='center' nowrap>:green_heart: -22K</td><td align='center' nowrap>0</td><td align='center' nowrap>:green_heart: -51.17</td><td align='center' nowrap>0.00</td></tr>
+</table>
+
+<details>
+<summary>Click to expand the detailed deltas report [usage change in BYTES]</summary>
+
+<table>
+<tr><th nowrap>Target</th><th colspan='2' align='center' nowrap>ESP32S3</th><th colspan='2' align='center' nowrap>ESP32S2</th><th colspan='2' align='center' nowrap>ESP32C3</th><th colspan='2' align='center' nowrap>ESP32C6</th><th colspan='2' align='center' nowrap>ESP32H2</th><th colspan='2' align='center' nowrap>ESP32</th></tr>
+<tr><td nowrap>Example</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td></tr>
+<tr><td nowrap>ArduinoOTA/examples/BasicOTA</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +194K</td><td nowrap>:green_heart: -5K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +154K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>AsyncUDP/examples/AsyncUDPClient</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>AsyncUDP/examples/AsyncUDPMulticastServer</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>AsyncUDP/examples/AsyncUDPServer</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>BLE/examples/BLE5_extended_scan</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -1704</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/BLE5_multi_advertising</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -1674</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/BLE5_periodic_advertising</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -1722</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/BLE5_periodic_sync</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -1722</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Beacon_Scanner</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Client</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/EddystoneTLM_Beacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/EddystoneURL_Beacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Notify</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Scan</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Server</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Server_multiconnect</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/UART</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/Write</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BLE/examples/iBeacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>DNSServer/examples/CaptivePortal</td><td nowrap>:bangbang: +209K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +207K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +221K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +200K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>EEPROM/examples/eeprom_class</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:green_heart: -11K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>EEPROM/examples/eeprom_extra</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +5K</td><td nowrap>:green_heart: -4K</td><td nowrap>:green_heart: -11K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>EEPROM/examples/eeprom_write</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogOut/LEDCFade</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogOut/LEDCSoftwareFade</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +31K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +14K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogOut/SigmaDelta</td><td nowrap>:bangbang: +23K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +33K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +14K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogOut/ledcFrequency</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +18K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +13K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogOut/ledcWrite_RGB</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1344</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogRead</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/AnalogReadContinuous</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/ArduinoStackSize</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1232</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/CI/CIBoardsTest</td><td nowrap>:bangbang: +23K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +33K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +1548</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Camera/CameraWebServer</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -6K</td><td nowrap>:green_heart: -431K</td><td nowrap>:green_heart: -15K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -474K</td><td nowrap>:green_heart: -14K</td></tr>
+<tr><td nowrap>ESP32/examples/ChipID/GetChipID</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -712</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/DeepSleep/ExternalWakeUp</td><td nowrap>:warning: +320</td><td nowrap>:green_heart: -5K</td><td nowrap>:green_heart: -8K</td><td nowrap>:green_heart: -7K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -12K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>ESP32/examples/DeepSleep/TimerWakeUp</td><td nowrap>:warning: +308</td><td nowrap>:green_heart: -5K</td><td nowrap>:green_heart: -8K</td><td nowrap>:green_heart: -7K</td><td nowrap>:green_heart: -5K</td><td nowrap>:green_heart: -5K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -12K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>ESP32/examples/DeepSleep/TouchWakeUp</td><td nowrap>:bangbang: +2K</td><td nowrap>:green_heart: -5K</td><td nowrap>:green_heart: -6K</td><td nowrap>:green_heart: -7K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -13K</td><td nowrap>:green_heart: -6K</td></tr>
+<tr><td nowrap>ESP32/examples/FreeRTOS/BasicMultiThreading</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +18K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +18K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -836</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/FreeRTOS/Mutex</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1246</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/FreeRTOS/Queue</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1228</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/FreeRTOS/Semaphore</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1240</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/GPIO/BlinkRGB</td><td nowrap>:bangbang: +29K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +38K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +19K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +15K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/GPIO/FunctionalInterrupt</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/GPIO/FunctionalInterruptStruct</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/GPIO/GPIOInterrupt</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/HWCDC_Events</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +11K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/MacAddress/GetMacAddress</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMTCallback</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -3K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -3K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMTLoopback</td><td nowrap>:bangbang: +18K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +15K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +11K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMTReadXJT</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -3K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -3K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMTWriteNeoPixel</td><td nowrap>:bangbang: +19K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMT_CPUFreq_Test</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMT_EndOfTransmissionState</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/RMT/RMT_LED_Blink</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/ResetReason/ResetReason</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/ResetReason/ResetReason2</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/BaudRateDetect_Demo</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/OnReceiveError_BREAK_Demo</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1280</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/OnReceive_Demo</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1258</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/RS485_Echo_Demo</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/RxFIFOFull_Demo</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1298</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/RxTimeout_Demo</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1258</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/Serial_All_CPU_Freqs</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1176</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/Serial_STD_Func_OnReceive</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1252</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Serial/onReceiveExample</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/TWAI/TWAIreceive</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1830</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/TWAI/TWAItransmit</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1802</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Template/ExampleTemplate</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +32K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +15K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Time/SimpleTime</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +146K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>ESP32/examples/Timer/RepeatTimer</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +22K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Timer/WatchdogTimer</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +22K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>ESP32/examples/Touch/TouchButtonV2</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Touch/TouchInterrupt</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -4K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>ESP32/examples/Touch/TouchRead</td><td nowrap>:bangbang: +9K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +22K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>ESP32/examples/Utilities/HEXBuilder</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Utilities/MD5Builder</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP32/examples/Utilities/SHA1Builder</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_I2S/examples/ES8388_loopback</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_I2S/examples/Record_to_WAV</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_I2S/examples/Simple_tone</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Broadcast_Master</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Broadcast_Slave</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Network</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Serial</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESP_SR/examples/Basic</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>ESPmDNS/examples/mDNS-SD_Extended</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +163K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +182K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>ESPmDNS/examples/mDNS_Web_Server</td><td nowrap>:bangbang: +165K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +183K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Ethernet/examples/ETH_W5500_Arduino_SPI</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Ethernet/examples/ETH_W5500_IDF_SPI</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>FFat/examples/FFat_Test</td><td nowrap>:bangbang: +9K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -1848</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>FFat/examples/FFat_time</td><td nowrap>:bangbang: +162K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>HTTPClient/examples/Authorization</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +204K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPClient/examples/BasicHttpClient</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +204K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPClient/examples/BasicHttpsClient</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +204K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPClient/examples/HTTPClientEnterprise</td><td nowrap>:bangbang: +194K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +193K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +218K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPClient/examples/ReuseConnection</td><td nowrap>:bangbang: +181K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +204K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPClient/examples/StreamHttpClient</td><td nowrap>:bangbang: +181K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +204K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPUpdate/examples/httpUpdate</td><td nowrap>:bangbang: +167K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +188K</td><td nowrap>:green_heart: -5K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +143K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPUpdate/examples/httpUpdateSPIFFS</td><td nowrap>:bangbang: +167K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +188K</td><td nowrap>:green_heart: -5K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +143K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPUpdate/examples/httpUpdateSecure</td><td nowrap>:bangbang: +193K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +190K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +213K</td><td nowrap>:green_heart: -5K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +166K</td><td nowrap>:green_heart: -2K</td></tr>
+<tr><td nowrap>HTTPUpdateServer/examples/WebUpdater</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +194K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +154K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Insights/examples/DiagnosticsSmokeTest</td><td nowrap>:bangbang: +121K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +120K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +136K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +105K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Insights/examples/MinimalDiagnostics</td><td nowrap>:bangbang: +121K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +120K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +136K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +105K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>LittleFS/examples/LITTLEFS_test</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +1238</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>LittleFS/examples/LITTLEFS_time</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>NetBIOS/examples/ESP_NBNST</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +174K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientInsecure</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientPSK</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecure</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecureEnterprise</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientShowPeerCredentials</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>NetworkClientSecure/examples/WiFiClientTrustOnFirstUse</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>PPP/examples/PPP_Basic</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Preferences/examples/Prefs2Struct</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +5K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>Preferences/examples/StartCounter</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +5K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +2K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>RainMaker/examples/RMakerCustom</td><td nowrap>:bangbang: +150K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +141K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +173K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +111K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>RainMaker/examples/RMakerCustomAirCooler</td><td nowrap>:bangbang: +149K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +141K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +111K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>RainMaker/examples/RMakerSonoffDualR3</td><td nowrap>:bangbang: +150K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +142K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +173K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +112K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>RainMaker/examples/RMakerSwitch</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +142K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +112K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>SD/examples/SD_Test</td><td nowrap>:bangbang: +21K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +14K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2040</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>SD/examples/SD_time</td><td nowrap>:bangbang: +171K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +168K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +187K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>SD_MMC/examples/SDMMC_Test</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -14K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>SD_MMC/examples/SDMMC_time</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +136K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>SPI/examples/SPI_Multiple_Buses</td><td nowrap>:bangbang: +27K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +36K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +10K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>SPIFFS/examples/SPIFFS_Test</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +6K</td><td nowrap>:green_heart: -4K</td><td nowrap>:warning: +756</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>SPIFFS/examples/SPIFFS_time</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +146K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>SimpleBLE/examples/SimpleBleDevice</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -9K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>TFLiteMicro/examples/hello_world</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Ticker/examples/Blinker</td><td nowrap>:bangbang: +28K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +37K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>Ticker/examples/TickerBasic</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Ticker/examples/TickerParameter</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/CompositeDevice</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +14K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/ConsumerControl</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/CustomHIDDevice</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/FirmwareMSC</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Gamepad</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/HIDVendor</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Keyboard/KeyboardLogout</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Keyboard/KeyboardMessage</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Keyboard/KeyboardReprogram</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Keyboard/KeyboardSerial</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +10K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/KeyboardAndMouseControl</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/MIDI/MidiController</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/MIDI/MidiInterface</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/MIDI/MidiMusicBox</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/MIDI/ReceiveMidi</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/Mouse/ButtonMouseControl</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/SystemControl</td><td nowrap>:bangbang: +30K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/USBMSC</td><td nowrap>:bangbang: +20K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/USBSerial</td><td nowrap>:bangbang: +23K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +10K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>USB/examples/USBVendor</td><td nowrap>:bangbang: +24K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Update/examples/AWS_S3_OTA_Update</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +169K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +186K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +150K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Update/examples/HTTPS_OTA_Update</td><td nowrap>:bangbang: +126K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +125K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +141K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +109K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Update/examples/HTTP_Client_AES_OTA_Update</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Update/examples/HTTP_Server_AES_OTA_Update</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Update/examples/OTAWebUpdater</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>Update/examples/SD_Update</td><td nowrap>:bangbang: +25K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +18K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +100</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>WebServer/examples/AdvancedWebServer</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +152K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/FSBrowser</td><td nowrap>:bangbang: +166K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +164K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/HelloServer</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +152K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/HttpAdvancedAuth</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +193K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +155K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/HttpAuthCallback</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WebServer/examples/HttpAuthCallbackInline</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WebServer/examples/HttpBasicAuth</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +193K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +155K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/HttpBasicAuthSHA1</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WebServer/examples/HttpBasicAuthSHA1orBearerToken</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WebServer/examples/MultiHomedServers</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +180K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +152K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/PathArgServer</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +174K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +166K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +149K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/SDWebServer</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +174K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +184K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +152K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/SimpleAuthentification</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +166K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/UploadHugeFile</td><td nowrap>:bangbang: +183K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +179K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +146K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WebServer/examples/WebServer</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WebServer/examples/WebUpdate</td><td nowrap>:bangbang: +178K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +193K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +154K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/FTM/FTM_Initiator</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/FTM/FTM_Responder</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/SimpleWiFiServer</td><td nowrap>:bangbang: +170K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +167K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +186K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WPS</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +175K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiAccessPoint</td><td nowrap>:bangbang: +170K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +167K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +186K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiBlueToothSwitch</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +120K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClient</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClientBasic</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +149K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClientConnect</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +178K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClientEnterprise</td><td nowrap>:bangbang: +124K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +124K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +139K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +109K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClientEvents</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +158K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +147K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiClientStaticIP</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiIPv6</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiMulti</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiMultiAdvanced</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiScan</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiScanAsync</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiScanDualAntenna</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +176K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiSmartConfig</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -7K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +41K</td><td nowrap>:green_heart: -7K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiTelnetToSerial</td><td nowrap>:bangbang: +161K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +178K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFi/examples/WiFiUDPClient</td><td nowrap>:bangbang: +160K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +159K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +148K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>WiFiProv/examples/WiFiProv</td><td nowrap>:bangbang: +177K</td><td nowrap>:green_heart: -6K</td><td nowrap>:bangbang: +172K</td><td nowrap>:green_heart: -5K</td><td nowrap>:bangbang: +198K</td><td nowrap>:green_heart: -6K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +151K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>Wire/examples/WireMaster</td><td nowrap>:bangbang: +11K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +9K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +5K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +888</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>Wire/examples/WireScan</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +11K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +7K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +2K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>Wire/examples/WireSlave</td><td nowrap>:bangbang: +17K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +16K</td><td nowrap>:green_heart: -4K</td><td nowrap>:bangbang: +12K</td><td nowrap>:green_heart: -4K</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +8K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/DiscoverConnect</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -9K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/GetLocalMAC</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -10K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -10K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBTM</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -10K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT_Legacy</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT_SSP</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/bt_classic_device_discovery</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -10K</td><td nowrap>:green_heart: -4K</td></tr>
+<tr><td nowrap>BluetoothSerial/examples/bt_remove_paired_devices</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:bangbang: +15K</td><td nowrap>:green_heart: -3K</td></tr>
+<tr><td nowrap>ESP32/examples/DeepSleep/SmoothBlink_ULP_Code</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -12K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>ESP32/examples/Touch/TouchButton</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -3K</td><td nowrap>:green_heart: -5K</td></tr>
+<tr><td nowrap>Ethernet/examples/ETH_LAN8720</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -279K</td><td nowrap>:green_heart: -22K</td></tr>
+<tr><td nowrap>Ethernet/examples/ETH_TLK110</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:green_heart: -279K</td><td nowrap>:green_heart: -22K</td></tr>
+</table>
+
+</details>
+
+Generated on: Jun-03-2024 07:45:39
+/ [GitHub Action Link](https://github.com/espressif/arduino-esp32/actions/runs/9346243271)
diff --git a/c6-hosted/bootloader.bin b/c6-hosted/bootloader.bin
new file mode 100644
index 00000000000..829737ba722
Binary files /dev/null and b/c6-hosted/bootloader.bin differ
diff --git a/c6-hosted/esp-logo.e558125a.png b/c6-hosted/esp-logo.e558125a.png
new file mode 100644
index 00000000000..e4cb4387d26
Binary files /dev/null and b/c6-hosted/esp-logo.e558125a.png differ
diff --git a/c6-hosted/favicon.ee2246ac.ico b/c6-hosted/favicon.ee2246ac.ico
new file mode 100644
index 00000000000..520ef4b6ce6
Binary files /dev/null and b/c6-hosted/favicon.ee2246ac.ico differ
diff --git a/c6-hosted/flash.sh b/c6-hosted/flash.sh
new file mode 100755
index 00000000000..c114f5a3437
--- /dev/null
+++ b/c6-hosted/flash.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+if [ "$#" -eq 1 ]; then
+	esptool.py --port $1 --chip esp32c6 -b 2000000 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m 0x0 ./bootloader.bin 0x8000 ./partition-table.bin 0xd000 ./ota_data_initial.bin 0x10000 ./network_adapter.bin
+else
+    echo "Error: You must pass the port as argument."
+    exit 1
+fi
diff --git a/c6-hosted/index.82fa246c.js b/c6-hosted/index.82fa246c.js
new file mode 100644
index 00000000000..8371ed14410
--- /dev/null
+++ b/c6-hosted/index.82fa246c.js
@@ -0,0 +1,3692 @@
+class $ec3de3bad43fb783$var$A extends Error {
+}
+/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ function $ec3de3bad43fb783$var$t(A) {
+    let t = A.length;
+    for(; --t >= 0;)A[t] = 0;
+}
+const $ec3de3bad43fb783$var$e = 256, $ec3de3bad43fb783$var$i = 286, $ec3de3bad43fb783$var$s = 30, $ec3de3bad43fb783$var$a = 15, $ec3de3bad43fb783$var$n = new Uint8Array([
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    1,
+    1,
+    1,
+    1,
+    2,
+    2,
+    2,
+    2,
+    3,
+    3,
+    3,
+    3,
+    4,
+    4,
+    4,
+    4,
+    5,
+    5,
+    5,
+    5,
+    0
+]), $ec3de3bad43fb783$var$E = new Uint8Array([
+    0,
+    0,
+    0,
+    0,
+    1,
+    1,
+    2,
+    2,
+    3,
+    3,
+    4,
+    4,
+    5,
+    5,
+    6,
+    6,
+    7,
+    7,
+    8,
+    8,
+    9,
+    9,
+    10,
+    10,
+    11,
+    11,
+    12,
+    12,
+    13,
+    13
+]), $ec3de3bad43fb783$var$h = new Uint8Array([
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    2,
+    3,
+    7
+]), $ec3de3bad43fb783$var$r = new Uint8Array([
+    16,
+    17,
+    18,
+    0,
+    8,
+    7,
+    9,
+    6,
+    10,
+    5,
+    11,
+    4,
+    12,
+    3,
+    13,
+    2,
+    14,
+    1,
+    15
+]), $ec3de3bad43fb783$var$g = new Array(576);
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$g);
+const $ec3de3bad43fb783$var$o = new Array(60);
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$o);
+const $ec3de3bad43fb783$var$B = new Array(512);
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$B);
+const $ec3de3bad43fb783$var$w = new Array(256);
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$w);
+const $ec3de3bad43fb783$var$c = new Array(29);
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$c);
+const $ec3de3bad43fb783$var$C = new Array($ec3de3bad43fb783$var$s);
+function $ec3de3bad43fb783$var$I(A, t, e, i, s) {
+    this.static_tree = A, this.extra_bits = t, this.extra_base = e, this.elems = i, this.max_length = s, this.has_stree = A && A.length;
+}
+let $ec3de3bad43fb783$var$_, $ec3de3bad43fb783$var$l, $ec3de3bad43fb783$var$d;
+function $ec3de3bad43fb783$var$M(A, t) {
+    this.dyn_tree = A, this.max_code = 0, this.stat_desc = t;
+}
+$ec3de3bad43fb783$var$t($ec3de3bad43fb783$var$C);
+const $ec3de3bad43fb783$var$D = (A)=>A < 256 ? $ec3de3bad43fb783$var$B[A] : $ec3de3bad43fb783$var$B[256 + (A >>> 7)], $ec3de3bad43fb783$var$R = (A, t)=>{
+    A.pending_buf[A.pending++] = 255 & t, A.pending_buf[A.pending++] = t >>> 8 & 255;
+}, $ec3de3bad43fb783$var$S = (A, t, e)=>{
+    A.bi_valid > 16 - e ? (A.bi_buf |= t << A.bi_valid & 65535, $ec3de3bad43fb783$var$R(A, A.bi_buf), A.bi_buf = t >> 16 - A.bi_valid, A.bi_valid += e - 16) : (A.bi_buf |= t << A.bi_valid & 65535, A.bi_valid += e);
+}, $ec3de3bad43fb783$var$Q = (A, t, e)=>{
+    $ec3de3bad43fb783$var$S(A, e[2 * t], e[2 * t + 1]);
+}, $ec3de3bad43fb783$var$f = (A, t)=>{
+    let e = 0;
+    do e |= 1 & A, A >>>= 1, e <<= 1;
+    while (--t > 0);
+    return e >>> 1;
+}, $ec3de3bad43fb783$var$F = (A, t, e)=>{
+    const i = new Array(16);
+    let s, n, E = 0;
+    for(s = 1; s <= $ec3de3bad43fb783$var$a; s++)E = E + e[s - 1] << 1, i[s] = E;
+    for(n = 0; n <= t; n++){
+        let t = A[2 * n + 1];
+        0 !== t && (A[2 * n] = $ec3de3bad43fb783$var$f(i[t]++, t));
+    }
+}, $ec3de3bad43fb783$var$T = (A)=>{
+    let t;
+    for(t = 0; t < $ec3de3bad43fb783$var$i; t++)A.dyn_ltree[2 * t] = 0;
+    for(t = 0; t < $ec3de3bad43fb783$var$s; t++)A.dyn_dtree[2 * t] = 0;
+    for(t = 0; t < 19; t++)A.bl_tree[2 * t] = 0;
+    A.dyn_ltree[512] = 1, A.opt_len = A.static_len = 0, A.sym_next = A.matches = 0;
+}, $ec3de3bad43fb783$var$u = (A)=>{
+    A.bi_valid > 8 ? $ec3de3bad43fb783$var$R(A, A.bi_buf) : A.bi_valid > 0 && (A.pending_buf[A.pending++] = A.bi_buf), A.bi_buf = 0, A.bi_valid = 0;
+}, $ec3de3bad43fb783$var$p = (A, t, e, i)=>{
+    const s = 2 * t, a = 2 * e;
+    return A[s] < A[a] || A[s] === A[a] && i[t] <= i[e];
+}, $ec3de3bad43fb783$var$y = (A, t, e)=>{
+    const i = A.heap[e];
+    let s = e << 1;
+    for(; s <= A.heap_len && (s < A.heap_len && $ec3de3bad43fb783$var$p(t, A.heap[s + 1], A.heap[s], A.depth) && s++, !$ec3de3bad43fb783$var$p(t, i, A.heap[s], A.depth));)A.heap[e] = A.heap[s], e = s, s <<= 1;
+    A.heap[e] = i;
+}, $ec3de3bad43fb783$var$k = (A, t, i)=>{
+    let s, a, h, r, g = 0;
+    if (0 !== A.sym_next) do s = 255 & A.pending_buf[A.sym_buf + g++], s += (255 & A.pending_buf[A.sym_buf + g++]) << 8, a = A.pending_buf[A.sym_buf + g++], 0 === s ? $ec3de3bad43fb783$var$Q(A, a, t) : (h = $ec3de3bad43fb783$var$w[a], $ec3de3bad43fb783$var$Q(A, h + $ec3de3bad43fb783$var$e + 1, t), r = $ec3de3bad43fb783$var$n[h], 0 !== r && (a -= $ec3de3bad43fb783$var$c[h], $ec3de3bad43fb783$var$S(A, a, r)), s--, h = $ec3de3bad43fb783$var$D(s), $ec3de3bad43fb783$var$Q(A, h, i), r = $ec3de3bad43fb783$var$E[h], 0 !== r && (s -= $ec3de3bad43fb783$var$C[h], $ec3de3bad43fb783$var$S(A, s, r)));
+    while (g < A.sym_next);
+    $ec3de3bad43fb783$var$Q(A, 256, t);
+}, $ec3de3bad43fb783$var$H = (A, t)=>{
+    const e = t.dyn_tree, i = t.stat_desc.static_tree, s = t.stat_desc.has_stree, n = t.stat_desc.elems;
+    let E, h, r, g = -1;
+    for(A.heap_len = 0, A.heap_max = 573, E = 0; E < n; E++)0 !== e[2 * E] ? (A.heap[++A.heap_len] = g = E, A.depth[E] = 0) : e[2 * E + 1] = 0;
+    for(; A.heap_len < 2;)r = A.heap[++A.heap_len] = g < 2 ? ++g : 0, e[2 * r] = 1, A.depth[r] = 0, A.opt_len--, s && (A.static_len -= i[2 * r + 1]);
+    for(t.max_code = g, E = A.heap_len >> 1; E >= 1; E--)$ec3de3bad43fb783$var$y(A, e, E);
+    r = n;
+    do E = A.heap[1], A.heap[1] = A.heap[A.heap_len--], $ec3de3bad43fb783$var$y(A, e, 1), h = A.heap[1], A.heap[--A.heap_max] = E, A.heap[--A.heap_max] = h, e[2 * r] = e[2 * E] + e[2 * h], A.depth[r] = (A.depth[E] >= A.depth[h] ? A.depth[E] : A.depth[h]) + 1, e[2 * E + 1] = e[2 * h + 1] = r, A.heap[1] = r++, $ec3de3bad43fb783$var$y(A, e, 1);
+    while (A.heap_len >= 2);
+    A.heap[--A.heap_max] = A.heap[1], ((A, t)=>{
+        const e = t.dyn_tree, i = t.max_code, s = t.stat_desc.static_tree, n = t.stat_desc.has_stree, E = t.stat_desc.extra_bits, h = t.stat_desc.extra_base, r = t.stat_desc.max_length;
+        let g, o, B, w, c, C, I = 0;
+        for(w = 0; w <= $ec3de3bad43fb783$var$a; w++)A.bl_count[w] = 0;
+        for(e[2 * A.heap[A.heap_max] + 1] = 0, g = A.heap_max + 1; g < 573; g++)o = A.heap[g], w = e[2 * e[2 * o + 1] + 1] + 1, w > r && (w = r, I++), e[2 * o + 1] = w, o > i || (A.bl_count[w]++, c = 0, o >= h && (c = E[o - h]), C = e[2 * o], A.opt_len += C * (w + c), n && (A.static_len += C * (s[2 * o + 1] + c)));
+        if (0 !== I) {
+            do {
+                for(w = r - 1; 0 === A.bl_count[w];)w--;
+                A.bl_count[w]--, A.bl_count[w + 1] += 2, A.bl_count[r]--, I -= 2;
+            }while (I > 0);
+            for(w = r; 0 !== w; w--)for(o = A.bl_count[w]; 0 !== o;)B = A.heap[--g], B > i || (e[2 * B + 1] !== w && (A.opt_len += (w - e[2 * B + 1]) * e[2 * B], e[2 * B + 1] = w), o--);
+        }
+    })(A, t), $ec3de3bad43fb783$var$F(e, g, A.bl_count);
+}, $ec3de3bad43fb783$var$P = (A, t, e)=>{
+    let i, s, a = -1, n = t[1], E = 0, h = 7, r = 4;
+    for(0 === n && (h = 138, r = 3), t[2 * (e + 1) + 1] = 65535, i = 0; i <= e; i++)s = n, n = t[2 * (i + 1) + 1], ++E < h && s === n || (E < r ? A.bl_tree[2 * s] += E : 0 !== s ? (s !== a && A.bl_tree[2 * s]++, A.bl_tree[32]++) : E <= 10 ? A.bl_tree[34]++ : A.bl_tree[36]++, E = 0, a = s, 0 === n ? (h = 138, r = 3) : s === n ? (h = 6, r = 3) : (h = 7, r = 4));
+}, $ec3de3bad43fb783$var$O = (A, t, e)=>{
+    let i, s, a = -1, n = t[1], E = 0, h = 7, r = 4;
+    for(0 === n && (h = 138, r = 3), i = 0; i <= e; i++)if (s = n, n = t[2 * (i + 1) + 1], !(++E < h && s === n)) {
+        if (E < r) do $ec3de3bad43fb783$var$Q(A, s, A.bl_tree);
+        while (0 != --E);
+        else 0 !== s ? (s !== a && ($ec3de3bad43fb783$var$Q(A, s, A.bl_tree), E--), $ec3de3bad43fb783$var$Q(A, 16, A.bl_tree), $ec3de3bad43fb783$var$S(A, E - 3, 2)) : E <= 10 ? ($ec3de3bad43fb783$var$Q(A, 17, A.bl_tree), $ec3de3bad43fb783$var$S(A, E - 3, 3)) : ($ec3de3bad43fb783$var$Q(A, 18, A.bl_tree), $ec3de3bad43fb783$var$S(A, E - 11, 7));
+        E = 0, a = s, 0 === n ? (h = 138, r = 3) : s === n ? (h = 6, r = 3) : (h = 7, r = 4);
+    }
+};
+let $ec3de3bad43fb783$var$U = !1;
+const $ec3de3bad43fb783$var$G = (A, t, e, i)=>{
+    $ec3de3bad43fb783$var$S(A, 0 + (i ? 1 : 0), 3), $ec3de3bad43fb783$var$u(A), $ec3de3bad43fb783$var$R(A, e), $ec3de3bad43fb783$var$R(A, ~e), e && A.pending_buf.set(A.window.subarray(t, t + e), A.pending), A.pending += e;
+};
+var $ec3de3bad43fb783$var$m = (A, t, i, s)=>{
+    let a, n, E = 0;
+    A.level > 0 ? (2 === A.strm.data_type && (A.strm.data_type = ((A)=>{
+        let t, i = 4093624447;
+        for(t = 0; t <= 31; t++, i >>>= 1)if (1 & i && 0 !== A.dyn_ltree[2 * t]) return 0;
+        if (0 !== A.dyn_ltree[18] || 0 !== A.dyn_ltree[20] || 0 !== A.dyn_ltree[26]) return 1;
+        for(t = 32; t < $ec3de3bad43fb783$var$e; t++)if (0 !== A.dyn_ltree[2 * t]) return 1;
+        return 0;
+    })(A)), $ec3de3bad43fb783$var$H(A, A.l_desc), $ec3de3bad43fb783$var$H(A, A.d_desc), E = ((A)=>{
+        let t;
+        for($ec3de3bad43fb783$var$P(A, A.dyn_ltree, A.l_desc.max_code), $ec3de3bad43fb783$var$P(A, A.dyn_dtree, A.d_desc.max_code), $ec3de3bad43fb783$var$H(A, A.bl_desc), t = 18; t >= 3 && 0 === A.bl_tree[2 * $ec3de3bad43fb783$var$r[t] + 1]; t--);
+        return A.opt_len += 3 * (t + 1) + 5 + 5 + 4, t;
+    })(A), a = A.opt_len + 3 + 7 >>> 3, n = A.static_len + 3 + 7 >>> 3, n <= a && (a = n)) : a = n = i + 5, i + 4 <= a && -1 !== t ? $ec3de3bad43fb783$var$G(A, t, i, s) : 4 === A.strategy || n === a ? ($ec3de3bad43fb783$var$S(A, 2 + (s ? 1 : 0), 3), $ec3de3bad43fb783$var$k(A, $ec3de3bad43fb783$var$g, $ec3de3bad43fb783$var$o)) : ($ec3de3bad43fb783$var$S(A, 4 + (s ? 1 : 0), 3), ((A, t, e, i)=>{
+        let s;
+        for($ec3de3bad43fb783$var$S(A, t - 257, 5), $ec3de3bad43fb783$var$S(A, e - 1, 5), $ec3de3bad43fb783$var$S(A, i - 4, 4), s = 0; s < i; s++)$ec3de3bad43fb783$var$S(A, A.bl_tree[2 * $ec3de3bad43fb783$var$r[s] + 1], 3);
+        $ec3de3bad43fb783$var$O(A, A.dyn_ltree, t - 1), $ec3de3bad43fb783$var$O(A, A.dyn_dtree, e - 1);
+    })(A, A.l_desc.max_code + 1, A.d_desc.max_code + 1, E + 1), $ec3de3bad43fb783$var$k(A, A.dyn_ltree, A.dyn_dtree)), $ec3de3bad43fb783$var$T(A), s && $ec3de3bad43fb783$var$u(A);
+}, $ec3de3bad43fb783$var$Y = {
+    _tr_init: (A)=>{
+        $ec3de3bad43fb783$var$U || ((()=>{
+            let A, t, e, r, M;
+            const D = new Array(16);
+            for(e = 0, r = 0; r < 28; r++)for($ec3de3bad43fb783$var$c[r] = e, A = 0; A < 1 << $ec3de3bad43fb783$var$n[r]; A++)$ec3de3bad43fb783$var$w[e++] = r;
+            for($ec3de3bad43fb783$var$w[e - 1] = r, M = 0, r = 0; r < 16; r++)for($ec3de3bad43fb783$var$C[r] = M, A = 0; A < 1 << $ec3de3bad43fb783$var$E[r]; A++)$ec3de3bad43fb783$var$B[M++] = r;
+            for(M >>= 7; r < $ec3de3bad43fb783$var$s; r++)for($ec3de3bad43fb783$var$C[r] = M << 7, A = 0; A < 1 << $ec3de3bad43fb783$var$E[r] - 7; A++)$ec3de3bad43fb783$var$B[256 + M++] = r;
+            for(t = 0; t <= $ec3de3bad43fb783$var$a; t++)D[t] = 0;
+            for(A = 0; A <= 143;)$ec3de3bad43fb783$var$g[2 * A + 1] = 8, A++, D[8]++;
+            for(; A <= 255;)$ec3de3bad43fb783$var$g[2 * A + 1] = 9, A++, D[9]++;
+            for(; A <= 279;)$ec3de3bad43fb783$var$g[2 * A + 1] = 7, A++, D[7]++;
+            for(; A <= 287;)$ec3de3bad43fb783$var$g[2 * A + 1] = 8, A++, D[8]++;
+            for($ec3de3bad43fb783$var$F($ec3de3bad43fb783$var$g, 287, D), A = 0; A < $ec3de3bad43fb783$var$s; A++)$ec3de3bad43fb783$var$o[2 * A + 1] = 5, $ec3de3bad43fb783$var$o[2 * A] = $ec3de3bad43fb783$var$f(A, 5);
+            $ec3de3bad43fb783$var$_ = new $ec3de3bad43fb783$var$I($ec3de3bad43fb783$var$g, $ec3de3bad43fb783$var$n, 257, $ec3de3bad43fb783$var$i, $ec3de3bad43fb783$var$a), $ec3de3bad43fb783$var$l = new $ec3de3bad43fb783$var$I($ec3de3bad43fb783$var$o, $ec3de3bad43fb783$var$E, 0, $ec3de3bad43fb783$var$s, $ec3de3bad43fb783$var$a), $ec3de3bad43fb783$var$d = new $ec3de3bad43fb783$var$I(new Array(0), $ec3de3bad43fb783$var$h, 0, 19, 7);
+        })(), $ec3de3bad43fb783$var$U = !0), A.l_desc = new $ec3de3bad43fb783$var$M(A.dyn_ltree, $ec3de3bad43fb783$var$_), A.d_desc = new $ec3de3bad43fb783$var$M(A.dyn_dtree, $ec3de3bad43fb783$var$l), A.bl_desc = new $ec3de3bad43fb783$var$M(A.bl_tree, $ec3de3bad43fb783$var$d), A.bi_buf = 0, A.bi_valid = 0, $ec3de3bad43fb783$var$T(A);
+    },
+    _tr_stored_block: $ec3de3bad43fb783$var$G,
+    _tr_flush_block: $ec3de3bad43fb783$var$m,
+    _tr_tally: (A, t, i)=>(A.pending_buf[A.sym_buf + A.sym_next++] = t, A.pending_buf[A.sym_buf + A.sym_next++] = t >> 8, A.pending_buf[A.sym_buf + A.sym_next++] = i, 0 === t ? A.dyn_ltree[2 * i]++ : (A.matches++, t--, A.dyn_ltree[2 * ($ec3de3bad43fb783$var$w[i] + $ec3de3bad43fb783$var$e + 1)]++, A.dyn_dtree[2 * $ec3de3bad43fb783$var$D(t)]++), A.sym_next === A.sym_end),
+    _tr_align: (A)=>{
+        $ec3de3bad43fb783$var$S(A, 2, 3), $ec3de3bad43fb783$var$Q(A, 256, $ec3de3bad43fb783$var$g), ((A)=>{
+            16 === A.bi_valid ? ($ec3de3bad43fb783$var$R(A, A.bi_buf), A.bi_buf = 0, A.bi_valid = 0) : A.bi_valid >= 8 && (A.pending_buf[A.pending++] = 255 & A.bi_buf, A.bi_buf >>= 8, A.bi_valid -= 8);
+        })(A);
+    }
+};
+var $ec3de3bad43fb783$var$b = (A, t, e, i)=>{
+    let s = 65535 & A | 0, a = A >>> 16 & 65535 | 0, n = 0;
+    for(; 0 !== e;){
+        n = e > 2e3 ? 2e3 : e, e -= n;
+        do s = s + t[i++] | 0, a = a + s | 0;
+        while (--n);
+        s %= 65521, a %= 65521;
+    }
+    return s | a << 16 | 0;
+};
+const $ec3de3bad43fb783$var$K = new Uint32Array((()=>{
+    let A, t = [];
+    for(var e = 0; e < 256; e++){
+        A = e;
+        for(var i = 0; i < 8; i++)A = 1 & A ? 3988292384 ^ A >>> 1 : A >>> 1;
+        t[e] = A;
+    }
+    return t;
+})());
+var $ec3de3bad43fb783$var$x = (A, t, e, i)=>{
+    const s = $ec3de3bad43fb783$var$K, a = i + e;
+    A ^= -1;
+    for(let e = i; e < a; e++)A = A >>> 8 ^ s[255 & (A ^ t[e])];
+    return -1 ^ A;
+}, $ec3de3bad43fb783$var$L = {
+    2: "need dictionary",
+    1: "stream end",
+    0: "",
+    "-1": "file error",
+    "-2": "stream error",
+    "-3": "data error",
+    "-4": "insufficient memory",
+    "-5": "buffer error",
+    "-6": "incompatible version"
+}, $ec3de3bad43fb783$var$J = {
+    Z_NO_FLUSH: 0,
+    Z_PARTIAL_FLUSH: 1,
+    Z_SYNC_FLUSH: 2,
+    Z_FULL_FLUSH: 3,
+    Z_FINISH: 4,
+    Z_BLOCK: 5,
+    Z_TREES: 6,
+    Z_OK: 0,
+    Z_STREAM_END: 1,
+    Z_NEED_DICT: 2,
+    Z_ERRNO: -1,
+    Z_STREAM_ERROR: -2,
+    Z_DATA_ERROR: -3,
+    Z_MEM_ERROR: -4,
+    Z_BUF_ERROR: -5,
+    Z_NO_COMPRESSION: 0,
+    Z_BEST_SPEED: 1,
+    Z_BEST_COMPRESSION: 9,
+    Z_DEFAULT_COMPRESSION: -1,
+    Z_FILTERED: 1,
+    Z_HUFFMAN_ONLY: 2,
+    Z_RLE: 3,
+    Z_FIXED: 4,
+    Z_DEFAULT_STRATEGY: 0,
+    Z_BINARY: 0,
+    Z_TEXT: 1,
+    Z_UNKNOWN: 2,
+    Z_DEFLATED: 8
+};
+const { _tr_init: $ec3de3bad43fb783$var$z, _tr_stored_block: $ec3de3bad43fb783$var$N, _tr_flush_block: $ec3de3bad43fb783$var$v, _tr_tally: $ec3de3bad43fb783$var$j, _tr_align: $ec3de3bad43fb783$var$Z } = $ec3de3bad43fb783$var$Y, { Z_NO_FLUSH: $ec3de3bad43fb783$var$W, Z_PARTIAL_FLUSH: $ec3de3bad43fb783$var$X, Z_FULL_FLUSH: $ec3de3bad43fb783$var$q, Z_FINISH: $ec3de3bad43fb783$var$V, Z_BLOCK: $ec3de3bad43fb783$var$$, Z_OK: $ec3de3bad43fb783$var$AA, Z_STREAM_END: $ec3de3bad43fb783$var$tA, Z_STREAM_ERROR: $ec3de3bad43fb783$var$eA, Z_DATA_ERROR: $ec3de3bad43fb783$var$iA, Z_BUF_ERROR: $ec3de3bad43fb783$var$sA, Z_DEFAULT_COMPRESSION: $ec3de3bad43fb783$var$aA, Z_FILTERED: $ec3de3bad43fb783$var$nA, Z_HUFFMAN_ONLY: $ec3de3bad43fb783$var$EA, Z_RLE: $ec3de3bad43fb783$var$hA, Z_FIXED: $ec3de3bad43fb783$var$rA, Z_DEFAULT_STRATEGY: $ec3de3bad43fb783$var$gA, Z_UNKNOWN: $ec3de3bad43fb783$var$oA, Z_DEFLATED: $ec3de3bad43fb783$var$BA } = $ec3de3bad43fb783$var$J, $ec3de3bad43fb783$var$wA = 258, $ec3de3bad43fb783$var$cA = 262, $ec3de3bad43fb783$var$CA = 42, $ec3de3bad43fb783$var$IA = 113, $ec3de3bad43fb783$var$_A = 666, $ec3de3bad43fb783$var$lA = (A, t)=>(A.msg = $ec3de3bad43fb783$var$L[t], t), $ec3de3bad43fb783$var$dA = (A)=>2 * A - (A > 4 ? 9 : 0), $ec3de3bad43fb783$var$MA = (A)=>{
+    let t = A.length;
+    for(; --t >= 0;)A[t] = 0;
+}, $ec3de3bad43fb783$var$DA = (A)=>{
+    let t, e, i, s = A.w_size;
+    t = A.hash_size, i = t;
+    do e = A.head[--i], A.head[i] = e >= s ? e - s : 0;
+    while (--t);
+    t = s, i = t;
+    do e = A.prev[--i], A.prev[i] = e >= s ? e - s : 0;
+    while (--t);
+};
+let $ec3de3bad43fb783$var$RA = (A, t, e)=>(t << A.hash_shift ^ e) & A.hash_mask;
+const $ec3de3bad43fb783$var$SA = (A)=>{
+    const t = A.state;
+    let e = t.pending;
+    e > A.avail_out && (e = A.avail_out), 0 !== e && (A.output.set(t.pending_buf.subarray(t.pending_out, t.pending_out + e), A.next_out), A.next_out += e, t.pending_out += e, A.total_out += e, A.avail_out -= e, t.pending -= e, 0 === t.pending && (t.pending_out = 0));
+}, $ec3de3bad43fb783$var$QA = (A, t)=>{
+    $ec3de3bad43fb783$var$v(A, A.block_start >= 0 ? A.block_start : -1, A.strstart - A.block_start, t), A.block_start = A.strstart, $ec3de3bad43fb783$var$SA(A.strm);
+}, $ec3de3bad43fb783$var$fA = (A, t)=>{
+    A.pending_buf[A.pending++] = t;
+}, $ec3de3bad43fb783$var$FA = (A, t)=>{
+    A.pending_buf[A.pending++] = t >>> 8 & 255, A.pending_buf[A.pending++] = 255 & t;
+}, $ec3de3bad43fb783$var$TA = (A, t, e, i)=>{
+    let s = A.avail_in;
+    return s > i && (s = i), 0 === s ? 0 : (A.avail_in -= s, t.set(A.input.subarray(A.next_in, A.next_in + s), e), 1 === A.state.wrap ? A.adler = $ec3de3bad43fb783$var$b(A.adler, t, s, e) : 2 === A.state.wrap && (A.adler = $ec3de3bad43fb783$var$x(A.adler, t, s, e)), A.next_in += s, A.total_in += s, s);
+}, $ec3de3bad43fb783$var$uA = (A, t)=>{
+    let e, i, s = A.max_chain_length, a = A.strstart, n = A.prev_length, E = A.nice_match;
+    const h = A.strstart > A.w_size - $ec3de3bad43fb783$var$cA ? A.strstart - (A.w_size - $ec3de3bad43fb783$var$cA) : 0, r = A.window, g = A.w_mask, o = A.prev, B = A.strstart + $ec3de3bad43fb783$var$wA;
+    let w = r[a + n - 1], c = r[a + n];
+    A.prev_length >= A.good_match && (s >>= 2), E > A.lookahead && (E = A.lookahead);
+    do if (e = t, r[e + n] === c && r[e + n - 1] === w && r[e] === r[a] && r[++e] === r[a + 1]) {
+        a += 2, e++;
+        do ;
+        while (r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && r[++a] === r[++e] && a < B);
+        if (i = $ec3de3bad43fb783$var$wA - (B - a), a = B - $ec3de3bad43fb783$var$wA, i > n) {
+            if (A.match_start = t, n = i, i >= E) break;
+            w = r[a + n - 1], c = r[a + n];
+        }
+    }
+    while ((t = o[t & g]) > h && 0 != --s);
+    return n <= A.lookahead ? n : A.lookahead;
+}, $ec3de3bad43fb783$var$pA = (A)=>{
+    const t = A.w_size;
+    let e, i, s;
+    do {
+        if (i = A.window_size - A.lookahead - A.strstart, A.strstart >= t + (t - $ec3de3bad43fb783$var$cA) && (A.window.set(A.window.subarray(t, t + t - i), 0), A.match_start -= t, A.strstart -= t, A.block_start -= t, A.insert > A.strstart && (A.insert = A.strstart), $ec3de3bad43fb783$var$DA(A), i += t), 0 === A.strm.avail_in) break;
+        if (e = $ec3de3bad43fb783$var$TA(A.strm, A.window, A.strstart + A.lookahead, i), A.lookahead += e, A.lookahead + A.insert >= 3) for(s = A.strstart - A.insert, A.ins_h = A.window[s], A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[s + 1]); A.insert && (A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[s + 3 - 1]), A.prev[s & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = s, s++, A.insert--, !(A.lookahead + A.insert < 3)););
+    }while (A.lookahead < $ec3de3bad43fb783$var$cA && 0 !== A.strm.avail_in);
+}, $ec3de3bad43fb783$var$yA = (A, t)=>{
+    let e, i, s, a = A.pending_buf_size - 5 > A.w_size ? A.w_size : A.pending_buf_size - 5, n = 0, E = A.strm.avail_in;
+    do {
+        if (e = 65535, s = A.bi_valid + 42 >> 3, A.strm.avail_out < s) break;
+        if (s = A.strm.avail_out - s, i = A.strstart - A.block_start, e > i + A.strm.avail_in && (e = i + A.strm.avail_in), e > s && (e = s), e < a && (0 === e && t !== $ec3de3bad43fb783$var$V || t === $ec3de3bad43fb783$var$W || e !== i + A.strm.avail_in)) break;
+        n = t === $ec3de3bad43fb783$var$V && e === i + A.strm.avail_in ? 1 : 0, $ec3de3bad43fb783$var$N(A, 0, 0, n), A.pending_buf[A.pending - 4] = e, A.pending_buf[A.pending - 3] = e >> 8, A.pending_buf[A.pending - 2] = ~e, A.pending_buf[A.pending - 1] = ~e >> 8, $ec3de3bad43fb783$var$SA(A.strm), i && (i > e && (i = e), A.strm.output.set(A.window.subarray(A.block_start, A.block_start + i), A.strm.next_out), A.strm.next_out += i, A.strm.avail_out -= i, A.strm.total_out += i, A.block_start += i, e -= i), e && ($ec3de3bad43fb783$var$TA(A.strm, A.strm.output, A.strm.next_out, e), A.strm.next_out += e, A.strm.avail_out -= e, A.strm.total_out += e);
+    }while (0 === n);
+    return E -= A.strm.avail_in, E && (E >= A.w_size ? (A.matches = 2, A.window.set(A.strm.input.subarray(A.strm.next_in - A.w_size, A.strm.next_in), 0), A.strstart = A.w_size, A.insert = A.strstart) : (A.window_size - A.strstart <= E && (A.strstart -= A.w_size, A.window.set(A.window.subarray(A.w_size, A.w_size + A.strstart), 0), A.matches < 2 && A.matches++, A.insert > A.strstart && (A.insert = A.strstart)), A.window.set(A.strm.input.subarray(A.strm.next_in - E, A.strm.next_in), A.strstart), A.strstart += E, A.insert += E > A.w_size - A.insert ? A.w_size - A.insert : E), A.block_start = A.strstart), A.high_water < A.strstart && (A.high_water = A.strstart), n ? 4 : t !== $ec3de3bad43fb783$var$W && t !== $ec3de3bad43fb783$var$V && 0 === A.strm.avail_in && A.strstart === A.block_start ? 2 : (s = A.window_size - A.strstart, A.strm.avail_in > s && A.block_start >= A.w_size && (A.block_start -= A.w_size, A.strstart -= A.w_size, A.window.set(A.window.subarray(A.w_size, A.w_size + A.strstart), 0), A.matches < 2 && A.matches++, s += A.w_size, A.insert > A.strstart && (A.insert = A.strstart)), s > A.strm.avail_in && (s = A.strm.avail_in), s && ($ec3de3bad43fb783$var$TA(A.strm, A.window, A.strstart, s), A.strstart += s, A.insert += s > A.w_size - A.insert ? A.w_size - A.insert : s), A.high_water < A.strstart && (A.high_water = A.strstart), s = A.bi_valid + 42 >> 3, s = A.pending_buf_size - s > 65535 ? 65535 : A.pending_buf_size - s, a = s > A.w_size ? A.w_size : s, i = A.strstart - A.block_start, (i >= a || (i || t === $ec3de3bad43fb783$var$V) && t !== $ec3de3bad43fb783$var$W && 0 === A.strm.avail_in && i <= s) && (e = i > s ? s : i, n = t === $ec3de3bad43fb783$var$V && 0 === A.strm.avail_in && e === i ? 1 : 0, $ec3de3bad43fb783$var$N(A, A.block_start, e, n), A.block_start += e, $ec3de3bad43fb783$var$SA(A.strm)), n ? 3 : 1);
+}, $ec3de3bad43fb783$var$kA = (A, t)=>{
+    let e, i;
+    for(;;){
+        if (A.lookahead < $ec3de3bad43fb783$var$cA) {
+            if ($ec3de3bad43fb783$var$pA(A), A.lookahead < $ec3de3bad43fb783$var$cA && t === $ec3de3bad43fb783$var$W) return 1;
+            if (0 === A.lookahead) break;
+        }
+        if (e = 0, A.lookahead >= 3 && (A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[A.strstart + 3 - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart), 0 !== e && A.strstart - e <= A.w_size - $ec3de3bad43fb783$var$cA && (A.match_length = $ec3de3bad43fb783$var$uA(A, e)), A.match_length >= 3) {
+            if (i = $ec3de3bad43fb783$var$j(A, A.strstart - A.match_start, A.match_length - 3), A.lookahead -= A.match_length, A.match_length <= A.max_lazy_match && A.lookahead >= 3) {
+                A.match_length--;
+                do A.strstart++, A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[A.strstart + 3 - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart;
+                while (0 != --A.match_length);
+                A.strstart++;
+            } else A.strstart += A.match_length, A.match_length = 0, A.ins_h = A.window[A.strstart], A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[A.strstart + 1]);
+        } else i = $ec3de3bad43fb783$var$j(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++;
+        if (i && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out)) return 1;
+    }
+    return A.insert = A.strstart < 2 ? A.strstart : 2, t === $ec3de3bad43fb783$var$V ? ($ec3de3bad43fb783$var$QA(A, !0), 0 === A.strm.avail_out ? 3 : 4) : A.sym_next && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out) ? 1 : 2;
+}, $ec3de3bad43fb783$var$HA = (A, t)=>{
+    let e, i, s;
+    for(;;){
+        if (A.lookahead < $ec3de3bad43fb783$var$cA) {
+            if ($ec3de3bad43fb783$var$pA(A), A.lookahead < $ec3de3bad43fb783$var$cA && t === $ec3de3bad43fb783$var$W) return 1;
+            if (0 === A.lookahead) break;
+        }
+        if (e = 0, A.lookahead >= 3 && (A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[A.strstart + 3 - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart), A.prev_length = A.match_length, A.prev_match = A.match_start, A.match_length = 2, 0 !== e && A.prev_length < A.max_lazy_match && A.strstart - e <= A.w_size - $ec3de3bad43fb783$var$cA && (A.match_length = $ec3de3bad43fb783$var$uA(A, e), A.match_length <= 5 && (A.strategy === $ec3de3bad43fb783$var$nA || 3 === A.match_length && A.strstart - A.match_start > 4096) && (A.match_length = 2)), A.prev_length >= 3 && A.match_length <= A.prev_length) {
+            s = A.strstart + A.lookahead - 3, i = $ec3de3bad43fb783$var$j(A, A.strstart - 1 - A.prev_match, A.prev_length - 3), A.lookahead -= A.prev_length - 1, A.prev_length -= 2;
+            do ++A.strstart <= s && (A.ins_h = $ec3de3bad43fb783$var$RA(A, A.ins_h, A.window[A.strstart + 3 - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart);
+            while (0 != --A.prev_length);
+            if (A.match_available = 0, A.match_length = 2, A.strstart++, i && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out)) return 1;
+        } else if (A.match_available) {
+            if (i = $ec3de3bad43fb783$var$j(A, 0, A.window[A.strstart - 1]), i && $ec3de3bad43fb783$var$QA(A, !1), A.strstart++, A.lookahead--, 0 === A.strm.avail_out) return 1;
+        } else A.match_available = 1, A.strstart++, A.lookahead--;
+    }
+    return A.match_available && (i = $ec3de3bad43fb783$var$j(A, 0, A.window[A.strstart - 1]), A.match_available = 0), A.insert = A.strstart < 2 ? A.strstart : 2, t === $ec3de3bad43fb783$var$V ? ($ec3de3bad43fb783$var$QA(A, !0), 0 === A.strm.avail_out ? 3 : 4) : A.sym_next && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out) ? 1 : 2;
+};
+function $ec3de3bad43fb783$var$PA(A, t, e, i, s) {
+    this.good_length = A, this.max_lazy = t, this.nice_length = e, this.max_chain = i, this.func = s;
+}
+const $ec3de3bad43fb783$var$OA = [
+    new $ec3de3bad43fb783$var$PA(0, 0, 0, 0, $ec3de3bad43fb783$var$yA),
+    new $ec3de3bad43fb783$var$PA(4, 4, 8, 4, $ec3de3bad43fb783$var$kA),
+    new $ec3de3bad43fb783$var$PA(4, 5, 16, 8, $ec3de3bad43fb783$var$kA),
+    new $ec3de3bad43fb783$var$PA(4, 6, 32, 32, $ec3de3bad43fb783$var$kA),
+    new $ec3de3bad43fb783$var$PA(4, 4, 16, 16, $ec3de3bad43fb783$var$HA),
+    new $ec3de3bad43fb783$var$PA(8, 16, 32, 32, $ec3de3bad43fb783$var$HA),
+    new $ec3de3bad43fb783$var$PA(8, 16, 128, 128, $ec3de3bad43fb783$var$HA),
+    new $ec3de3bad43fb783$var$PA(8, 32, 128, 256, $ec3de3bad43fb783$var$HA),
+    new $ec3de3bad43fb783$var$PA(32, 128, 258, 1024, $ec3de3bad43fb783$var$HA),
+    new $ec3de3bad43fb783$var$PA(32, 258, 258, 4096, $ec3de3bad43fb783$var$HA)
+];
+function $ec3de3bad43fb783$var$UA() {
+    this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = $ec3de3bad43fb783$var$BA, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(1146), this.dyn_dtree = new Uint16Array(122), this.bl_tree = new Uint16Array(78), $ec3de3bad43fb783$var$MA(this.dyn_ltree), $ec3de3bad43fb783$var$MA(this.dyn_dtree), $ec3de3bad43fb783$var$MA(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(16), this.heap = new Uint16Array(573), $ec3de3bad43fb783$var$MA(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(573), $ec3de3bad43fb783$var$MA(this.depth), this.sym_buf = 0, this.lit_bufsize = 0, this.sym_next = 0, this.sym_end = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0;
+}
+const $ec3de3bad43fb783$var$GA = (A)=>{
+    if (!A) return 1;
+    const t = A.state;
+    return !t || t.strm !== A || t.status !== $ec3de3bad43fb783$var$CA && 57 !== t.status && 69 !== t.status && 73 !== t.status && 91 !== t.status && 103 !== t.status && t.status !== $ec3de3bad43fb783$var$IA && t.status !== $ec3de3bad43fb783$var$_A ? 1 : 0;
+}, $ec3de3bad43fb783$var$mA = (A)=>{
+    if ($ec3de3bad43fb783$var$GA(A)) return $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$eA);
+    A.total_in = A.total_out = 0, A.data_type = $ec3de3bad43fb783$var$oA;
+    const t = A.state;
+    return t.pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = 2 === t.wrap ? 57 : t.wrap ? $ec3de3bad43fb783$var$CA : $ec3de3bad43fb783$var$IA, A.adler = 2 === t.wrap ? 0 : 1, t.last_flush = -2, $ec3de3bad43fb783$var$z(t), $ec3de3bad43fb783$var$AA;
+}, $ec3de3bad43fb783$var$YA = (A)=>{
+    const t = $ec3de3bad43fb783$var$mA(A);
+    var e;
+    return t === $ec3de3bad43fb783$var$AA && ((e = A.state).window_size = 2 * e.w_size, $ec3de3bad43fb783$var$MA(e.head), e.max_lazy_match = $ec3de3bad43fb783$var$OA[e.level].max_lazy, e.good_match = $ec3de3bad43fb783$var$OA[e.level].good_length, e.nice_match = $ec3de3bad43fb783$var$OA[e.level].nice_length, e.max_chain_length = $ec3de3bad43fb783$var$OA[e.level].max_chain, e.strstart = 0, e.block_start = 0, e.lookahead = 0, e.insert = 0, e.match_length = e.prev_length = 2, e.match_available = 0, e.ins_h = 0), t;
+}, $ec3de3bad43fb783$var$bA = (A, t, e, i, s, a)=>{
+    if (!A) return $ec3de3bad43fb783$var$eA;
+    let n = 1;
+    if (t === $ec3de3bad43fb783$var$aA && (t = 6), i < 0 ? (n = 0, i = -i) : i > 15 && (n = 2, i -= 16), s < 1 || s > 9 || e !== $ec3de3bad43fb783$var$BA || i < 8 || i > 15 || t < 0 || t > 9 || a < 0 || a > $ec3de3bad43fb783$var$rA || 8 === i && 1 !== n) return $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$eA);
+    8 === i && (i = 9);
+    const E = new $ec3de3bad43fb783$var$UA;
+    return A.state = E, E.strm = A, E.status = $ec3de3bad43fb783$var$CA, E.wrap = n, E.gzhead = null, E.w_bits = i, E.w_size = 1 << E.w_bits, E.w_mask = E.w_size - 1, E.hash_bits = s + 7, E.hash_size = 1 << E.hash_bits, E.hash_mask = E.hash_size - 1, E.hash_shift = ~~((E.hash_bits + 3 - 1) / 3), E.window = new Uint8Array(2 * E.w_size), E.head = new Uint16Array(E.hash_size), E.prev = new Uint16Array(E.w_size), E.lit_bufsize = 1 << s + 6, E.pending_buf_size = 4 * E.lit_bufsize, E.pending_buf = new Uint8Array(E.pending_buf_size), E.sym_buf = E.lit_bufsize, E.sym_end = 3 * (E.lit_bufsize - 1), E.level = t, E.strategy = a, E.method = e, $ec3de3bad43fb783$var$YA(A);
+};
+var $ec3de3bad43fb783$var$KA = {
+    deflateInit: (A, t)=>$ec3de3bad43fb783$var$bA(A, t, $ec3de3bad43fb783$var$BA, 15, 8, $ec3de3bad43fb783$var$gA),
+    deflateInit2: $ec3de3bad43fb783$var$bA,
+    deflateReset: $ec3de3bad43fb783$var$YA,
+    deflateResetKeep: $ec3de3bad43fb783$var$mA,
+    deflateSetHeader: (A, t)=>$ec3de3bad43fb783$var$GA(A) || 2 !== A.state.wrap ? $ec3de3bad43fb783$var$eA : (A.state.gzhead = t, $ec3de3bad43fb783$var$AA),
+    deflate: (A, t)=>{
+        if ($ec3de3bad43fb783$var$GA(A) || t > $ec3de3bad43fb783$var$$ || t < 0) return A ? $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$eA) : $ec3de3bad43fb783$var$eA;
+        const e = A.state;
+        if (!A.output || 0 !== A.avail_in && !A.input || e.status === $ec3de3bad43fb783$var$_A && t !== $ec3de3bad43fb783$var$V) return $ec3de3bad43fb783$var$lA(A, 0 === A.avail_out ? $ec3de3bad43fb783$var$sA : $ec3de3bad43fb783$var$eA);
+        const i = e.last_flush;
+        if (e.last_flush = t, 0 !== e.pending) {
+            if ($ec3de3bad43fb783$var$SA(A), 0 === A.avail_out) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+        } else if (0 === A.avail_in && $ec3de3bad43fb783$var$dA(t) <= $ec3de3bad43fb783$var$dA(i) && t !== $ec3de3bad43fb783$var$V) return $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$sA);
+        if (e.status === $ec3de3bad43fb783$var$_A && 0 !== A.avail_in) return $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$sA);
+        if (e.status === $ec3de3bad43fb783$var$CA && 0 === e.wrap && (e.status = $ec3de3bad43fb783$var$IA), e.status === $ec3de3bad43fb783$var$CA) {
+            let t = $ec3de3bad43fb783$var$BA + (e.w_bits - 8 << 4) << 8, i = -1;
+            if (i = e.strategy >= $ec3de3bad43fb783$var$EA || e.level < 2 ? 0 : e.level < 6 ? 1 : 6 === e.level ? 2 : 3, t |= i << 6, 0 !== e.strstart && (t |= 32), t += 31 - t % 31, $ec3de3bad43fb783$var$FA(e, t), 0 !== e.strstart && ($ec3de3bad43fb783$var$FA(e, A.adler >>> 16), $ec3de3bad43fb783$var$FA(e, 65535 & A.adler)), A.adler = 1, e.status = $ec3de3bad43fb783$var$IA, $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+        }
+        if (57 === e.status) {
+            if (A.adler = 0, $ec3de3bad43fb783$var$fA(e, 31), $ec3de3bad43fb783$var$fA(e, 139), $ec3de3bad43fb783$var$fA(e, 8), e.gzhead) $ec3de3bad43fb783$var$fA(e, (e.gzhead.text ? 1 : 0) + (e.gzhead.hcrc ? 2 : 0) + (e.gzhead.extra ? 4 : 0) + (e.gzhead.name ? 8 : 0) + (e.gzhead.comment ? 16 : 0)), $ec3de3bad43fb783$var$fA(e, 255 & e.gzhead.time), $ec3de3bad43fb783$var$fA(e, e.gzhead.time >> 8 & 255), $ec3de3bad43fb783$var$fA(e, e.gzhead.time >> 16 & 255), $ec3de3bad43fb783$var$fA(e, e.gzhead.time >> 24 & 255), $ec3de3bad43fb783$var$fA(e, 9 === e.level ? 2 : e.strategy >= $ec3de3bad43fb783$var$EA || e.level < 2 ? 4 : 0), $ec3de3bad43fb783$var$fA(e, 255 & e.gzhead.os), e.gzhead.extra && e.gzhead.extra.length && ($ec3de3bad43fb783$var$fA(e, 255 & e.gzhead.extra.length), $ec3de3bad43fb783$var$fA(e, e.gzhead.extra.length >> 8 & 255)), e.gzhead.hcrc && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending, 0)), e.gzindex = 0, e.status = 69;
+            else if ($ec3de3bad43fb783$var$fA(e, 0), $ec3de3bad43fb783$var$fA(e, 0), $ec3de3bad43fb783$var$fA(e, 0), $ec3de3bad43fb783$var$fA(e, 0), $ec3de3bad43fb783$var$fA(e, 0), $ec3de3bad43fb783$var$fA(e, 9 === e.level ? 2 : e.strategy >= $ec3de3bad43fb783$var$EA || e.level < 2 ? 4 : 0), $ec3de3bad43fb783$var$fA(e, 3), e.status = $ec3de3bad43fb783$var$IA, $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+        }
+        if (69 === e.status) {
+            if (e.gzhead.extra) {
+                let t = e.pending, i = (65535 & e.gzhead.extra.length) - e.gzindex;
+                for(; e.pending + i > e.pending_buf_size;){
+                    let s = e.pending_buf_size - e.pending;
+                    if (e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex, e.gzindex + s), e.pending), e.pending = e.pending_buf_size, e.gzhead.hcrc && e.pending > t && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - t, t)), e.gzindex += s, $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+                    t = 0, i -= s;
+                }
+                let s = new Uint8Array(e.gzhead.extra);
+                e.pending_buf.set(s.subarray(e.gzindex, e.gzindex + i), e.pending), e.pending += i, e.gzhead.hcrc && e.pending > t && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - t, t)), e.gzindex = 0;
+            }
+            e.status = 73;
+        }
+        if (73 === e.status) {
+            if (e.gzhead.name) {
+                let t, i = e.pending;
+                do {
+                    if (e.pending === e.pending_buf_size) {
+                        if (e.gzhead.hcrc && e.pending > i && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - i, i)), $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+                        i = 0;
+                    }
+                    t = e.gzindex < e.gzhead.name.length ? 255 & e.gzhead.name.charCodeAt(e.gzindex++) : 0, $ec3de3bad43fb783$var$fA(e, t);
+                }while (0 !== t);
+                e.gzhead.hcrc && e.pending > i && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - i, i)), e.gzindex = 0;
+            }
+            e.status = 91;
+        }
+        if (91 === e.status) {
+            if (e.gzhead.comment) {
+                let t, i = e.pending;
+                do {
+                    if (e.pending === e.pending_buf_size) {
+                        if (e.gzhead.hcrc && e.pending > i && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - i, i)), $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+                        i = 0;
+                    }
+                    t = e.gzindex < e.gzhead.comment.length ? 255 & e.gzhead.comment.charCodeAt(e.gzindex++) : 0, $ec3de3bad43fb783$var$fA(e, t);
+                }while (0 !== t);
+                e.gzhead.hcrc && e.pending > i && (A.adler = $ec3de3bad43fb783$var$x(A.adler, e.pending_buf, e.pending - i, i));
+            }
+            e.status = 103;
+        }
+        if (103 === e.status) {
+            if (e.gzhead.hcrc) {
+                if (e.pending + 2 > e.pending_buf_size && ($ec3de3bad43fb783$var$SA(A), 0 !== e.pending)) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+                $ec3de3bad43fb783$var$fA(e, 255 & A.adler), $ec3de3bad43fb783$var$fA(e, A.adler >> 8 & 255), A.adler = 0;
+            }
+            if (e.status = $ec3de3bad43fb783$var$IA, $ec3de3bad43fb783$var$SA(A), 0 !== e.pending) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+        }
+        if (0 !== A.avail_in || 0 !== e.lookahead || t !== $ec3de3bad43fb783$var$W && e.status !== $ec3de3bad43fb783$var$_A) {
+            let i = 0 === e.level ? $ec3de3bad43fb783$var$yA(e, t) : e.strategy === $ec3de3bad43fb783$var$EA ? ((A, t)=>{
+                let e;
+                for(;;){
+                    if (0 === A.lookahead && ($ec3de3bad43fb783$var$pA(A), 0 === A.lookahead)) {
+                        if (t === $ec3de3bad43fb783$var$W) return 1;
+                        break;
+                    }
+                    if (A.match_length = 0, e = $ec3de3bad43fb783$var$j(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++, e && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out)) return 1;
+                }
+                return A.insert = 0, t === $ec3de3bad43fb783$var$V ? ($ec3de3bad43fb783$var$QA(A, !0), 0 === A.strm.avail_out ? 3 : 4) : A.sym_next && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out) ? 1 : 2;
+            })(e, t) : e.strategy === $ec3de3bad43fb783$var$hA ? ((A, t)=>{
+                let e, i, s, a;
+                const n = A.window;
+                for(;;){
+                    if (A.lookahead <= $ec3de3bad43fb783$var$wA) {
+                        if ($ec3de3bad43fb783$var$pA(A), A.lookahead <= $ec3de3bad43fb783$var$wA && t === $ec3de3bad43fb783$var$W) return 1;
+                        if (0 === A.lookahead) break;
+                    }
+                    if (A.match_length = 0, A.lookahead >= 3 && A.strstart > 0 && (s = A.strstart - 1, i = n[s], i === n[++s] && i === n[++s] && i === n[++s])) {
+                        a = A.strstart + $ec3de3bad43fb783$var$wA;
+                        do ;
+                        while (i === n[++s] && i === n[++s] && i === n[++s] && i === n[++s] && i === n[++s] && i === n[++s] && i === n[++s] && i === n[++s] && s < a);
+                        A.match_length = $ec3de3bad43fb783$var$wA - (a - s), A.match_length > A.lookahead && (A.match_length = A.lookahead);
+                    }
+                    if (A.match_length >= 3 ? (e = $ec3de3bad43fb783$var$j(A, 1, A.match_length - 3), A.lookahead -= A.match_length, A.strstart += A.match_length, A.match_length = 0) : (e = $ec3de3bad43fb783$var$j(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++), e && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out)) return 1;
+                }
+                return A.insert = 0, t === $ec3de3bad43fb783$var$V ? ($ec3de3bad43fb783$var$QA(A, !0), 0 === A.strm.avail_out ? 3 : 4) : A.sym_next && ($ec3de3bad43fb783$var$QA(A, !1), 0 === A.strm.avail_out) ? 1 : 2;
+            })(e, t) : $ec3de3bad43fb783$var$OA[e.level].func(e, t);
+            if (3 !== i && 4 !== i || (e.status = $ec3de3bad43fb783$var$_A), 1 === i || 3 === i) return 0 === A.avail_out && (e.last_flush = -1), $ec3de3bad43fb783$var$AA;
+            if (2 === i && (t === $ec3de3bad43fb783$var$X ? $ec3de3bad43fb783$var$Z(e) : t !== $ec3de3bad43fb783$var$$ && ($ec3de3bad43fb783$var$N(e, 0, 0, !1), t === $ec3de3bad43fb783$var$q && ($ec3de3bad43fb783$var$MA(e.head), 0 === e.lookahead && (e.strstart = 0, e.block_start = 0, e.insert = 0))), $ec3de3bad43fb783$var$SA(A), 0 === A.avail_out)) return e.last_flush = -1, $ec3de3bad43fb783$var$AA;
+        }
+        return t !== $ec3de3bad43fb783$var$V ? $ec3de3bad43fb783$var$AA : e.wrap <= 0 ? $ec3de3bad43fb783$var$tA : (2 === e.wrap ? ($ec3de3bad43fb783$var$fA(e, 255 & A.adler), $ec3de3bad43fb783$var$fA(e, A.adler >> 8 & 255), $ec3de3bad43fb783$var$fA(e, A.adler >> 16 & 255), $ec3de3bad43fb783$var$fA(e, A.adler >> 24 & 255), $ec3de3bad43fb783$var$fA(e, 255 & A.total_in), $ec3de3bad43fb783$var$fA(e, A.total_in >> 8 & 255), $ec3de3bad43fb783$var$fA(e, A.total_in >> 16 & 255), $ec3de3bad43fb783$var$fA(e, A.total_in >> 24 & 255)) : ($ec3de3bad43fb783$var$FA(e, A.adler >>> 16), $ec3de3bad43fb783$var$FA(e, 65535 & A.adler)), $ec3de3bad43fb783$var$SA(A), e.wrap > 0 && (e.wrap = -e.wrap), 0 !== e.pending ? $ec3de3bad43fb783$var$AA : $ec3de3bad43fb783$var$tA);
+    },
+    deflateEnd: (A)=>{
+        if ($ec3de3bad43fb783$var$GA(A)) return $ec3de3bad43fb783$var$eA;
+        const t = A.state.status;
+        return A.state = null, t === $ec3de3bad43fb783$var$IA ? $ec3de3bad43fb783$var$lA(A, $ec3de3bad43fb783$var$iA) : $ec3de3bad43fb783$var$AA;
+    },
+    deflateSetDictionary: (A, t)=>{
+        let e = t.length;
+        if ($ec3de3bad43fb783$var$GA(A)) return $ec3de3bad43fb783$var$eA;
+        const i = A.state, s = i.wrap;
+        if (2 === s || 1 === s && i.status !== $ec3de3bad43fb783$var$CA || i.lookahead) return $ec3de3bad43fb783$var$eA;
+        if (1 === s && (A.adler = $ec3de3bad43fb783$var$b(A.adler, t, e, 0)), i.wrap = 0, e >= i.w_size) {
+            0 === s && ($ec3de3bad43fb783$var$MA(i.head), i.strstart = 0, i.block_start = 0, i.insert = 0);
+            let A = new Uint8Array(i.w_size);
+            A.set(t.subarray(e - i.w_size, e), 0), t = A, e = i.w_size;
+        }
+        const a = A.avail_in, n = A.next_in, E = A.input;
+        for(A.avail_in = e, A.next_in = 0, A.input = t, $ec3de3bad43fb783$var$pA(i); i.lookahead >= 3;){
+            let A = i.strstart, t = i.lookahead - 2;
+            do i.ins_h = $ec3de3bad43fb783$var$RA(i, i.ins_h, i.window[A + 3 - 1]), i.prev[A & i.w_mask] = i.head[i.ins_h], i.head[i.ins_h] = A, A++;
+            while (--t);
+            i.strstart = A, i.lookahead = 2, $ec3de3bad43fb783$var$pA(i);
+        }
+        return i.strstart += i.lookahead, i.block_start = i.strstart, i.insert = i.lookahead, i.lookahead = 0, i.match_length = i.prev_length = 2, i.match_available = 0, A.next_in = n, A.input = E, A.avail_in = a, i.wrap = s, $ec3de3bad43fb783$var$AA;
+    },
+    deflateInfo: "pako deflate (from Nodeca project)"
+};
+const $ec3de3bad43fb783$var$xA = (A, t)=>Object.prototype.hasOwnProperty.call(A, t);
+var $ec3de3bad43fb783$var$LA = {
+    assign: function(A) {
+        const t = Array.prototype.slice.call(arguments, 1);
+        for(; t.length;){
+            const e = t.shift();
+            if (e) {
+                if ("object" != typeof e) throw new TypeError(e + "must be non-object");
+                for(const t in e)$ec3de3bad43fb783$var$xA(e, t) && (A[t] = e[t]);
+            }
+        }
+        return A;
+    },
+    flattenChunks: (A)=>{
+        let t = 0;
+        for(let e = 0, i = A.length; e < i; e++)t += A[e].length;
+        const e = new Uint8Array(t);
+        for(let t = 0, i = 0, s = A.length; t < s; t++){
+            let s = A[t];
+            e.set(s, i), i += s.length;
+        }
+        return e;
+    }
+};
+let $ec3de3bad43fb783$var$JA = !0;
+try {
+    String.fromCharCode.apply(null, new Uint8Array(1));
+} catch (A) {
+    $ec3de3bad43fb783$var$JA = !1;
+}
+const $ec3de3bad43fb783$var$zA = new Uint8Array(256);
+for(let A = 0; A < 256; A++)$ec3de3bad43fb783$var$zA[A] = A >= 252 ? 6 : A >= 248 ? 5 : A >= 240 ? 4 : A >= 224 ? 3 : A >= 192 ? 2 : 1;
+$ec3de3bad43fb783$var$zA[254] = $ec3de3bad43fb783$var$zA[254] = 1;
+var $ec3de3bad43fb783$var$NA = {
+    string2buf: (A)=>{
+        if ("function" == typeof TextEncoder && TextEncoder.prototype.encode) return (new TextEncoder).encode(A);
+        let t, e, i, s, a, n = A.length, E = 0;
+        for(s = 0; s < n; s++)e = A.charCodeAt(s), 55296 == (64512 & e) && s + 1 < n && (i = A.charCodeAt(s + 1), 56320 == (64512 & i) && (e = 65536 + (e - 55296 << 10) + (i - 56320), s++)), E += e < 128 ? 1 : e < 2048 ? 2 : e < 65536 ? 3 : 4;
+        for(t = new Uint8Array(E), a = 0, s = 0; a < E; s++)e = A.charCodeAt(s), 55296 == (64512 & e) && s + 1 < n && (i = A.charCodeAt(s + 1), 56320 == (64512 & i) && (e = 65536 + (e - 55296 << 10) + (i - 56320), s++)), e < 128 ? t[a++] = e : e < 2048 ? (t[a++] = 192 | e >>> 6, t[a++] = 128 | 63 & e) : e < 65536 ? (t[a++] = 224 | e >>> 12, t[a++] = 128 | e >>> 6 & 63, t[a++] = 128 | 63 & e) : (t[a++] = 240 | e >>> 18, t[a++] = 128 | e >>> 12 & 63, t[a++] = 128 | e >>> 6 & 63, t[a++] = 128 | 63 & e);
+        return t;
+    },
+    buf2string: (A, t)=>{
+        const e = t || A.length;
+        if ("function" == typeof TextDecoder && TextDecoder.prototype.decode) return (new TextDecoder).decode(A.subarray(0, t));
+        let i, s;
+        const a = new Array(2 * e);
+        for(s = 0, i = 0; i < e;){
+            let t = A[i++];
+            if (t < 128) {
+                a[s++] = t;
+                continue;
+            }
+            let n = $ec3de3bad43fb783$var$zA[t];
+            if (n > 4) a[s++] = 65533, i += n - 1;
+            else {
+                for(t &= 2 === n ? 31 : 3 === n ? 15 : 7; n > 1 && i < e;)t = t << 6 | 63 & A[i++], n--;
+                n > 1 ? a[s++] = 65533 : t < 65536 ? a[s++] = t : (t -= 65536, a[s++] = 55296 | t >> 10 & 1023, a[s++] = 56320 | 1023 & t);
+            }
+        }
+        return ((A, t)=>{
+            if (t < 65534 && A.subarray && $ec3de3bad43fb783$var$JA) return String.fromCharCode.apply(null, A.length === t ? A : A.subarray(0, t));
+            let e = "";
+            for(let i = 0; i < t; i++)e += String.fromCharCode(A[i]);
+            return e;
+        })(a, s);
+    },
+    utf8border: (A, t)=>{
+        (t = t || A.length) > A.length && (t = A.length);
+        let e = t - 1;
+        for(; e >= 0 && 128 == (192 & A[e]);)e--;
+        return e < 0 || 0 === e ? t : e + $ec3de3bad43fb783$var$zA[A[e]] > t ? e : t;
+    }
+};
+var $ec3de3bad43fb783$var$vA = function() {
+    this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0;
+};
+const $ec3de3bad43fb783$var$jA = Object.prototype.toString, { Z_NO_FLUSH: $ec3de3bad43fb783$var$ZA, Z_SYNC_FLUSH: $ec3de3bad43fb783$var$WA, Z_FULL_FLUSH: $ec3de3bad43fb783$var$XA, Z_FINISH: $ec3de3bad43fb783$var$qA, Z_OK: $ec3de3bad43fb783$var$VA, Z_STREAM_END: $ec3de3bad43fb783$var$$A, Z_DEFAULT_COMPRESSION: $ec3de3bad43fb783$var$At, Z_DEFAULT_STRATEGY: $ec3de3bad43fb783$var$tt, Z_DEFLATED: $ec3de3bad43fb783$var$et } = $ec3de3bad43fb783$var$J;
+function $ec3de3bad43fb783$var$it(A) {
+    this.options = $ec3de3bad43fb783$var$LA.assign({
+        level: $ec3de3bad43fb783$var$At,
+        method: $ec3de3bad43fb783$var$et,
+        chunkSize: 16384,
+        windowBits: 15,
+        memLevel: 8,
+        strategy: $ec3de3bad43fb783$var$tt
+    }, A || {});
+    let t = this.options;
+    t.raw && t.windowBits > 0 ? t.windowBits = -t.windowBits : t.gzip && t.windowBits > 0 && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new $ec3de3bad43fb783$var$vA, this.strm.avail_out = 0;
+    let e = $ec3de3bad43fb783$var$KA.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy);
+    if (e !== $ec3de3bad43fb783$var$VA) throw new Error($ec3de3bad43fb783$var$L[e]);
+    if (t.header && $ec3de3bad43fb783$var$KA.deflateSetHeader(this.strm, t.header), t.dictionary) {
+        let A;
+        if (A = "string" == typeof t.dictionary ? $ec3de3bad43fb783$var$NA.string2buf(t.dictionary) : "[object ArrayBuffer]" === $ec3de3bad43fb783$var$jA.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, e = $ec3de3bad43fb783$var$KA.deflateSetDictionary(this.strm, A), e !== $ec3de3bad43fb783$var$VA) throw new Error($ec3de3bad43fb783$var$L[e]);
+        this._dict_set = !0;
+    }
+}
+function $ec3de3bad43fb783$var$st(A, t) {
+    const e = new $ec3de3bad43fb783$var$it(t);
+    if (e.push(A, !0), e.err) throw e.msg || $ec3de3bad43fb783$var$L[e.err];
+    return e.result;
+}
+$ec3de3bad43fb783$var$it.prototype.push = function(A, t) {
+    const e = this.strm, i = this.options.chunkSize;
+    let s, a;
+    if (this.ended) return !1;
+    for(a = t === ~~t ? t : !0 === t ? $ec3de3bad43fb783$var$qA : $ec3de3bad43fb783$var$ZA, "string" == typeof A ? e.input = $ec3de3bad43fb783$var$NA.string2buf(A) : "[object ArrayBuffer]" === $ec3de3bad43fb783$var$jA.call(A) ? e.input = new Uint8Array(A) : e.input = A, e.next_in = 0, e.avail_in = e.input.length;;)if (0 === e.avail_out && (e.output = new Uint8Array(i), e.next_out = 0, e.avail_out = i), (a === $ec3de3bad43fb783$var$WA || a === $ec3de3bad43fb783$var$XA) && e.avail_out <= 6) this.onData(e.output.subarray(0, e.next_out)), e.avail_out = 0;
+    else {
+        if (s = $ec3de3bad43fb783$var$KA.deflate(e, a), s === $ec3de3bad43fb783$var$$A) return e.next_out > 0 && this.onData(e.output.subarray(0, e.next_out)), s = $ec3de3bad43fb783$var$KA.deflateEnd(this.strm), this.onEnd(s), this.ended = !0, s === $ec3de3bad43fb783$var$VA;
+        if (0 !== e.avail_out) {
+            if (a > 0 && e.next_out > 0) this.onData(e.output.subarray(0, e.next_out)), e.avail_out = 0;
+            else if (0 === e.avail_in) break;
+        } else this.onData(e.output);
+    }
+    return !0;
+}, $ec3de3bad43fb783$var$it.prototype.onData = function(A) {
+    this.chunks.push(A);
+}, $ec3de3bad43fb783$var$it.prototype.onEnd = function(A) {
+    A === $ec3de3bad43fb783$var$VA && (this.result = $ec3de3bad43fb783$var$LA.flattenChunks(this.chunks)), this.chunks = [], this.err = A, this.msg = this.strm.msg;
+};
+var $ec3de3bad43fb783$var$at = {
+    Deflate: $ec3de3bad43fb783$var$it,
+    deflate: $ec3de3bad43fb783$var$st,
+    deflateRaw: function(A, t) {
+        return (t = t || {}).raw = !0, $ec3de3bad43fb783$var$st(A, t);
+    },
+    gzip: function(A, t) {
+        return (t = t || {}).gzip = !0, $ec3de3bad43fb783$var$st(A, t);
+    },
+    constants: $ec3de3bad43fb783$var$J
+};
+const $ec3de3bad43fb783$var$nt = 16209;
+var $ec3de3bad43fb783$var$Et = function(A, t) {
+    let e, i, s, a, n, E, h, r, g, o, B, w, c, C, I, _, l, d, M, D, R, S, Q, f;
+    const F = A.state;
+    e = A.next_in, Q = A.input, i = e + (A.avail_in - 5), s = A.next_out, f = A.output, a = s - (t - A.avail_out), n = s + (A.avail_out - 257), E = F.dmax, h = F.wsize, r = F.whave, g = F.wnext, o = F.window, B = F.hold, w = F.bits, c = F.lencode, C = F.distcode, I = (1 << F.lenbits) - 1, _ = (1 << F.distbits) - 1;
+    A: do {
+        w < 15 && (B += Q[e++] << w, w += 8, B += Q[e++] << w, w += 8), l = c[B & I];
+        t: for(;;){
+            if (d = l >>> 24, B >>>= d, w -= d, d = l >>> 16 & 255, 0 === d) f[s++] = 65535 & l;
+            else {
+                if (!(16 & d)) {
+                    if (0 == (64 & d)) {
+                        l = c[(65535 & l) + (B & (1 << d) - 1)];
+                        continue t;
+                    }
+                    if (32 & d) {
+                        F.mode = 16191;
+                        break A;
+                    }
+                    A.msg = "invalid literal/length code", F.mode = $ec3de3bad43fb783$var$nt;
+                    break A;
+                }
+                M = 65535 & l, d &= 15, d && (w < d && (B += Q[e++] << w, w += 8), M += B & (1 << d) - 1, B >>>= d, w -= d), w < 15 && (B += Q[e++] << w, w += 8, B += Q[e++] << w, w += 8), l = C[B & _];
+                e: for(;;){
+                    if (d = l >>> 24, B >>>= d, w -= d, d = l >>> 16 & 255, !(16 & d)) {
+                        if (0 == (64 & d)) {
+                            l = C[(65535 & l) + (B & (1 << d) - 1)];
+                            continue e;
+                        }
+                        A.msg = "invalid distance code", F.mode = $ec3de3bad43fb783$var$nt;
+                        break A;
+                    }
+                    if (D = 65535 & l, d &= 15, w < d && (B += Q[e++] << w, w += 8, w < d && (B += Q[e++] << w, w += 8)), D += B & (1 << d) - 1, D > E) {
+                        A.msg = "invalid distance too far back", F.mode = $ec3de3bad43fb783$var$nt;
+                        break A;
+                    }
+                    if (B >>>= d, w -= d, d = s - a, D > d) {
+                        if (d = D - d, d > r && F.sane) {
+                            A.msg = "invalid distance too far back", F.mode = $ec3de3bad43fb783$var$nt;
+                            break A;
+                        }
+                        if (R = 0, S = o, 0 === g) {
+                            if (R += h - d, d < M) {
+                                M -= d;
+                                do f[s++] = o[R++];
+                                while (--d);
+                                R = s - D, S = f;
+                            }
+                        } else if (g < d) {
+                            if (R += h + g - d, d -= g, d < M) {
+                                M -= d;
+                                do f[s++] = o[R++];
+                                while (--d);
+                                if (R = 0, g < M) {
+                                    d = g, M -= d;
+                                    do f[s++] = o[R++];
+                                    while (--d);
+                                    R = s - D, S = f;
+                                }
+                            }
+                        } else if (R += g - d, d < M) {
+                            M -= d;
+                            do f[s++] = o[R++];
+                            while (--d);
+                            R = s - D, S = f;
+                        }
+                        for(; M > 2;)f[s++] = S[R++], f[s++] = S[R++], f[s++] = S[R++], M -= 3;
+                        M && (f[s++] = S[R++], M > 1 && (f[s++] = S[R++]));
+                    } else {
+                        R = s - D;
+                        do f[s++] = f[R++], f[s++] = f[R++], f[s++] = f[R++], M -= 3;
+                        while (M > 2);
+                        M && (f[s++] = f[R++], M > 1 && (f[s++] = f[R++]));
+                    }
+                    break;
+                }
+            }
+            break;
+        }
+    }while (e < i && s < n);
+    M = w >> 3, e -= M, w -= M << 3, B &= (1 << w) - 1, A.next_in = e, A.next_out = s, A.avail_in = e < i ? i - e + 5 : 5 - (e - i), A.avail_out = s < n ? n - s + 257 : 257 - (s - n), F.hold = B, F.bits = w;
+};
+const $ec3de3bad43fb783$var$ht = 15, $ec3de3bad43fb783$var$rt = new Uint16Array([
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    13,
+    15,
+    17,
+    19,
+    23,
+    27,
+    31,
+    35,
+    43,
+    51,
+    59,
+    67,
+    83,
+    99,
+    115,
+    131,
+    163,
+    195,
+    227,
+    258,
+    0,
+    0
+]), $ec3de3bad43fb783$var$gt = new Uint8Array([
+    16,
+    16,
+    16,
+    16,
+    16,
+    16,
+    16,
+    16,
+    17,
+    17,
+    17,
+    17,
+    18,
+    18,
+    18,
+    18,
+    19,
+    19,
+    19,
+    19,
+    20,
+    20,
+    20,
+    20,
+    21,
+    21,
+    21,
+    21,
+    16,
+    72,
+    78
+]), $ec3de3bad43fb783$var$ot = new Uint16Array([
+    1,
+    2,
+    3,
+    4,
+    5,
+    7,
+    9,
+    13,
+    17,
+    25,
+    33,
+    49,
+    65,
+    97,
+    129,
+    193,
+    257,
+    385,
+    513,
+    769,
+    1025,
+    1537,
+    2049,
+    3073,
+    4097,
+    6145,
+    8193,
+    12289,
+    16385,
+    24577,
+    0,
+    0
+]), $ec3de3bad43fb783$var$Bt = new Uint8Array([
+    16,
+    16,
+    16,
+    16,
+    17,
+    17,
+    18,
+    18,
+    19,
+    19,
+    20,
+    20,
+    21,
+    21,
+    22,
+    22,
+    23,
+    23,
+    24,
+    24,
+    25,
+    25,
+    26,
+    26,
+    27,
+    27,
+    28,
+    28,
+    29,
+    29,
+    64,
+    64
+]);
+var $ec3de3bad43fb783$var$wt = (A, t, e, i, s, a, n, E)=>{
+    const h = E.bits;
+    let r, g, o, B, w, c, C = 0, I = 0, _ = 0, l = 0, d = 0, M = 0, D = 0, R = 0, S = 0, Q = 0, f = null;
+    const F = new Uint16Array(16), T = new Uint16Array(16);
+    let u, p, y, k = null;
+    for(C = 0; C <= $ec3de3bad43fb783$var$ht; C++)F[C] = 0;
+    for(I = 0; I < i; I++)F[t[e + I]]++;
+    for(d = h, l = $ec3de3bad43fb783$var$ht; l >= 1 && 0 === F[l]; l--);
+    if (d > l && (d = l), 0 === l) return s[a++] = 20971520, s[a++] = 20971520, E.bits = 1, 0;
+    for(_ = 1; _ < l && 0 === F[_]; _++);
+    for(d < _ && (d = _), R = 1, C = 1; C <= $ec3de3bad43fb783$var$ht; C++)if (R <<= 1, R -= F[C], R < 0) return -1;
+    if (R > 0 && (0 === A || 1 !== l)) return -1;
+    for(T[1] = 0, C = 1; C < $ec3de3bad43fb783$var$ht; C++)T[C + 1] = T[C] + F[C];
+    for(I = 0; I < i; I++)0 !== t[e + I] && (n[T[t[e + I]]++] = I);
+    if (0 === A ? (f = k = n, c = 20) : 1 === A ? (f = $ec3de3bad43fb783$var$rt, k = $ec3de3bad43fb783$var$gt, c = 257) : (f = $ec3de3bad43fb783$var$ot, k = $ec3de3bad43fb783$var$Bt, c = 0), Q = 0, I = 0, C = _, w = a, M = d, D = 0, o = -1, S = 1 << d, B = S - 1, 1 === A && S > 852 || 2 === A && S > 592) return 1;
+    for(;;){
+        u = C - D, n[I] + 1 < c ? (p = 0, y = n[I]) : n[I] >= c ? (p = k[n[I] - c], y = f[n[I] - c]) : (p = 96, y = 0), r = 1 << C - D, g = 1 << M, _ = g;
+        do g -= r, s[w + (Q >> D) + g] = u << 24 | p << 16 | y | 0;
+        while (0 !== g);
+        for(r = 1 << C - 1; Q & r;)r >>= 1;
+        if (0 !== r ? (Q &= r - 1, Q += r) : Q = 0, I++, 0 == --F[C]) {
+            if (C === l) break;
+            C = t[e + n[I]];
+        }
+        if (C > d && (Q & B) !== o) {
+            for(0 === D && (D = d), w += _, M = C - D, R = 1 << M; M + D < l && (R -= F[M + D], !(R <= 0));)M++, R <<= 1;
+            if (S += 1 << M, 1 === A && S > 852 || 2 === A && S > 592) return 1;
+            o = Q & B, s[o] = d << 24 | M << 16 | w - a | 0;
+        }
+    }
+    return 0 !== Q && (s[w + Q] = C - D << 24 | 4194304), E.bits = d, 0;
+};
+const { Z_FINISH: $ec3de3bad43fb783$var$ct, Z_BLOCK: $ec3de3bad43fb783$var$Ct, Z_TREES: $ec3de3bad43fb783$var$It, Z_OK: $ec3de3bad43fb783$var$_t, Z_STREAM_END: $ec3de3bad43fb783$var$lt, Z_NEED_DICT: $ec3de3bad43fb783$var$dt, Z_STREAM_ERROR: $ec3de3bad43fb783$var$Mt, Z_DATA_ERROR: $ec3de3bad43fb783$var$Dt, Z_MEM_ERROR: $ec3de3bad43fb783$var$Rt, Z_BUF_ERROR: $ec3de3bad43fb783$var$St, Z_DEFLATED: $ec3de3bad43fb783$var$Qt } = $ec3de3bad43fb783$var$J, $ec3de3bad43fb783$var$ft = 16180, $ec3de3bad43fb783$var$Ft = 16190, $ec3de3bad43fb783$var$Tt = 16191, $ec3de3bad43fb783$var$ut = 16192, $ec3de3bad43fb783$var$pt = 16194, $ec3de3bad43fb783$var$yt = 16199, $ec3de3bad43fb783$var$kt = 16200, $ec3de3bad43fb783$var$Ht = 16206, $ec3de3bad43fb783$var$Pt = 16209, $ec3de3bad43fb783$var$Ot = (A)=>(A >>> 24 & 255) + (A >>> 8 & 65280) + ((65280 & A) << 8) + ((255 & A) << 24);
+function $ec3de3bad43fb783$var$Ut() {
+    this.strm = null, this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0;
+}
+const $ec3de3bad43fb783$var$Gt = (A)=>{
+    if (!A) return 1;
+    const t = A.state;
+    return !t || t.strm !== A || t.mode < $ec3de3bad43fb783$var$ft || t.mode > 16211 ? 1 : 0;
+}, $ec3de3bad43fb783$var$mt = (A)=>{
+    if ($ec3de3bad43fb783$var$Gt(A)) return $ec3de3bad43fb783$var$Mt;
+    const t = A.state;
+    return A.total_in = A.total_out = t.total = 0, A.msg = "", t.wrap && (A.adler = 1 & t.wrap), t.mode = $ec3de3bad43fb783$var$ft, t.last = 0, t.havedict = 0, t.flags = -1, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new Int32Array(852), t.distcode = t.distdyn = new Int32Array(592), t.sane = 1, t.back = -1, $ec3de3bad43fb783$var$_t;
+}, $ec3de3bad43fb783$var$Yt = (A)=>{
+    if ($ec3de3bad43fb783$var$Gt(A)) return $ec3de3bad43fb783$var$Mt;
+    const t = A.state;
+    return t.wsize = 0, t.whave = 0, t.wnext = 0, $ec3de3bad43fb783$var$mt(A);
+}, $ec3de3bad43fb783$var$bt = (A, t)=>{
+    let e;
+    if ($ec3de3bad43fb783$var$Gt(A)) return $ec3de3bad43fb783$var$Mt;
+    const i = A.state;
+    return t < 0 ? (e = 0, t = -t) : (e = 5 + (t >> 4), t < 48 && (t &= 15)), t && (t < 8 || t > 15) ? $ec3de3bad43fb783$var$Mt : (null !== i.window && i.wbits !== t && (i.window = null), i.wrap = e, i.wbits = t, $ec3de3bad43fb783$var$Yt(A));
+}, $ec3de3bad43fb783$var$Kt = (A, t)=>{
+    if (!A) return $ec3de3bad43fb783$var$Mt;
+    const e = new $ec3de3bad43fb783$var$Ut;
+    A.state = e, e.strm = A, e.window = null, e.mode = $ec3de3bad43fb783$var$ft;
+    const i = $ec3de3bad43fb783$var$bt(A, t);
+    return i !== $ec3de3bad43fb783$var$_t && (A.state = null), i;
+};
+let $ec3de3bad43fb783$var$xt, $ec3de3bad43fb783$var$Lt, $ec3de3bad43fb783$var$Jt = !0;
+const $ec3de3bad43fb783$var$zt = (A)=>{
+    if ($ec3de3bad43fb783$var$Jt) {
+        $ec3de3bad43fb783$var$xt = new Int32Array(512), $ec3de3bad43fb783$var$Lt = new Int32Array(32);
+        let t = 0;
+        for(; t < 144;)A.lens[t++] = 8;
+        for(; t < 256;)A.lens[t++] = 9;
+        for(; t < 280;)A.lens[t++] = 7;
+        for(; t < 288;)A.lens[t++] = 8;
+        for($ec3de3bad43fb783$var$wt(1, A.lens, 0, 288, $ec3de3bad43fb783$var$xt, 0, A.work, {
+            bits: 9
+        }), t = 0; t < 32;)A.lens[t++] = 5;
+        $ec3de3bad43fb783$var$wt(2, A.lens, 0, 32, $ec3de3bad43fb783$var$Lt, 0, A.work, {
+            bits: 5
+        }), $ec3de3bad43fb783$var$Jt = !1;
+    }
+    A.lencode = $ec3de3bad43fb783$var$xt, A.lenbits = 9, A.distcode = $ec3de3bad43fb783$var$Lt, A.distbits = 5;
+}, $ec3de3bad43fb783$var$Nt = (A, t, e, i)=>{
+    let s;
+    const a = A.state;
+    return null === a.window && (a.wsize = 1 << a.wbits, a.wnext = 0, a.whave = 0, a.window = new Uint8Array(a.wsize)), i >= a.wsize ? (a.window.set(t.subarray(e - a.wsize, e), 0), a.wnext = 0, a.whave = a.wsize) : (s = a.wsize - a.wnext, s > i && (s = i), a.window.set(t.subarray(e - i, e - i + s), a.wnext), (i -= s) ? (a.window.set(t.subarray(e - i, e), 0), a.wnext = i, a.whave = a.wsize) : (a.wnext += s, a.wnext === a.wsize && (a.wnext = 0), a.whave < a.wsize && (a.whave += s))), 0;
+};
+var $ec3de3bad43fb783$var$vt = {
+    inflateReset: $ec3de3bad43fb783$var$Yt,
+    inflateReset2: $ec3de3bad43fb783$var$bt,
+    inflateResetKeep: $ec3de3bad43fb783$var$mt,
+    inflateInit: (A)=>$ec3de3bad43fb783$var$Kt(A, 15),
+    inflateInit2: $ec3de3bad43fb783$var$Kt,
+    inflate: (A, t)=>{
+        let e, i, s, a, n, E, h, r, g, o, B, w, c, C, I, _, l, d, M, D, R, S, Q = 0;
+        const f = new Uint8Array(4);
+        let F, T;
+        const u = new Uint8Array([
+            16,
+            17,
+            18,
+            0,
+            8,
+            7,
+            9,
+            6,
+            10,
+            5,
+            11,
+            4,
+            12,
+            3,
+            13,
+            2,
+            14,
+            1,
+            15
+        ]);
+        if ($ec3de3bad43fb783$var$Gt(A) || !A.output || !A.input && 0 !== A.avail_in) return $ec3de3bad43fb783$var$Mt;
+        e = A.state, e.mode === $ec3de3bad43fb783$var$Tt && (e.mode = $ec3de3bad43fb783$var$ut), n = A.next_out, s = A.output, h = A.avail_out, a = A.next_in, i = A.input, E = A.avail_in, r = e.hold, g = e.bits, o = E, B = h, S = $ec3de3bad43fb783$var$_t;
+        A: for(;;)switch(e.mode){
+            case $ec3de3bad43fb783$var$ft:
+                if (0 === e.wrap) {
+                    e.mode = $ec3de3bad43fb783$var$ut;
+                    break;
+                }
+                for(; g < 16;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if (2 & e.wrap && 35615 === r) {
+                    0 === e.wbits && (e.wbits = 15), e.check = 0, f[0] = 255 & r, f[1] = r >>> 8 & 255, e.check = $ec3de3bad43fb783$var$x(e.check, f, 2, 0), r = 0, g = 0, e.mode = 16181;
+                    break;
+                }
+                if (e.head && (e.head.done = !1), !(1 & e.wrap) || (((255 & r) << 8) + (r >> 8)) % 31) {
+                    A.msg = "incorrect header check", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if ((15 & r) !== $ec3de3bad43fb783$var$Qt) {
+                    A.msg = "unknown compression method", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (r >>>= 4, g -= 4, R = 8 + (15 & r), 0 === e.wbits && (e.wbits = R), R > 15 || R > e.wbits) {
+                    A.msg = "invalid window size", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.dmax = 1 << e.wbits, e.flags = 0, A.adler = e.check = 1, e.mode = 512 & r ? 16189 : $ec3de3bad43fb783$var$Tt, r = 0, g = 0;
+                break;
+            case 16181:
+                for(; g < 16;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if (e.flags = r, (255 & e.flags) !== $ec3de3bad43fb783$var$Qt) {
+                    A.msg = "unknown compression method", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (57344 & e.flags) {
+                    A.msg = "unknown header flags set", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.head && (e.head.text = r >> 8 & 1), 512 & e.flags && 4 & e.wrap && (f[0] = 255 & r, f[1] = r >>> 8 & 255, e.check = $ec3de3bad43fb783$var$x(e.check, f, 2, 0)), r = 0, g = 0, e.mode = 16182;
+            case 16182:
+                for(; g < 32;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                e.head && (e.head.time = r), 512 & e.flags && 4 & e.wrap && (f[0] = 255 & r, f[1] = r >>> 8 & 255, f[2] = r >>> 16 & 255, f[3] = r >>> 24 & 255, e.check = $ec3de3bad43fb783$var$x(e.check, f, 4, 0)), r = 0, g = 0, e.mode = 16183;
+            case 16183:
+                for(; g < 16;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                e.head && (e.head.xflags = 255 & r, e.head.os = r >> 8), 512 & e.flags && 4 & e.wrap && (f[0] = 255 & r, f[1] = r >>> 8 & 255, e.check = $ec3de3bad43fb783$var$x(e.check, f, 2, 0)), r = 0, g = 0, e.mode = 16184;
+            case 16184:
+                if (1024 & e.flags) {
+                    for(; g < 16;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    e.length = r, e.head && (e.head.extra_len = r), 512 & e.flags && 4 & e.wrap && (f[0] = 255 & r, f[1] = r >>> 8 & 255, e.check = $ec3de3bad43fb783$var$x(e.check, f, 2, 0)), r = 0, g = 0;
+                } else e.head && (e.head.extra = null);
+                e.mode = 16185;
+            case 16185:
+                if (1024 & e.flags && (w = e.length, w > E && (w = E), w && (e.head && (R = e.head.extra_len - e.length, e.head.extra || (e.head.extra = new Uint8Array(e.head.extra_len)), e.head.extra.set(i.subarray(a, a + w), R)), 512 & e.flags && 4 & e.wrap && (e.check = $ec3de3bad43fb783$var$x(e.check, i, w, a)), E -= w, a += w, e.length -= w), e.length)) break A;
+                e.length = 0, e.mode = 16186;
+            case 16186:
+                if (2048 & e.flags) {
+                    if (0 === E) break A;
+                    w = 0;
+                    do R = i[a + w++], e.head && R && e.length < 65536 && (e.head.name += String.fromCharCode(R));
+                    while (R && w < E);
+                    if (512 & e.flags && 4 & e.wrap && (e.check = $ec3de3bad43fb783$var$x(e.check, i, w, a)), E -= w, a += w, R) break A;
+                } else e.head && (e.head.name = null);
+                e.length = 0, e.mode = 16187;
+            case 16187:
+                if (4096 & e.flags) {
+                    if (0 === E) break A;
+                    w = 0;
+                    do R = i[a + w++], e.head && R && e.length < 65536 && (e.head.comment += String.fromCharCode(R));
+                    while (R && w < E);
+                    if (512 & e.flags && 4 & e.wrap && (e.check = $ec3de3bad43fb783$var$x(e.check, i, w, a)), E -= w, a += w, R) break A;
+                } else e.head && (e.head.comment = null);
+                e.mode = 16188;
+            case 16188:
+                if (512 & e.flags) {
+                    for(; g < 16;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    if (4 & e.wrap && r !== (65535 & e.check)) {
+                        A.msg = "header crc mismatch", e.mode = $ec3de3bad43fb783$var$Pt;
+                        break;
+                    }
+                    r = 0, g = 0;
+                }
+                e.head && (e.head.hcrc = e.flags >> 9 & 1, e.head.done = !0), A.adler = e.check = 0, e.mode = $ec3de3bad43fb783$var$Tt;
+                break;
+            case 16189:
+                for(; g < 32;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                A.adler = e.check = $ec3de3bad43fb783$var$Ot(r), r = 0, g = 0, e.mode = $ec3de3bad43fb783$var$Ft;
+            case $ec3de3bad43fb783$var$Ft:
+                if (0 === e.havedict) return A.next_out = n, A.avail_out = h, A.next_in = a, A.avail_in = E, e.hold = r, e.bits = g, $ec3de3bad43fb783$var$dt;
+                A.adler = e.check = 1, e.mode = $ec3de3bad43fb783$var$Tt;
+            case $ec3de3bad43fb783$var$Tt:
+                if (t === $ec3de3bad43fb783$var$Ct || t === $ec3de3bad43fb783$var$It) break A;
+            case $ec3de3bad43fb783$var$ut:
+                if (e.last) {
+                    r >>>= 7 & g, g -= 7 & g, e.mode = $ec3de3bad43fb783$var$Ht;
+                    break;
+                }
+                for(; g < 3;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                switch(e.last = 1 & r, r >>>= 1, g -= 1, 3 & r){
+                    case 0:
+                        e.mode = 16193;
+                        break;
+                    case 1:
+                        if ($ec3de3bad43fb783$var$zt(e), e.mode = $ec3de3bad43fb783$var$yt, t === $ec3de3bad43fb783$var$It) {
+                            r >>>= 2, g -= 2;
+                            break A;
+                        }
+                        break;
+                    case 2:
+                        e.mode = 16196;
+                        break;
+                    case 3:
+                        A.msg = "invalid block type", e.mode = $ec3de3bad43fb783$var$Pt;
+                }
+                r >>>= 2, g -= 2;
+                break;
+            case 16193:
+                for(r >>>= 7 & g, g -= 7 & g; g < 32;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if ((65535 & r) != (r >>> 16 ^ 65535)) {
+                    A.msg = "invalid stored block lengths", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (e.length = 65535 & r, r = 0, g = 0, e.mode = $ec3de3bad43fb783$var$pt, t === $ec3de3bad43fb783$var$It) break A;
+            case $ec3de3bad43fb783$var$pt:
+                e.mode = 16195;
+            case 16195:
+                if (w = e.length, w) {
+                    if (w > E && (w = E), w > h && (w = h), 0 === w) break A;
+                    s.set(i.subarray(a, a + w), n), E -= w, a += w, h -= w, n += w, e.length -= w;
+                    break;
+                }
+                e.mode = $ec3de3bad43fb783$var$Tt;
+                break;
+            case 16196:
+                for(; g < 14;){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if (e.nlen = 257 + (31 & r), r >>>= 5, g -= 5, e.ndist = 1 + (31 & r), r >>>= 5, g -= 5, e.ncode = 4 + (15 & r), r >>>= 4, g -= 4, e.nlen > 286 || e.ndist > 30) {
+                    A.msg = "too many length or distance symbols", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.have = 0, e.mode = 16197;
+            case 16197:
+                for(; e.have < e.ncode;){
+                    for(; g < 3;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    e.lens[u[e.have++]] = 7 & r, r >>>= 3, g -= 3;
+                }
+                for(; e.have < 19;)e.lens[u[e.have++]] = 0;
+                if (e.lencode = e.lendyn, e.lenbits = 7, F = {
+                    bits: e.lenbits
+                }, S = $ec3de3bad43fb783$var$wt(0, e.lens, 0, 19, e.lencode, 0, e.work, F), e.lenbits = F.bits, S) {
+                    A.msg = "invalid code lengths set", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.have = 0, e.mode = 16198;
+            case 16198:
+                for(; e.have < e.nlen + e.ndist;){
+                    for(; Q = e.lencode[r & (1 << e.lenbits) - 1], I = Q >>> 24, _ = Q >>> 16 & 255, l = 65535 & Q, !(I <= g);){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    if (l < 16) r >>>= I, g -= I, e.lens[e.have++] = l;
+                    else {
+                        if (16 === l) {
+                            for(T = I + 2; g < T;){
+                                if (0 === E) break A;
+                                E--, r += i[a++] << g, g += 8;
+                            }
+                            if (r >>>= I, g -= I, 0 === e.have) {
+                                A.msg = "invalid bit length repeat", e.mode = $ec3de3bad43fb783$var$Pt;
+                                break;
+                            }
+                            R = e.lens[e.have - 1], w = 3 + (3 & r), r >>>= 2, g -= 2;
+                        } else if (17 === l) {
+                            for(T = I + 3; g < T;){
+                                if (0 === E) break A;
+                                E--, r += i[a++] << g, g += 8;
+                            }
+                            r >>>= I, g -= I, R = 0, w = 3 + (7 & r), r >>>= 3, g -= 3;
+                        } else {
+                            for(T = I + 7; g < T;){
+                                if (0 === E) break A;
+                                E--, r += i[a++] << g, g += 8;
+                            }
+                            r >>>= I, g -= I, R = 0, w = 11 + (127 & r), r >>>= 7, g -= 7;
+                        }
+                        if (e.have + w > e.nlen + e.ndist) {
+                            A.msg = "invalid bit length repeat", e.mode = $ec3de3bad43fb783$var$Pt;
+                            break;
+                        }
+                        for(; w--;)e.lens[e.have++] = R;
+                    }
+                }
+                if (e.mode === $ec3de3bad43fb783$var$Pt) break;
+                if (0 === e.lens[256]) {
+                    A.msg = "invalid code -- missing end-of-block", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (e.lenbits = 9, F = {
+                    bits: e.lenbits
+                }, S = $ec3de3bad43fb783$var$wt(1, e.lens, 0, e.nlen, e.lencode, 0, e.work, F), e.lenbits = F.bits, S) {
+                    A.msg = "invalid literal/lengths set", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (e.distbits = 6, e.distcode = e.distdyn, F = {
+                    bits: e.distbits
+                }, S = $ec3de3bad43fb783$var$wt(2, e.lens, e.nlen, e.ndist, e.distcode, 0, e.work, F), e.distbits = F.bits, S) {
+                    A.msg = "invalid distances set", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                if (e.mode = $ec3de3bad43fb783$var$yt, t === $ec3de3bad43fb783$var$It) break A;
+            case $ec3de3bad43fb783$var$yt:
+                e.mode = $ec3de3bad43fb783$var$kt;
+            case $ec3de3bad43fb783$var$kt:
+                if (E >= 6 && h >= 258) {
+                    A.next_out = n, A.avail_out = h, A.next_in = a, A.avail_in = E, e.hold = r, e.bits = g, $ec3de3bad43fb783$var$Et(A, B), n = A.next_out, s = A.output, h = A.avail_out, a = A.next_in, i = A.input, E = A.avail_in, r = e.hold, g = e.bits, e.mode === $ec3de3bad43fb783$var$Tt && (e.back = -1);
+                    break;
+                }
+                for(e.back = 0; Q = e.lencode[r & (1 << e.lenbits) - 1], I = Q >>> 24, _ = Q >>> 16 & 255, l = 65535 & Q, !(I <= g);){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if (_ && 0 == (240 & _)) {
+                    for(d = I, M = _, D = l; Q = e.lencode[D + ((r & (1 << d + M) - 1) >> d)], I = Q >>> 24, _ = Q >>> 16 & 255, l = 65535 & Q, !(d + I <= g);){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    r >>>= d, g -= d, e.back += d;
+                }
+                if (r >>>= I, g -= I, e.back += I, e.length = l, 0 === _) {
+                    e.mode = 16205;
+                    break;
+                }
+                if (32 & _) {
+                    e.back = -1, e.mode = $ec3de3bad43fb783$var$Tt;
+                    break;
+                }
+                if (64 & _) {
+                    A.msg = "invalid literal/length code", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.extra = 15 & _, e.mode = 16201;
+            case 16201:
+                if (e.extra) {
+                    for(T = e.extra; g < T;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    e.length += r & (1 << e.extra) - 1, r >>>= e.extra, g -= e.extra, e.back += e.extra;
+                }
+                e.was = e.length, e.mode = 16202;
+            case 16202:
+                for(; Q = e.distcode[r & (1 << e.distbits) - 1], I = Q >>> 24, _ = Q >>> 16 & 255, l = 65535 & Q, !(I <= g);){
+                    if (0 === E) break A;
+                    E--, r += i[a++] << g, g += 8;
+                }
+                if (0 == (240 & _)) {
+                    for(d = I, M = _, D = l; Q = e.distcode[D + ((r & (1 << d + M) - 1) >> d)], I = Q >>> 24, _ = Q >>> 16 & 255, l = 65535 & Q, !(d + I <= g);){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    r >>>= d, g -= d, e.back += d;
+                }
+                if (r >>>= I, g -= I, e.back += I, 64 & _) {
+                    A.msg = "invalid distance code", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.offset = l, e.extra = 15 & _, e.mode = 16203;
+            case 16203:
+                if (e.extra) {
+                    for(T = e.extra; g < T;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    e.offset += r & (1 << e.extra) - 1, r >>>= e.extra, g -= e.extra, e.back += e.extra;
+                }
+                if (e.offset > e.dmax) {
+                    A.msg = "invalid distance too far back", e.mode = $ec3de3bad43fb783$var$Pt;
+                    break;
+                }
+                e.mode = 16204;
+            case 16204:
+                if (0 === h) break A;
+                if (w = B - h, e.offset > w) {
+                    if (w = e.offset - w, w > e.whave && e.sane) {
+                        A.msg = "invalid distance too far back", e.mode = $ec3de3bad43fb783$var$Pt;
+                        break;
+                    }
+                    w > e.wnext ? (w -= e.wnext, c = e.wsize - w) : c = e.wnext - w, w > e.length && (w = e.length), C = e.window;
+                } else C = s, c = n - e.offset, w = e.length;
+                w > h && (w = h), h -= w, e.length -= w;
+                do s[n++] = C[c++];
+                while (--w);
+                0 === e.length && (e.mode = $ec3de3bad43fb783$var$kt);
+                break;
+            case 16205:
+                if (0 === h) break A;
+                s[n++] = e.length, h--, e.mode = $ec3de3bad43fb783$var$kt;
+                break;
+            case $ec3de3bad43fb783$var$Ht:
+                if (e.wrap) {
+                    for(; g < 32;){
+                        if (0 === E) break A;
+                        E--, r |= i[a++] << g, g += 8;
+                    }
+                    if (B -= h, A.total_out += B, e.total += B, 4 & e.wrap && B && (A.adler = e.check = e.flags ? $ec3de3bad43fb783$var$x(e.check, s, B, n - B) : $ec3de3bad43fb783$var$b(e.check, s, B, n - B)), B = h, 4 & e.wrap && (e.flags ? r : $ec3de3bad43fb783$var$Ot(r)) !== e.check) {
+                        A.msg = "incorrect data check", e.mode = $ec3de3bad43fb783$var$Pt;
+                        break;
+                    }
+                    r = 0, g = 0;
+                }
+                e.mode = 16207;
+            case 16207:
+                if (e.wrap && e.flags) {
+                    for(; g < 32;){
+                        if (0 === E) break A;
+                        E--, r += i[a++] << g, g += 8;
+                    }
+                    if (4 & e.wrap && r !== (4294967295 & e.total)) {
+                        A.msg = "incorrect length check", e.mode = $ec3de3bad43fb783$var$Pt;
+                        break;
+                    }
+                    r = 0, g = 0;
+                }
+                e.mode = 16208;
+            case 16208:
+                S = $ec3de3bad43fb783$var$lt;
+                break A;
+            case $ec3de3bad43fb783$var$Pt:
+                S = $ec3de3bad43fb783$var$Dt;
+                break A;
+            case 16210:
+                return $ec3de3bad43fb783$var$Rt;
+            default:
+                return $ec3de3bad43fb783$var$Mt;
+        }
+        return A.next_out = n, A.avail_out = h, A.next_in = a, A.avail_in = E, e.hold = r, e.bits = g, (e.wsize || B !== A.avail_out && e.mode < $ec3de3bad43fb783$var$Pt && (e.mode < $ec3de3bad43fb783$var$Ht || t !== $ec3de3bad43fb783$var$ct)) && $ec3de3bad43fb783$var$Nt(A, A.output, A.next_out, B - A.avail_out), o -= A.avail_in, B -= A.avail_out, A.total_in += o, A.total_out += B, e.total += B, 4 & e.wrap && B && (A.adler = e.check = e.flags ? $ec3de3bad43fb783$var$x(e.check, s, B, A.next_out - B) : $ec3de3bad43fb783$var$b(e.check, s, B, A.next_out - B)), A.data_type = e.bits + (e.last ? 64 : 0) + (e.mode === $ec3de3bad43fb783$var$Tt ? 128 : 0) + (e.mode === $ec3de3bad43fb783$var$yt || e.mode === $ec3de3bad43fb783$var$pt ? 256 : 0), (0 === o && 0 === B || t === $ec3de3bad43fb783$var$ct) && S === $ec3de3bad43fb783$var$_t && (S = $ec3de3bad43fb783$var$St), S;
+    },
+    inflateEnd: (A)=>{
+        if ($ec3de3bad43fb783$var$Gt(A)) return $ec3de3bad43fb783$var$Mt;
+        let t = A.state;
+        return t.window && (t.window = null), A.state = null, $ec3de3bad43fb783$var$_t;
+    },
+    inflateGetHeader: (A, t)=>{
+        if ($ec3de3bad43fb783$var$Gt(A)) return $ec3de3bad43fb783$var$Mt;
+        const e = A.state;
+        return 0 == (2 & e.wrap) ? $ec3de3bad43fb783$var$Mt : (e.head = t, t.done = !1, $ec3de3bad43fb783$var$_t);
+    },
+    inflateSetDictionary: (A, t)=>{
+        const e = t.length;
+        let i, s, a;
+        return $ec3de3bad43fb783$var$Gt(A) ? $ec3de3bad43fb783$var$Mt : (i = A.state, 0 !== i.wrap && i.mode !== $ec3de3bad43fb783$var$Ft ? $ec3de3bad43fb783$var$Mt : i.mode === $ec3de3bad43fb783$var$Ft && (s = 1, s = $ec3de3bad43fb783$var$b(s, t, e, 0), s !== i.check) ? $ec3de3bad43fb783$var$Dt : (a = $ec3de3bad43fb783$var$Nt(A, t, e, e), a ? (i.mode = 16210, $ec3de3bad43fb783$var$Rt) : (i.havedict = 1, $ec3de3bad43fb783$var$_t)));
+    },
+    inflateInfo: "pako inflate (from Nodeca project)"
+};
+var $ec3de3bad43fb783$var$jt = function() {
+    this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1;
+};
+const $ec3de3bad43fb783$var$Zt = Object.prototype.toString, { Z_NO_FLUSH: $ec3de3bad43fb783$var$Wt, Z_FINISH: $ec3de3bad43fb783$var$Xt, Z_OK: $ec3de3bad43fb783$var$qt, Z_STREAM_END: $ec3de3bad43fb783$var$Vt, Z_NEED_DICT: $ec3de3bad43fb783$var$$t, Z_STREAM_ERROR: $ec3de3bad43fb783$var$Ae, Z_DATA_ERROR: $ec3de3bad43fb783$var$te, Z_MEM_ERROR: $ec3de3bad43fb783$var$ee } = $ec3de3bad43fb783$var$J;
+function $ec3de3bad43fb783$var$ie(A) {
+    this.options = $ec3de3bad43fb783$var$LA.assign({
+        chunkSize: 65536,
+        windowBits: 15,
+        to: ""
+    }, A || {});
+    const t = this.options;
+    t.raw && t.windowBits >= 0 && t.windowBits < 16 && (t.windowBits = -t.windowBits, 0 === t.windowBits && (t.windowBits = -15)), !(t.windowBits >= 0 && t.windowBits < 16) || A && A.windowBits || (t.windowBits += 32), t.windowBits > 15 && t.windowBits < 48 && 0 == (15 & t.windowBits) && (t.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new $ec3de3bad43fb783$var$vA, this.strm.avail_out = 0;
+    let e = $ec3de3bad43fb783$var$vt.inflateInit2(this.strm, t.windowBits);
+    if (e !== $ec3de3bad43fb783$var$qt) throw new Error($ec3de3bad43fb783$var$L[e]);
+    if (this.header = new $ec3de3bad43fb783$var$jt, $ec3de3bad43fb783$var$vt.inflateGetHeader(this.strm, this.header), t.dictionary && ("string" == typeof t.dictionary ? t.dictionary = $ec3de3bad43fb783$var$NA.string2buf(t.dictionary) : "[object ArrayBuffer]" === $ec3de3bad43fb783$var$Zt.call(t.dictionary) && (t.dictionary = new Uint8Array(t.dictionary)), t.raw && (e = $ec3de3bad43fb783$var$vt.inflateSetDictionary(this.strm, t.dictionary), e !== $ec3de3bad43fb783$var$qt))) throw new Error($ec3de3bad43fb783$var$L[e]);
+}
+function $ec3de3bad43fb783$var$se(A, t) {
+    const e = new $ec3de3bad43fb783$var$ie(t);
+    if (e.push(A), e.err) throw e.msg || $ec3de3bad43fb783$var$L[e.err];
+    return e.result;
+}
+$ec3de3bad43fb783$var$ie.prototype.push = function(A, t) {
+    const e = this.strm, i = this.options.chunkSize, s = this.options.dictionary;
+    let a, n, E;
+    if (this.ended) return !1;
+    for(n = t === ~~t ? t : !0 === t ? $ec3de3bad43fb783$var$Xt : $ec3de3bad43fb783$var$Wt, "[object ArrayBuffer]" === $ec3de3bad43fb783$var$Zt.call(A) ? e.input = new Uint8Array(A) : e.input = A, e.next_in = 0, e.avail_in = e.input.length;;){
+        for(0 === e.avail_out && (e.output = new Uint8Array(i), e.next_out = 0, e.avail_out = i), a = $ec3de3bad43fb783$var$vt.inflate(e, n), a === $ec3de3bad43fb783$var$$t && s && (a = $ec3de3bad43fb783$var$vt.inflateSetDictionary(e, s), a === $ec3de3bad43fb783$var$qt ? a = $ec3de3bad43fb783$var$vt.inflate(e, n) : a === $ec3de3bad43fb783$var$te && (a = $ec3de3bad43fb783$var$$t)); e.avail_in > 0 && a === $ec3de3bad43fb783$var$Vt && e.state.wrap > 0 && 0 !== A[e.next_in];)$ec3de3bad43fb783$var$vt.inflateReset(e), a = $ec3de3bad43fb783$var$vt.inflate(e, n);
+        switch(a){
+            case $ec3de3bad43fb783$var$Ae:
+            case $ec3de3bad43fb783$var$te:
+            case $ec3de3bad43fb783$var$$t:
+            case $ec3de3bad43fb783$var$ee:
+                return this.onEnd(a), this.ended = !0, !1;
+        }
+        if (E = e.avail_out, e.next_out && (0 === e.avail_out || a === $ec3de3bad43fb783$var$Vt)) {
+            if ("string" === this.options.to) {
+                let A = $ec3de3bad43fb783$var$NA.utf8border(e.output, e.next_out), t = e.next_out - A, s = $ec3de3bad43fb783$var$NA.buf2string(e.output, A);
+                e.next_out = t, e.avail_out = i - t, t && e.output.set(e.output.subarray(A, A + t), 0), this.onData(s);
+            } else this.onData(e.output.length === e.next_out ? e.output : e.output.subarray(0, e.next_out));
+        }
+        if (a !== $ec3de3bad43fb783$var$qt || 0 !== E) {
+            if (a === $ec3de3bad43fb783$var$Vt) return a = $ec3de3bad43fb783$var$vt.inflateEnd(this.strm), this.onEnd(a), this.ended = !0, !0;
+            if (0 === e.avail_in) break;
+        }
+    }
+    return !0;
+}, $ec3de3bad43fb783$var$ie.prototype.onData = function(A) {
+    this.chunks.push(A);
+}, $ec3de3bad43fb783$var$ie.prototype.onEnd = function(A) {
+    A === $ec3de3bad43fb783$var$qt && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = $ec3de3bad43fb783$var$LA.flattenChunks(this.chunks)), this.chunks = [], this.err = A, this.msg = this.strm.msg;
+};
+var $ec3de3bad43fb783$var$ae = {
+    Inflate: $ec3de3bad43fb783$var$ie,
+    inflate: $ec3de3bad43fb783$var$se,
+    inflateRaw: function(A, t) {
+        return (t = t || {}).raw = !0, $ec3de3bad43fb783$var$se(A, t);
+    },
+    ungzip: $ec3de3bad43fb783$var$se,
+    constants: $ec3de3bad43fb783$var$J
+};
+const { Deflate: $ec3de3bad43fb783$var$ne, deflate: $ec3de3bad43fb783$var$Ee, deflateRaw: $ec3de3bad43fb783$var$he, gzip: $ec3de3bad43fb783$var$re } = $ec3de3bad43fb783$var$at, { Inflate: $ec3de3bad43fb783$var$ge, inflate: $ec3de3bad43fb783$var$oe, inflateRaw: $ec3de3bad43fb783$var$Be, ungzip: $ec3de3bad43fb783$var$we } = $ec3de3bad43fb783$var$ae;
+var $ec3de3bad43fb783$var$ce = $ec3de3bad43fb783$var$Ee, $ec3de3bad43fb783$var$Ce = $ec3de3bad43fb783$var$ge;
+class $ec3de3bad43fb783$export$86495b081fef8e52 {
+    constructor(A, t = !1, e = !0){
+        this.device = A, this.tracing = t, this.slipReaderEnabled = !1, this.leftOver = new Uint8Array(0), this.baudrate = 0, this.traceLog = "", this.lastTraceTime = Date.now(), this._DTR_state = !1, this.slipReaderEnabled = e;
+    }
+    getInfo() {
+        const A = this.device.getInfo();
+        return A.usbVendorId && A.usbProductId ? `WebSerial VendorID 0x${A.usbVendorId.toString(16)} ProductID 0x${A.usbProductId.toString(16)}` : "";
+    }
+    getPid() {
+        return this.device.getInfo().usbProductId;
+    }
+    trace(A) {
+        const t = `${`TRACE ${(Date.now() - this.lastTraceTime).toFixed(3)}`} ${A}`;
+        console.log(t), this.traceLog += t + "\n";
+    }
+    async returnTrace() {
+        try {
+            await navigator.clipboard.writeText(this.traceLog), console.log("Text copied to clipboard!");
+        } catch (A) {
+            console.error("Failed to copy text:", A);
+        }
+    }
+    hexify(A) {
+        return Array.from(A).map((A)=>A.toString(16).padStart(2, "0")).join("").padEnd(16, " ");
+    }
+    hexConvert(A, t = !0) {
+        if (t && A.length > 16) {
+            let t = "", e = A;
+            for(; e.length > 0;){
+                const A = e.slice(0, 16), i = String.fromCharCode(...A).split("").map((A)=>" " === A || A >= " " && A <= "~" && "  " !== A ? A : ".").join("");
+                e = e.slice(16), t += `\n    ${this.hexify(A.slice(0, 8))} ${this.hexify(A.slice(8))} | ${i}`;
+            }
+            return t;
+        }
+        return this.hexify(A);
+    }
+    slipWriter(A) {
+        const t = [];
+        t.push(192);
+        for(let e = 0; e < A.length; e++)219 === A[e] ? t.push(219, 221) : 192 === A[e] ? t.push(219, 220) : t.push(A[e]);
+        return t.push(192), new Uint8Array(t);
+    }
+    async write(A) {
+        const t = this.slipWriter(A);
+        if (this.device.writable) {
+            const A = this.device.writable.getWriter();
+            this.tracing && (console.log("Write bytes"), this.trace(`Write ${t.length} bytes: ${this.hexConvert(t)}`)), await A.write(t), A.releaseLock();
+        }
+    }
+    _appendBuffer(A, t) {
+        const e = new Uint8Array(A.byteLength + t.byteLength);
+        return e.set(new Uint8Array(A), 0), e.set(new Uint8Array(t), A.byteLength), e.buffer;
+    }
+    slipReader(A) {
+        let t = 0, e = 0, i = 0, s = "init";
+        for(; t < A.length;)if ("init" !== s || 192 != A[t]) {
+            if ("valid_data" === s && 192 == A[t]) {
+                i = t - 1, s = "packet_complete";
+                break;
+            }
+            t++;
+        } else e = t + 1, s = "valid_data", t++;
+        if ("packet_complete" !== s) return this.leftOver = A, new Uint8Array(0);
+        this.leftOver = A.slice(i + 2);
+        const a = new Uint8Array(i - e + 1);
+        let n = 0;
+        for(t = e; t <= i; t++, n++)219 !== A[t] || 220 !== A[t + 1] ? 219 !== A[t] || 221 !== A[t + 1] ? a[n] = A[t] : (a[n] = 219, t++) : (a[n] = 192, t++);
+        return a.slice(0, n);
+    }
+    async read(A = 0, t = 12) {
+        let e, i = this.leftOver;
+        if (this.leftOver = new Uint8Array(0), this.slipReaderEnabled) {
+            const A = this.slipReader(i);
+            if (A.length > 0) return A;
+            i = this.leftOver, this.leftOver = new Uint8Array(0);
+        }
+        if (null == this.device.readable) return this.leftOver;
+        this.reader = this.device.readable.getReader();
+        try {
+            A > 0 && (e = setTimeout(()=>{
+                this.reader && this.reader.cancel();
+            }, A));
+            do {
+                const { value: A, done: t } = await this.reader.read();
+                if (t) throw this.leftOver = i, new Error("Timeout");
+                i = new Uint8Array(this._appendBuffer(i.buffer, A.buffer));
+            }while (i.length < t);
+        } finally{
+            A > 0 && clearTimeout(e), this.reader.releaseLock();
+        }
+        if (this.tracing && (console.log("Read bytes"), this.trace(`Read ${i.length} bytes: ${this.hexConvert(i)}`)), this.slipReaderEnabled) {
+            const A = this.slipReader(i);
+            return this.tracing && (console.log("Slip reader results"), this.trace(`Read ${A.length} bytes: ${this.hexConvert(A)}`)), A;
+        }
+        return i;
+    }
+    async rawRead(A = 0) {
+        if (0 != this.leftOver.length) {
+            const A = this.leftOver;
+            return this.leftOver = new Uint8Array(0), A;
+        }
+        if (!this.device.readable) return this.leftOver;
+        let t;
+        this.reader = this.device.readable.getReader();
+        try {
+            A > 0 && (t = setTimeout(()=>{
+                this.reader && this.reader.cancel();
+            }, A));
+            const { value: e, done: i } = await this.reader.read();
+            return i || this.tracing && (console.log("Raw Read bytes"), this.trace(`Read ${e.length} bytes: ${this.hexConvert(e)}`)), e;
+        } finally{
+            A > 0 && clearTimeout(t), this.reader.releaseLock();
+        }
+    }
+    async setRTS(A) {
+        await this.device.setSignals({
+            requestToSend: A
+        }), await this.setDTR(this._DTR_state);
+    }
+    async setDTR(A) {
+        this._DTR_state = A, await this.device.setSignals({
+            dataTerminalReady: A
+        });
+    }
+    async connect(A = 115200, t = {}) {
+        await this.device.open({
+            baudRate: A,
+            dataBits: null == t ? void 0 : t.dataBits,
+            stopBits: null == t ? void 0 : t.stopBits,
+            bufferSize: null == t ? void 0 : t.bufferSize,
+            parity: null == t ? void 0 : t.parity,
+            flowControl: null == t ? void 0 : t.flowControl
+        }), this.baudrate = A, this.leftOver = new Uint8Array(0);
+    }
+    async sleep(A) {
+        return new Promise((t)=>setTimeout(t, A));
+    }
+    async waitForUnlock(A) {
+        for(; this.device.readable && this.device.readable.locked || this.device.writable && this.device.writable.locked;)await this.sleep(A);
+    }
+    async disconnect() {
+        var A, t;
+        (null === (A = this.device.readable) || void 0 === A ? void 0 : A.locked) && await (null === (t = this.reader) || void 0 === t ? void 0 : t.cancel()), await this.waitForUnlock(400), this.reader = void 0, await this.device.close();
+    }
+}
+function $ec3de3bad43fb783$var$_e(A) {
+    return new Promise((t)=>setTimeout(t, A));
+}
+async function $ec3de3bad43fb783$export$d3423661fbfd2b60(A, t = 50) {
+    await A.setDTR(!1), await A.setRTS(!0), await $ec3de3bad43fb783$var$_e(100), await A.setDTR(!0), await A.setRTS(!1), await $ec3de3bad43fb783$var$_e(t), await A.setDTR(!1);
+}
+async function $ec3de3bad43fb783$export$3252bdf5627aa8a3(A) {
+    await A.setRTS(!1), await A.setDTR(!1), await $ec3de3bad43fb783$var$_e(100), await A.setDTR(!0), await A.setRTS(!1), await $ec3de3bad43fb783$var$_e(100), await A.setRTS(!0), await A.setDTR(!1), await A.setRTS(!0), await $ec3de3bad43fb783$var$_e(100), await A.setRTS(!1), await A.setDTR(!1);
+}
+async function $ec3de3bad43fb783$export$4ff35e5b1175d6f6(A, t = !1) {
+    t ? (await $ec3de3bad43fb783$var$_e(200), await A.setRTS(!1), await $ec3de3bad43fb783$var$_e(200)) : (await $ec3de3bad43fb783$var$_e(100), await A.setRTS(!1));
+}
+function $ec3de3bad43fb783$export$929a22f56823f4cb(A) {
+    const t = [
+        "D",
+        "R",
+        "W"
+    ], e = A.split("|");
+    for (const A of e){
+        const e = A[0], i = A.slice(1);
+        if (!t.includes(e)) return !1;
+        if ("D" === e || "R" === e) {
+            if ("0" !== i && "1" !== i) return !1;
+        } else if ("W" === e) {
+            const A = parseInt(i);
+            if (isNaN(A) || A <= 0) return !1;
+        }
+    }
+    return !0;
+}
+async function $ec3de3bad43fb783$export$e5e6796b349bcc84(A, t) {
+    const e = {
+        D: async (t)=>await A.setDTR(t),
+        R: async (t)=>await A.setRTS(t),
+        W: async (A)=>await $ec3de3bad43fb783$var$_e(A)
+    };
+    try {
+        if (!$ec3de3bad43fb783$export$929a22f56823f4cb(t)) return;
+        const A = t.split("|");
+        for (const t of A){
+            const A = t[0], i = t.slice(1);
+            "W" === A ? await e.W(Number(i)) : "D" !== A && "R" !== A || await e[A]("1" === i);
+        }
+    } catch (A) {
+        throw new Error("Invalid custom reset sequence");
+    }
+}
+var $ec3de3bad43fb783$var$Se = function(A) {
+    return atob(A);
+};
+class $ec3de3bad43fb783$export$b0f7a6c745790308 {
+    constructor(A){
+        this.ESP_RAM_BLOCK = 6144, this.ESP_FLASH_BEGIN = 2, this.ESP_FLASH_DATA = 3, this.ESP_FLASH_END = 4, this.ESP_MEM_BEGIN = 5, this.ESP_MEM_END = 6, this.ESP_MEM_DATA = 7, this.ESP_WRITE_REG = 9, this.ESP_READ_REG = 10, this.ESP_SPI_ATTACH = 13, this.ESP_CHANGE_BAUDRATE = 15, this.ESP_FLASH_DEFL_BEGIN = 16, this.ESP_FLASH_DEFL_DATA = 17, this.ESP_FLASH_DEFL_END = 18, this.ESP_SPI_FLASH_MD5 = 19, this.ESP_ERASE_FLASH = 208, this.ESP_ERASE_REGION = 209, this.ESP_READ_FLASH = 210, this.ESP_RUN_USER_CODE = 211, this.ESP_IMAGE_MAGIC = 233, this.ESP_CHECKSUM_MAGIC = 239, this.ROM_INVALID_RECV_MSG = 5, this.ERASE_REGION_TIMEOUT_PER_MB = 3e4, this.ERASE_WRITE_TIMEOUT_PER_MB = 4e4, this.MD5_TIMEOUT_PER_MB = 8e3, this.CHIP_ERASE_TIMEOUT = 12e4, this.FLASH_READ_TIMEOUT = 1e5, this.MAX_TIMEOUT = 2 * this.CHIP_ERASE_TIMEOUT, this.CHIP_DETECT_MAGIC_REG_ADDR = 1073745920, this.DETECTED_FLASH_SIZES = {
+            18: "256KB",
+            19: "512KB",
+            20: "1MB",
+            21: "2MB",
+            22: "4MB",
+            23: "8MB",
+            24: "16MB"
+        }, this.DETECTED_FLASH_SIZES_NUM = {
+            18: 256,
+            19: 512,
+            20: 1024,
+            21: 2048,
+            22: 4096,
+            23: 8192,
+            24: 16384
+        }, this.USB_JTAG_SERIAL_PID = 4097, this.romBaudrate = 115200, this.debugLogging = !1, this.syncStubDetected = !1, this.checksum = function(A) {
+            let t, e = 239;
+            for(t = 0; t < A.length; t++)e ^= A[t];
+            return e;
+        }, this.timeoutPerMb = function(A, t) {
+            const e = A * (t / 1e6);
+            return e < 3e3 ? 3e3 : e;
+        }, this.flashSizeBytes = function(A) {
+            let t = -1;
+            return -1 !== A.indexOf("KB") ? t = 1024 * parseInt(A.slice(0, A.indexOf("KB"))) : -1 !== A.indexOf("MB") && (t = 1024 * parseInt(A.slice(0, A.indexOf("MB"))) * 1024), t;
+        }, this.IS_STUB = !1, this.FLASH_WRITE_SIZE = 16384, this.transport = A.transport, this.baudrate = A.baudrate, A.serialOptions && (this.serialOptions = A.serialOptions), A.romBaudrate && (this.romBaudrate = A.romBaudrate), A.terminal && (this.terminal = A.terminal, this.terminal.clean()), void 0 !== A.debugLogging && (this.debugLogging = A.debugLogging), A.port && (this.transport = new $ec3de3bad43fb783$export$86495b081fef8e52(A.port)), void 0 !== A.enableTracing && (this.transport.tracing = A.enableTracing), this.info("esptool.js"), this.info("Serial port " + this.transport.getInfo());
+    }
+    _sleep(A) {
+        return new Promise((t)=>setTimeout(t, A));
+    }
+    write(A, t = !0) {
+        this.terminal ? t ? this.terminal.writeLine(A) : this.terminal.write(A) : console.log(A);
+    }
+    error(A, t = !0) {
+        this.write(`Error: ${A}`, t);
+    }
+    info(A, t = !0) {
+        this.write(A, t);
+    }
+    debug(A, t = !0) {
+        this.debugLogging && this.write(`Debug: ${A}`, t);
+    }
+    _shortToBytearray(A) {
+        return new Uint8Array([
+            255 & A,
+            A >> 8 & 255
+        ]);
+    }
+    _intToByteArray(A) {
+        return new Uint8Array([
+            255 & A,
+            A >> 8 & 255,
+            A >> 16 & 255,
+            A >> 24 & 255
+        ]);
+    }
+    _byteArrayToShort(A, t) {
+        return A | t >> 8;
+    }
+    _byteArrayToInt(A, t, e, i) {
+        return A | t << 8 | e << 16 | i << 24;
+    }
+    _appendBuffer(A, t) {
+        const e = new Uint8Array(A.byteLength + t.byteLength);
+        return e.set(new Uint8Array(A), 0), e.set(new Uint8Array(t), A.byteLength), e.buffer;
+    }
+    _appendArray(A, t) {
+        const e = new Uint8Array(A.length + t.length);
+        return e.set(A, 0), e.set(t, A.length), e;
+    }
+    ui8ToBstr(A) {
+        let t = "";
+        for(let e = 0; e < A.length; e++)t += String.fromCharCode(A[e]);
+        return t;
+    }
+    bstrToUi8(A) {
+        const t = new Uint8Array(A.length);
+        for(let e = 0; e < A.length; e++)t[e] = A.charCodeAt(e);
+        return t;
+    }
+    async flushInput() {
+        try {
+            await this.transport.rawRead(200);
+        } catch (A) {
+            this.error(A.message);
+        }
+    }
+    async readPacket(t = null, e = 3e3) {
+        for(let i = 0; i < 100; i++){
+            const i = await this.transport.read(e), s = i[0], a = i[1], n = this._byteArrayToInt(i[4], i[5], i[6], i[7]), E = i.slice(8);
+            if (1 == s) {
+                if (null == t || a == t) return [
+                    n,
+                    E
+                ];
+                if (0 != E[0] && E[1] == this.ROM_INVALID_RECV_MSG) throw await this.flushInput(), new $ec3de3bad43fb783$var$A("unsupported command error");
+            }
+        }
+        throw new $ec3de3bad43fb783$var$A("invalid response");
+    }
+    async command(A = null, t = new Uint8Array(0), e = 0, i = !0, s = 3e3) {
+        if (null != A) {
+            this.transport.tracing && this.transport.trace(`command op:0x${A.toString(16).padStart(2, "0")} data len=${t.length} wait_response=${i ? 1 : 0} timeout=${(s / 1e3).toFixed(3)} data=${this.transport.hexConvert(t)}`);
+            const a = new Uint8Array(8 + t.length);
+            let n;
+            for(a[0] = 0, a[1] = A, a[2] = this._shortToBytearray(t.length)[0], a[3] = this._shortToBytearray(t.length)[1], a[4] = this._intToByteArray(e)[0], a[5] = this._intToByteArray(e)[1], a[6] = this._intToByteArray(e)[2], a[7] = this._intToByteArray(e)[3], n = 0; n < t.length; n++)a[8 + n] = t[n];
+            await this.transport.write(a);
+        }
+        return i ? this.readPacket(A, s) : [
+            0,
+            new Uint8Array(0)
+        ];
+    }
+    async readReg(A, t = 3e3) {
+        const e = this._intToByteArray(A);
+        return (await this.command(this.ESP_READ_REG, e, void 0, void 0, t))[0];
+    }
+    async writeReg(A, t, e = 4294967295, i = 0, s = 0) {
+        let a = this._appendArray(this._intToByteArray(A), this._intToByteArray(t));
+        a = this._appendArray(a, this._intToByteArray(e)), a = this._appendArray(a, this._intToByteArray(i)), s > 0 && (a = this._appendArray(a, this._intToByteArray(this.chip.UART_DATE_REG_ADDR)), a = this._appendArray(a, this._intToByteArray(0)), a = this._appendArray(a, this._intToByteArray(0)), a = this._appendArray(a, this._intToByteArray(s))), await this.checkCommand("write target memory", this.ESP_WRITE_REG, a);
+    }
+    async sync() {
+        this.debug("Sync");
+        const A = new Uint8Array(36);
+        let t;
+        for(A[0] = 7, A[1] = 7, A[2] = 18, A[3] = 32, t = 0; t < 32; t++)A[4 + t] = 85;
+        try {
+            const t = await this.command(8, A, void 0, void 0, 100);
+            return this.syncStubDetected = this.syncStubDetected && 0 === t[0], t;
+        } catch (A) {
+            throw this.debug("Sync err " + A), A;
+        }
+    }
+    async _connectAttempt(A = "default_reset", t = !1) {
+        if (this.debug("_connect_attempt " + A + " " + t), "no_reset" !== A) {
+            if (this.transport.getPid() === this.USB_JTAG_SERIAL_PID) await $ec3de3bad43fb783$export$3252bdf5627aa8a3(this.transport);
+            else {
+                const A = t ? "D0|R1|W100|W2000|D1|R0|W50|D0" : "D0|R1|W100|D1|R0|W50|D0";
+                await $ec3de3bad43fb783$export$e5e6796b349bcc84(this.transport, A);
+            }
+        }
+        let e = 0, i = !0;
+        for(; i;){
+            try {
+                e += (await this.transport.read(1e3)).length;
+            } catch (A) {
+                if (this.debug(A.message), A instanceof Error) {
+                    i = !1;
+                    break;
+                }
+            }
+            await this._sleep(50);
+        }
+        for(this.transport.slipReaderEnabled = !0, this.syncStubDetected = !0, e = 7; e--;){
+            try {
+                const A = await this.sync();
+                return this.debug(A[0].toString()), "success";
+            } catch (A) {
+                A instanceof Error && (t ? this.info("_", !1) : this.info(".", !1));
+            }
+            await this._sleep(50);
+        }
+        return "error";
+    }
+    async connect(t = "default_reset", e = 7, i = !1) {
+        let s, a;
+        for(this.info("Connecting...", !1), await this.transport.connect(this.romBaudrate, this.serialOptions), s = 0; s < e && (a = await this._connectAttempt(t, !1), "success" !== a) && (a = await this._connectAttempt(t, !0), "success" !== a); s++);
+        if ("success" !== a) throw new $ec3de3bad43fb783$var$A("Failed to connect with the device");
+        if (this.info("\n\r", !1), !i) {
+            const t = await this.readReg(1073745920) >>> 0;
+            this.debug("Chip Magic " + t.toString(16));
+            const e = await async function(A) {
+                switch(A){
+                    case 15736195:
+                        {
+                            const { ESP32ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$He;
+                            });
+                            return new A;
+                        }
+                    case 1867591791:
+                    case 2084675695:
+                        {
+                            const { ESP32C2ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$Ne;
+                            });
+                            return new A;
+                        }
+                    case 1763790959:
+                    case 456216687:
+                    case 1216438383:
+                    case 1130455151:
+                        {
+                            const { ESP32C3ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$be;
+                            });
+                            return new A;
+                        }
+                    case 752910447:
+                        {
+                            const { ESP32C6ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$Ve;
+                            });
+                            return new A;
+                        }
+                    case 285294703:
+                        {
+                            const { ESP32C5ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$si;
+                            });
+                            return new A;
+                        }
+                    case 3619110528:
+                        {
+                            const { ESP32H2ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$gi;
+                            });
+                            return new A;
+                        }
+                    case 9:
+                        {
+                            const { ESP32S3ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$Ii;
+                            });
+                            return new A;
+                        }
+                    case 1990:
+                        {
+                            const { ESP32S2ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$Ri;
+                            });
+                            return new A;
+                        }
+                    case 4293968129:
+                        {
+                            const { ESP8266ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$ui;
+                            });
+                            return new A;
+                        }
+                    case 0:
+                    case 182303440:
+                    case 117676761:
+                        {
+                            const { ESP32P4ROM: A } = await Promise.resolve().then(function() {
+                                return $ec3de3bad43fb783$var$Oi;
+                            });
+                            return new A;
+                        }
+                    default:
+                        return null;
+                }
+            }(t);
+            if (null === this.chip) throw new $ec3de3bad43fb783$var$A(`Unexpected CHIP magic value ${t}. Failed to autodetect chip type.`);
+            this.chip = e;
+        }
+    }
+    async detectChip(A = "default_reset") {
+        await this.connect(A), this.info("Detecting chip type... ", !1), null != this.chip ? this.info(this.chip.CHIP_NAME) : this.info("unknown!");
+    }
+    async checkCommand(A = "", t = null, e = new Uint8Array(0), i = 0, s = 3e3) {
+        this.debug("check_command " + A);
+        const a = await this.command(t, e, i, void 0, s);
+        return a[1].length > 4 ? a[1] : a[0];
+    }
+    async memBegin(A, t, e, i) {
+        this.debug("mem_begin " + A + " " + t + " " + e + " " + i.toString(16));
+        let s = this._appendArray(this._intToByteArray(A), this._intToByteArray(t));
+        s = this._appendArray(s, this._intToByteArray(e)), s = this._appendArray(s, this._intToByteArray(i)), await this.checkCommand("enter RAM download mode", this.ESP_MEM_BEGIN, s);
+    }
+    async memBlock(A, t) {
+        let e = this._appendArray(this._intToByteArray(A.length), this._intToByteArray(t));
+        e = this._appendArray(e, this._intToByteArray(0)), e = this._appendArray(e, this._intToByteArray(0)), e = this._appendArray(e, A);
+        const i = this.checksum(A);
+        await this.checkCommand("write to target RAM", this.ESP_MEM_DATA, e, i);
+    }
+    async memFinish(A) {
+        const t = 0 === A ? 1 : 0, e = this._appendArray(this._intToByteArray(t), this._intToByteArray(A));
+        await this.checkCommand("leave RAM download mode", this.ESP_MEM_END, e, void 0, 50);
+    }
+    async flashSpiAttach(A) {
+        const t = this._intToByteArray(A);
+        await this.checkCommand("configure SPI flash pins", this.ESP_SPI_ATTACH, t);
+    }
+    async flashBegin(A, t) {
+        const e = Math.floor((A + this.FLASH_WRITE_SIZE - 1) / this.FLASH_WRITE_SIZE), i = this.chip.getEraseSize(t, A), s = new Date, a = s.getTime();
+        let n = 3e3;
+        0 == this.IS_STUB && (n = this.timeoutPerMb(this.ERASE_REGION_TIMEOUT_PER_MB, A)), this.debug("flash begin " + i + " " + e + " " + this.FLASH_WRITE_SIZE + " " + t + " " + A);
+        let E = this._appendArray(this._intToByteArray(i), this._intToByteArray(e));
+        E = this._appendArray(E, this._intToByteArray(this.FLASH_WRITE_SIZE)), E = this._appendArray(E, this._intToByteArray(t)), 0 == this.IS_STUB && (E = this._appendArray(E, this._intToByteArray(0))), await this.checkCommand("enter Flash download mode", this.ESP_FLASH_BEGIN, E, void 0, n);
+        const h = s.getTime();
+        return 0 != A && 0 == this.IS_STUB && this.info("Took " + (h - a) / 1e3 + "." + (h - a) % 1e3 + "s to erase flash block"), e;
+    }
+    async flashDeflBegin(A, t, e) {
+        const i = Math.floor((t + this.FLASH_WRITE_SIZE - 1) / this.FLASH_WRITE_SIZE), s = Math.floor((A + this.FLASH_WRITE_SIZE - 1) / this.FLASH_WRITE_SIZE), a = new Date, n = a.getTime();
+        let E, h;
+        this.IS_STUB ? (E = A, h = 3e3) : (E = s * this.FLASH_WRITE_SIZE, h = this.timeoutPerMb(this.ERASE_REGION_TIMEOUT_PER_MB, E)), this.info("Compressed " + A + " bytes to " + t + "...");
+        let r = this._appendArray(this._intToByteArray(E), this._intToByteArray(i));
+        r = this._appendArray(r, this._intToByteArray(this.FLASH_WRITE_SIZE)), r = this._appendArray(r, this._intToByteArray(e)), "ESP32-S2" !== this.chip.CHIP_NAME && "ESP32-S3" !== this.chip.CHIP_NAME && "ESP32-C3" !== this.chip.CHIP_NAME && "ESP32-C2" !== this.chip.CHIP_NAME || !1 !== this.IS_STUB || (r = this._appendArray(r, this._intToByteArray(0))), await this.checkCommand("enter compressed flash mode", this.ESP_FLASH_DEFL_BEGIN, r, void 0, h);
+        const g = a.getTime();
+        return 0 != A && !1 === this.IS_STUB && this.info("Took " + (g - n) / 1e3 + "." + (g - n) % 1e3 + "s to erase flash block"), i;
+    }
+    async flashBlock(A, t, e) {
+        let i = this._appendArray(this._intToByteArray(A.length), this._intToByteArray(t));
+        i = this._appendArray(i, this._intToByteArray(0)), i = this._appendArray(i, this._intToByteArray(0)), i = this._appendArray(i, A);
+        const s = this.checksum(A);
+        await this.checkCommand("write to target Flash after seq " + t, this.ESP_FLASH_DATA, i, s, e);
+    }
+    async flashDeflBlock(A, t, e) {
+        let i = this._appendArray(this._intToByteArray(A.length), this._intToByteArray(t));
+        i = this._appendArray(i, this._intToByteArray(0)), i = this._appendArray(i, this._intToByteArray(0)), i = this._appendArray(i, A);
+        const s = this.checksum(A);
+        this.debug("flash_defl_block " + A[0].toString(16) + " " + A[1].toString(16)), await this.checkCommand("write compressed data to flash after seq " + t, this.ESP_FLASH_DEFL_DATA, i, s, e);
+    }
+    async flashFinish(A = !1) {
+        const t = A ? 0 : 1, e = this._intToByteArray(t);
+        await this.checkCommand("leave Flash mode", this.ESP_FLASH_END, e);
+    }
+    async flashDeflFinish(A = !1) {
+        const t = A ? 0 : 1, e = this._intToByteArray(t);
+        await this.checkCommand("leave compressed flash mode", this.ESP_FLASH_DEFL_END, e);
+    }
+    async runSpiflashCommand(t, e, i) {
+        const s = this.chip.SPI_REG_BASE, a = s + 0, n = s + this.chip.SPI_USR_OFFS, E = s + this.chip.SPI_USR1_OFFS, h = s + this.chip.SPI_USR2_OFFS, r = s + this.chip.SPI_W0_OFFS;
+        let g;
+        g = null != this.chip.SPI_MOSI_DLEN_OFFS ? async (A, t)=>{
+            const e = s + this.chip.SPI_MOSI_DLEN_OFFS, i = s + this.chip.SPI_MISO_DLEN_OFFS;
+            A > 0 && await this.writeReg(e, A - 1), t > 0 && await this.writeReg(i, t - 1);
+        } : async (A, t)=>{
+            const e = E, i = (0 === t ? 0 : t - 1) << 8 | (0 === A ? 0 : A - 1) << 17;
+            await this.writeReg(e, i);
+        };
+        const o = 262144;
+        if (i > 32) throw new $ec3de3bad43fb783$var$A("Reading more than 32 bits back from a SPI flash operation is unsupported");
+        if (e.length > 64) throw new $ec3de3bad43fb783$var$A("Writing more than 64 bytes of data with one SPI command is unsupported");
+        const B = 8 * e.length, w = await this.readReg(n), c = await this.readReg(h);
+        let C, I = -2147483648;
+        i > 0 && (I |= 268435456), B > 0 && (I |= 134217728), await g(B, i), await this.writeReg(n, I);
+        let _ = 1879048192 | t;
+        if (await this.writeReg(h, _), 0 == B) await this.writeReg(r, 0);
+        else {
+            if (e.length % 4 != 0) {
+                const A = new Uint8Array(e.length % 4);
+                e = this._appendArray(e, A);
+            }
+            let A = r;
+            for(C = 0; C < e.length - 4; C += 4)_ = this._byteArrayToInt(e[C], e[C + 1], e[C + 2], e[C + 3]), await this.writeReg(A, _), A += 4;
+        }
+        for(await this.writeReg(a, o), C = 0; C < 10 && (_ = await this.readReg(a) & o, 0 != _); C++);
+        if (10 === C) throw new $ec3de3bad43fb783$var$A("SPI command did not complete in time");
+        const l = await this.readReg(r);
+        return await this.writeReg(n, w), await this.writeReg(h, c), l;
+    }
+    async readFlashId() {
+        const A = new Uint8Array(0);
+        return await this.runSpiflashCommand(159, A, 24);
+    }
+    async eraseFlash() {
+        this.info("Erasing flash (this may take a while)...");
+        let A = new Date;
+        const t = A.getTime(), e = await this.checkCommand("erase flash", this.ESP_ERASE_FLASH, void 0, void 0, this.CHIP_ERASE_TIMEOUT);
+        A = new Date;
+        const i = A.getTime();
+        return this.info("Chip erase completed successfully in " + (i - t) / 1e3 + "s"), e;
+    }
+    toHex(A) {
+        return Array.prototype.map.call(A, (A)=>("00" + A.toString(16)).slice(-2)).join("");
+    }
+    async flashMd5sum(A, t) {
+        const e = this.timeoutPerMb(this.MD5_TIMEOUT_PER_MB, t);
+        let i = this._appendArray(this._intToByteArray(A), this._intToByteArray(t));
+        i = this._appendArray(i, this._intToByteArray(0)), i = this._appendArray(i, this._intToByteArray(0));
+        let s = await this.checkCommand("calculate md5sum", this.ESP_SPI_FLASH_MD5, i, void 0, e);
+        s instanceof Uint8Array && s.length > 16 && (s = s.slice(0, 16));
+        return this.toHex(s);
+    }
+    async readFlash(t, e, i = null) {
+        let s = this._appendArray(this._intToByteArray(t), this._intToByteArray(e));
+        s = this._appendArray(s, this._intToByteArray(4096)), s = this._appendArray(s, this._intToByteArray(1024));
+        const a = await this.checkCommand("read flash", this.ESP_READ_FLASH, s);
+        if (0 != a) throw new $ec3de3bad43fb783$var$A("Failed to read memory: " + a);
+        let n = new Uint8Array(0);
+        for(; n.length < e;){
+            const t = await this.transport.read(this.FLASH_READ_TIMEOUT);
+            if (!(t instanceof Uint8Array)) throw new $ec3de3bad43fb783$var$A("Failed to read memory: " + t);
+            t.length > 0 && (n = this._appendArray(n, t), await this.transport.write(this._intToByteArray(n.length)), i && i(t, n.length, e));
+        }
+        return n;
+    }
+    async runStub() {
+        if (this.syncStubDetected) return this.info("Stub is already running. No upload is necessary."), this.chip;
+        this.info("Uploading stub...");
+        let t = $ec3de3bad43fb783$var$Se(this.chip.ROM_TEXT), e = t.split("").map(function(A) {
+            return A.charCodeAt(0);
+        });
+        const i = new Uint8Array(e);
+        t = $ec3de3bad43fb783$var$Se(this.chip.ROM_DATA), e = t.split("").map(function(A) {
+            return A.charCodeAt(0);
+        });
+        const s = new Uint8Array(e);
+        let a, n = Math.floor((i.length + this.ESP_RAM_BLOCK - 1) / this.ESP_RAM_BLOCK);
+        for(await this.memBegin(i.length, n, this.ESP_RAM_BLOCK, this.chip.TEXT_START), a = 0; a < n; a++){
+            const A = a * this.ESP_RAM_BLOCK, t = A + this.ESP_RAM_BLOCK;
+            await this.memBlock(i.slice(A, t), a);
+        }
+        for(n = Math.floor((s.length + this.ESP_RAM_BLOCK - 1) / this.ESP_RAM_BLOCK), await this.memBegin(s.length, n, this.ESP_RAM_BLOCK, this.chip.DATA_START), a = 0; a < n; a++){
+            const A = a * this.ESP_RAM_BLOCK, t = A + this.ESP_RAM_BLOCK;
+            await this.memBlock(s.slice(A, t), a);
+        }
+        this.info("Running stub..."), await this.memFinish(this.chip.ENTRY);
+        for(let A = 0; A < 100; A++){
+            const A = await this.transport.read(1e3, 6);
+            if (79 === A[0] && 72 === A[1] && 65 === A[2] && 73 === A[3]) return this.info("Stub running..."), this.IS_STUB = !0, this.FLASH_WRITE_SIZE = 16384, this.chip;
+        }
+        throw new $ec3de3bad43fb783$var$A("Failed to start stub. Unexpected response");
+    }
+    async changeBaud() {
+        this.info("Changing baudrate to " + this.baudrate);
+        const A = this.IS_STUB ? this.transport.baudrate : 0, t = this._appendArray(this._intToByteArray(this.baudrate), this._intToByteArray(A)), e = await this.command(this.ESP_CHANGE_BAUDRATE, t);
+        this.debug(e[0].toString()), this.info("Changed"), await this.transport.disconnect(), await this._sleep(50), await this.transport.connect(this.baudrate, this.serialOptions);
+        try {
+            let A = 64;
+            for(; A--;){
+                try {
+                    await this.sync();
+                    break;
+                } catch (A) {
+                    this.debug(A.message);
+                }
+                await this._sleep(10);
+            }
+        } catch (A) {
+            this.debug(A.message);
+        }
+    }
+    async main(A = "default_reset") {
+        await this.detectChip(A);
+        const t = await this.chip.getChipDescription(this);
+        return this.info("Chip is " + t), this.info("Features: " + await this.chip.getChipFeatures(this)), this.info("Crystal is " + await this.chip.getCrystalFreq(this) + "MHz"), this.info("MAC: " + await this.chip.readMac(this)), await this.chip.readMac(this), void 0 !== this.chip.postConnect && await this.chip.postConnect(this), await this.runStub(), this.romBaudrate !== this.baudrate && await this.changeBaud(), t;
+    }
+    parseFlashSizeArg(t) {
+        if (void 0 === this.chip.FLASH_SIZES[t]) throw new $ec3de3bad43fb783$var$A("Flash size " + t + " is not supported by this chip type. Supported sizes: " + this.chip.FLASH_SIZES);
+        return this.chip.FLASH_SIZES[t];
+    }
+    _updateImageFlashParams(A, t, e, i, s) {
+        if (this.debug("_update_image_flash_params " + e + " " + i + " " + s), A.length < 8) return A;
+        if (t != this.chip.BOOTLOADER_FLASH_OFFSET) return A;
+        if ("keep" === e && "keep" === i && "keep" === s) return this.info("Not changing the image"), A;
+        const a = parseInt(A[0]);
+        let n = parseInt(A[2]);
+        const E = parseInt(A[3]);
+        if (a !== this.ESP_IMAGE_MAGIC) return this.info("Warning: Image file at 0x" + t.toString(16) + " doesn't look like an image file, so not changing any flash settings."), A;
+        if ("keep" !== i) n = ({
+            qio: 0,
+            qout: 1,
+            dio: 2,
+            dout: 3
+        })[i];
+        let h = 15 & E;
+        if ("keep" !== s) h = ({
+            "40m": 0,
+            "26m": 1,
+            "20m": 2,
+            "80m": 15
+        })[s];
+        let r = 240 & E;
+        "keep" !== e && (r = this.parseFlashSizeArg(e));
+        const g = n << 8 | h + r;
+        return this.info("Flash params set to " + g.toString(16)), parseInt(A[2]) !== n << 8 && (A = A.substring(0, 2) + (n << 8).toString() + A.substring(3)), parseInt(A[3]) !== h + r && (A = A.substring(0, 3) + (h + r).toString() + A.substring(4)), A;
+    }
+    async writeFlash(t) {
+        if (this.debug("EspLoader program"), "keep" !== t.flashSize) {
+            const e = this.flashSizeBytes(t.flashSize);
+            for(let i = 0; i < t.fileArray.length; i++)if (t.fileArray[i].data.length + t.fileArray[i].address > e) throw new $ec3de3bad43fb783$var$A(`File ${i + 1} doesn't fit in the available flash`);
+        }
+        let e, i;
+        !0 === this.IS_STUB && !0 === t.eraseAll && await this.eraseFlash();
+        for(let s = 0; s < t.fileArray.length; s++){
+            this.debug("Data Length " + t.fileArray[s].data.length), e = t.fileArray[s].data;
+            const a = t.fileArray[s].data.length % 4;
+            if (a > 0 && (e += "\xff\xff\xff\xff".substring(4 - a)), i = t.fileArray[s].address, this.debug("Image Length " + e.length), 0 === e.length) {
+                this.debug("Warning: File is empty");
+                continue;
+            }
+            e = this._updateImageFlashParams(e, i, t.flashSize, t.flashMode, t.flashFreq);
+            let n = null;
+            t.calculateMD5Hash && (n = t.calculateMD5Hash(e), this.debug("Image MD5 " + n));
+            const E = e.length;
+            let h;
+            if (t.compress) {
+                const A = this.bstrToUi8(e);
+                e = this.ui8ToBstr($ec3de3bad43fb783$var$ce(A, {
+                    level: 9
+                })), h = await this.flashDeflBegin(E, e.length, i);
+            } else h = await this.flashBegin(E, i);
+            let r = 0, g = 0;
+            const o = e.length;
+            t.reportProgress && t.reportProgress(s, 0, o);
+            let B = new Date;
+            const w = B.getTime();
+            let c = 5e3;
+            const C = new $ec3de3bad43fb783$var$Ce({
+                chunkSize: 1
+            });
+            let I = 0;
+            for(C.onData = function(A) {
+                I += A.byteLength;
+            }; e.length > 0;){
+                this.debug("Write loop " + i + " " + r + " " + h), this.info("Writing at 0x" + (i + I).toString(16) + "... (" + Math.floor(100 * (r + 1) / h) + "%)");
+                const a = this.bstrToUi8(e.slice(0, this.FLASH_WRITE_SIZE));
+                if (!t.compress) throw new $ec3de3bad43fb783$var$A("Yet to handle Non Compressed writes");
+                {
+                    const A = I;
+                    C.push(a, !1);
+                    const t = I - A;
+                    let e = 3e3;
+                    this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB, t) > 3e3 && (e = this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB, t)), !1 === this.IS_STUB && (c = e), await this.flashDeflBlock(a, r, c), this.IS_STUB && (c = e);
+                }
+                g += a.length, e = e.slice(this.FLASH_WRITE_SIZE, e.length), r++, t.reportProgress && t.reportProgress(s, g, o);
+            }
+            this.IS_STUB && await this.readReg(this.CHIP_DETECT_MAGIC_REG_ADDR, c), B = new Date;
+            const _ = B.getTime() - w;
+            if (t.compress && this.info("Wrote " + E + " bytes (" + g + " compressed) at 0x" + i.toString(16) + " in " + _ / 1e3 + " seconds."), n) {
+                const t = await this.flashMd5sum(i, E);
+                if (new String(t).valueOf() != new String(n).valueOf()) throw this.info("File  md5: " + n), this.info("Flash md5: " + t), new $ec3de3bad43fb783$var$A("MD5 of file does not match data in flash!");
+                this.info("Hash of data verified.");
+            }
+        }
+        this.info("Leaving..."), this.IS_STUB && (await this.flashBegin(0, 0), t.compress ? await this.flashDeflFinish() : await this.flashFinish());
+    }
+    async flashId() {
+        this.debug("flash_id");
+        const A = await this.readFlashId();
+        this.info("Manufacturer: " + (255 & A).toString(16));
+        const t = A >> 16 & 255;
+        this.info("Device: " + (A >> 8 & 255).toString(16) + t.toString(16)), this.info("Detected flash size: " + this.DETECTED_FLASH_SIZES[t]);
+    }
+    async getFlashSize() {
+        this.debug("flash_id");
+        const A = await this.readFlashId() >> 16 & 255;
+        return this.DETECTED_FLASH_SIZES_NUM[A];
+    }
+    async hardReset() {
+        await this.transport.setRTS(!0), await this._sleep(100), await this.transport.setRTS(!1);
+    }
+    async softReset() {
+        if (this.IS_STUB) {
+            if ("ESP8266" != this.chip.CHIP_NAME) throw new $ec3de3bad43fb783$var$A("Soft resetting is currently only supported on ESP8266");
+            await this.command(this.ESP_RUN_USER_CODE, void 0, void 0, !1);
+        } else await this.flashBegin(0, 0), await this.flashFinish(!1);
+    }
+}
+class $ec3de3bad43fb783$export$c643cc54d6326a6f {
+    getEraseSize(A, t) {
+        return t;
+    }
+}
+var $ec3de3bad43fb783$var$Fe = 1074521560, $ec3de3bad43fb783$var$Te = "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", $ec3de3bad43fb783$var$ue = 1074520064, $ec3de3bad43fb783$var$pe = "GOv8P9jnC0Bx6AtA8+wLQO3oC0CP6AtA7egLQEnpC0AG6gtAeOoLQCHqC0CB5wtAo+kLQPjpC0Bn6QtAmuoLQI7pC0Ca6gtAXegLQLPoC0Dt6AtASekLQHfoC0BM6wtAs+wLQKXmC0DX7AtApeYLQKXmC0Cl5gtApeYLQKXmC0Cl5gtApeYLQKXmC0Dz6gtApeYLQM3rC0Cz7AtA", $ec3de3bad43fb783$var$ye = 1073605544;
+class $ec3de3bad43fb783$var$ke extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+    constructor(){
+        super(...arguments), this.CHIP_NAME = "ESP32", this.IMAGE_CHIP_ID = 0, this.EFUSE_RD_REG_BASE = 1073061888, this.DR_REG_SYSCON_BASE = 1073111040, this.UART_CLKDIV_REG = 1072955412, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612856, this.XTAL_CLK_DIVIDER = 1, this.FLASH_SIZES = {
+            "1MB": 0,
+            "2MB": 16,
+            "4MB": 32,
+            "8MB": 48,
+            "16MB": 64
+        }, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 4096, this.SPI_REG_BASE = 1072963584, this.SPI_USR_OFFS = 28, this.SPI_USR1_OFFS = 32, this.SPI_USR2_OFFS = 36, this.SPI_W0_OFFS = 128, this.SPI_MOSI_DLEN_OFFS = 40, this.SPI_MISO_DLEN_OFFS = 44, this.TEXT_START = $ec3de3bad43fb783$var$ue, this.ENTRY = $ec3de3bad43fb783$var$Fe, this.DATA_START = $ec3de3bad43fb783$var$ye, this.ROM_DATA = $ec3de3bad43fb783$var$pe, this.ROM_TEXT = $ec3de3bad43fb783$var$Te;
+    }
+    async readEfuse(A, t) {
+        const e = this.EFUSE_RD_REG_BASE + 4 * t;
+        return A.debug("Read efuse " + e), await A.readReg(e);
+    }
+    async getPkgVersion(A) {
+        const t = await this.readEfuse(A, 3);
+        let e = t >> 9 & 7;
+        return e += (t >> 2 & 1) << 3, e;
+    }
+    async getChipRevision(A) {
+        const t = await this.readEfuse(A, 3), e = await this.readEfuse(A, 5), i = await A.readReg(this.DR_REG_SYSCON_BASE + 124);
+        return 0 != (t >> 15 & 1) ? 0 != (e >> 20 & 1) ? 0 != (i >> 31 & 1) ? 3 : 2 : 1 : 0;
+    }
+    async getChipDescription(A) {
+        const t = [
+            "ESP32-D0WDQ6",
+            "ESP32-D0WD",
+            "ESP32-D2WD",
+            "",
+            "ESP32-U4WDH",
+            "ESP32-PICO-D4",
+            "ESP32-PICO-V3-02"
+        ];
+        let e = "";
+        const i = await this.getPkgVersion(A), s = await this.getChipRevision(A), a = 3 == s;
+        return 0 != (1 & await this.readEfuse(A, 3)) && (t[0] = "ESP32-S0WDQ6", t[1] = "ESP32-S0WD"), a && (t[5] = "ESP32-PICO-V3"), e = i >= 0 && i <= 6 ? t[i] : "Unknown ESP32", !a || 0 !== i && 1 !== i || (e += "-V3"), e + " (revision " + s + ")";
+    }
+    async getChipFeatures(A) {
+        const t = [
+            "Wi-Fi"
+        ], e = await this.readEfuse(A, 3);
+        0 === (2 & e) && t.push(" BT");
+        0 !== (1 & e) ? t.push(" Single Core") : t.push(" Dual Core");
+        if (0 !== (8192 & e)) 0 !== (4096 & e) ? t.push(" 160MHz") : t.push(" 240MHz");
+        const i = await this.getPkgVersion(A);
+        -1 !== [
+            2,
+            4,
+            5,
+            6
+        ].indexOf(i) && t.push(" Embedded Flash"), 6 === i && t.push(" Embedded PSRAM");
+        0 !== (await this.readEfuse(A, 4) >> 8 & 31) && t.push(" VRef calibration in efuse");
+        0 !== (e >> 14 & 1) && t.push(" BLK3 partially reserved");
+        const s = 3 & await this.readEfuse(A, 6);
+        return t.push(" Coding Scheme " + [
+            "None",
+            "3/4",
+            "Repeat (UNSUPPORTED)",
+            "Invalid"
+        ][s]), t;
+    }
+    async getCrystalFreq(A) {
+        const t = await A.readReg(this.UART_CLKDIV_REG) & this.UART_CLKDIV_MASK, e = A.transport.baudrate * t / 1e6 / this.XTAL_CLK_DIVIDER;
+        let i;
+        return i = e > 33 ? 40 : 26, Math.abs(i - e) > 1 && A.info("WARNING: Unsupported crystal in use"), i;
+    }
+    _d2h(A) {
+        const t = (+A).toString(16);
+        return 1 === t.length ? "0" + t : t;
+    }
+    async readMac(A) {
+        let t = await this.readEfuse(A, 1);
+        t >>>= 0;
+        let e = await this.readEfuse(A, 2);
+        e >>>= 0;
+        const i = new Uint8Array(6);
+        return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+    }
+}
+var $ec3de3bad43fb783$var$He = Object.freeze({
+    __proto__: null,
+    ESP32ROM: $ec3de3bad43fb783$var$ke
+}), $ec3de3bad43fb783$var$Pe = 1077413532, $ec3de3bad43fb783$var$Oe = "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", $ec3de3bad43fb783$var$Ue = 1077411840, $ec3de3bad43fb783$var$Ge = "IGvIP3YKOEDGCjhAHgs4QMILOEAuDDhA3As4QEIJOEB+CzhAvgs4QDILOEDyCDhAZgs4QPIIOEBQCjhAlgo4QMYKOEAeCzhAYgo4QKYJOEDWCThAXgo4QIAOOEDGCjhARg04QDgOOEAyCDhAYA44QDIIOEAyCDhAMgg4QDIIOEAyCDhAMgg4QDIIOEAyCDhA4gw4QDIIOEBkDThAOA44QA==", $ec3de3bad43fb783$var$me = 1070164912;
+class $ec3de3bad43fb783$var$Ye extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+    constructor(){
+        super(...arguments), this.CHIP_NAME = "ESP32-C3", this.IMAGE_CHIP_ID = 5, this.EFUSE_BASE = 1610647552, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.UART_CLKDIV_REG = 1072955412, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612860, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 0, this.FLASH_SIZES = {
+            "1MB": 0,
+            "2MB": 16,
+            "4MB": 32,
+            "8MB": 48,
+            "16MB": 64
+        }, this.SPI_REG_BASE = 1610620928, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.TEXT_START = $ec3de3bad43fb783$var$Ue, this.ENTRY = $ec3de3bad43fb783$var$Pe, this.DATA_START = $ec3de3bad43fb783$var$me, this.ROM_DATA = $ec3de3bad43fb783$var$Ge, this.ROM_TEXT = $ec3de3bad43fb783$var$Oe;
+    }
+    async getPkgVersion(A) {
+        const t = this.EFUSE_BASE + 68 + 12;
+        return await A.readReg(t) >> 21 & 7;
+    }
+    async getChipRevision(A) {
+        const t = this.EFUSE_BASE + 68 + 12;
+        return (await A.readReg(t) & 1835008) >> 18;
+    }
+    async getChipDescription(A) {
+        let t;
+        t = 0 === await this.getPkgVersion(A) ? "ESP32-C3" : "unknown ESP32-C3";
+        return t += " (revision " + await this.getChipRevision(A) + ")", t;
+    }
+    async getFlashCap(A) {
+        const t = this.EFUSE_BASE + 68 + 12;
+        return await A.readReg(t) >> 27 & 7;
+    }
+    async getFlashVendor(A) {
+        const t = this.EFUSE_BASE + 68 + 16;
+        return ({
+            1: "XMC",
+            2: "GD",
+            3: "FM",
+            4: "TT",
+            5: "ZBIT"
+        })[await A.readReg(t) >> 0 & 7] || "";
+    }
+    async getChipFeatures(A) {
+        const t = [
+            "Wi-Fi",
+            "BLE"
+        ], e = await this.getFlashCap(A), i = await this.getFlashVendor(A), s = {
+            0: null,
+            1: "Embedded Flash 4MB",
+            2: "Embedded Flash 2MB",
+            3: "Embedded Flash 1MB",
+            4: "Embedded Flash 8MB"
+        }[e], a = void 0 !== s ? s : "Unknown Embedded Flash";
+        return null !== s && t.push(`${a} (${i})`), t;
+    }
+    async getCrystalFreq(A) {
+        return 40;
+    }
+    _d2h(A) {
+        const t = (+A).toString(16);
+        return 1 === t.length ? "0" + t : t;
+    }
+    async readMac(A) {
+        let t = await A.readReg(this.MAC_EFUSE_REG);
+        t >>>= 0;
+        let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+        e = e >>> 0 & 65535;
+        const i = new Uint8Array(6);
+        return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+    }
+    getEraseSize(A, t) {
+        return t;
+    }
+}
+var $ec3de3bad43fb783$var$be = Object.freeze({
+    __proto__: null,
+    ESP32C3ROM: $ec3de3bad43fb783$var$Ye
+}), $ec3de3bad43fb783$var$Ke = 1077413304, $ec3de3bad43fb783$var$xe = "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", $ec3de3bad43fb783$var$Le = 1077411840, $ec3de3bad43fb783$var$Je = "DEDKP+AIOEAsCThAhAk4QFIKOEC+CjhAbAo4QKgHOEAOCjhATgo4QJgJOEBYBzhAzAk4QFgHOEC6CDhA/gg4QCwJOECECThAzAg4QBIIOEBCCDhAyAg4QBYNOEAsCThA1gs4QMoMOECkBjhA9Aw4QKQGOECkBjhApAY4QKQGOECkBjhApAY4QKQGOECkBjhAcgs4QKQGOEDyCzhAygw4QA==", $ec3de3bad43fb783$var$ze = 1070295976;
+var $ec3de3bad43fb783$var$Ne = Object.freeze({
+    __proto__: null,
+    ESP32C2ROM: class extends $ec3de3bad43fb783$var$Ye {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-C2", this.IMAGE_CHIP_ID = 12, this.EFUSE_BASE = 1610647552, this.MAC_EFUSE_REG = this.EFUSE_BASE + 64, this.UART_CLKDIV_REG = 1610612756, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612860, this.XTAL_CLK_DIVIDER = 1, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 0, this.FLASH_SIZES = {
+                "1MB": 0,
+                "2MB": 16,
+                "4MB": 32,
+                "8MB": 48,
+                "16MB": 64
+            }, this.SPI_REG_BASE = 1610620928, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.TEXT_START = $ec3de3bad43fb783$var$Le, this.ENTRY = $ec3de3bad43fb783$var$Ke, this.DATA_START = $ec3de3bad43fb783$var$ze, this.ROM_DATA = $ec3de3bad43fb783$var$Je, this.ROM_TEXT = $ec3de3bad43fb783$var$xe;
+        }
+        async getPkgVersion(A) {
+            const t = this.EFUSE_BASE + 64 + 4;
+            return await A.readReg(t) >> 22 & 7;
+        }
+        async getChipRevision(A) {
+            const t = this.EFUSE_BASE + 64 + 4;
+            return (await A.readReg(t) & 3145728) >> 20;
+        }
+        async getChipDescription(A) {
+            let t;
+            const e = await this.getPkgVersion(A);
+            t = 0 === e || 1 === e ? "ESP32-C2" : "unknown ESP32-C2";
+            return t += " (revision " + await this.getChipRevision(A) + ")", t;
+        }
+        async getChipFeatures(A) {
+            return [
+                "Wi-Fi",
+                "BLE"
+            ];
+        }
+        async getCrystalFreq(A) {
+            const t = await A.readReg(this.UART_CLKDIV_REG) & this.UART_CLKDIV_MASK, e = A.transport.baudrate * t / 1e6 / this.XTAL_CLK_DIVIDER;
+            let i;
+            return i = e > 33 ? 40 : 26, Math.abs(i - e) > 1 && A.info("WARNING: Unsupported crystal in use"), i;
+        }
+        async changeBaudRate(A) {
+            26 === await this.getCrystalFreq(A) && A.changeBaud();
+        }
+        _d2h(A) {
+            const t = (+A).toString(16);
+            return 1 === t.length ? "0" + t : t;
+        }
+        async readMac(A) {
+            let t = await A.readReg(this.MAC_EFUSE_REG);
+            t >>>= 0;
+            let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+            e = e >>> 0 & 65535;
+            const i = new Uint8Array(6);
+            return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+        }
+        getEraseSize(A, t) {
+            return t;
+        }
+    }
+}), $ec3de3bad43fb783$var$ve = 1082132112, $ec3de3bad43fb783$var$je = "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", $ec3de3bad43fb783$var$Ze = 1082130432, $ec3de3bad43fb783$var$We = "HCuEQEIKgECSCoBA6gqAQI4LgED6C4BAqAuAQA4JgEBKC4BAiguAQP4KgEC+CIBAMguAQL4IgEAcCoBAYgqAQJIKgEDqCoBALgqAQHIJgECiCYBAKgqAQEwOgECSCoBAEg2AQAQOgED+B4BALA6AQP4HgED+B4BA/geAQP4HgED+B4BA/geAQP4HgED+B4BArgyAQP4HgEAwDYBABA6AQA==", $ec3de3bad43fb783$var$Xe = 1082469292;
+class $ec3de3bad43fb783$var$qe extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+    constructor(){
+        super(...arguments), this.CHIP_NAME = "ESP32-C6", this.IMAGE_CHIP_ID = 13, this.EFUSE_BASE = 1611335680, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.UART_CLKDIV_REG = 1072955412, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612860, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 0, this.FLASH_SIZES = {
+            "1MB": 0,
+            "2MB": 16,
+            "4MB": 32,
+            "8MB": 48,
+            "16MB": 64
+        }, this.SPI_REG_BASE = 1610620928, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.TEXT_START = $ec3de3bad43fb783$var$Ze, this.ENTRY = $ec3de3bad43fb783$var$ve, this.DATA_START = $ec3de3bad43fb783$var$Xe, this.ROM_DATA = $ec3de3bad43fb783$var$We, this.ROM_TEXT = $ec3de3bad43fb783$var$je;
+    }
+    async getPkgVersion(A) {
+        const t = this.EFUSE_BASE + 68 + 12;
+        return await A.readReg(t) >> 21 & 7;
+    }
+    async getChipRevision(A) {
+        const t = this.EFUSE_BASE + 68 + 12;
+        return (await A.readReg(t) & 1835008) >> 18;
+    }
+    async getChipDescription(A) {
+        let t;
+        t = 0 === await this.getPkgVersion(A) ? "ESP32-C6" : "unknown ESP32-C6";
+        return t += " (revision " + await this.getChipRevision(A) + ")", t;
+    }
+    async getChipFeatures(A) {
+        return [
+            "Wi-Fi 6",
+            "BT 5",
+            "IEEE802.15.4"
+        ];
+    }
+    async getCrystalFreq(A) {
+        return 40;
+    }
+    _d2h(A) {
+        const t = (+A).toString(16);
+        return 1 === t.length ? "0" + t : t;
+    }
+    async readMac(A) {
+        let t = await A.readReg(this.MAC_EFUSE_REG);
+        t >>>= 0;
+        let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+        e = e >>> 0 & 65535;
+        const i = new Uint8Array(6);
+        return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+    }
+    getEraseSize(A, t) {
+        return t;
+    }
+}
+var $ec3de3bad43fb783$var$Ve = Object.freeze({
+    __proto__: null,
+    ESP32C6ROM: $ec3de3bad43fb783$var$qe
+}), $ec3de3bad43fb783$var$$e = 1082132164, $ec3de3bad43fb783$var$Ai = "QREixCbCBsa39wBgEUc3BIRA2Mu39ABgEwQEANxAkYuR57JAIkSSREEBgoCIQBxAE3X1D4KX3bcBEbcHAGBOxoOphwBKyDcJhEAmylLEBs4izLcEAGB9WhMJCQDATBN09D8N4PJAYkQjqDQBQknSRLJJIkoFYYKAiECDJwkAE3X1D4KXfRTjGUT/yb8TBwAMlEGqh2MY5QCFR4XGI6AFAHlVgoAFR2OH5gAJRmONxgB9VYKAQgUTB7ANQYVjlecCiUecwfW3kwbADWMW1QCYwRMFAAyCgJMG0A19VWOV1wCYwRMFsA2CgLc1hUBBEZOFhboGxmE/Y0UFBrc3hUCThweyA6cHCAPWRwgTdfUPkwYWAMIGwYIjktcIMpcjAKcAA9dHCJFnk4cHBGMe9wI3t4RAEwcHsqFnupcDpgcIt/aEQLc3hUCThweyk4YGtmMf5gAjpscII6DXCCOSBwghoPlX4wb1/LJAQQGCgCOm1wgjoOcI3bc3NwBgfEudi/X/NycAYHxLnYv1/4KAQREGxt03tzcAYCOmBwI3BwAImMOYQ33/yFeyQBNF9f8FiUEBgoBBEQbG2T993TcHAEC3NwBgmMM3NwBgHEP9/7JAQQGCgEERIsQ3hIRAkwdEAUrAA6kHAQbGJsJjCgkERTc5xb1HEwREAYFEY9YnAQREvYiTtBQAfTeFPxxENwaAABOXxwCZ4DcGAAG39v8AdY+3NgBg2MKQwphCff9BR5HgBUczCelAupcjKCQBHMSyQCJEkkQCSUEBgoABEQbOIswlNzcEzj9sABMFRP+XAID/54Cg86qHBUWV57JHk/cHID7GiTc3NwBgHEe3BkAAEwVE/9WPHMeyRZcAgP/ngCDxMzWgAPJAYkQFYYKAQRG3h4RABsaTh0cBBUcjgOcAE9fFAJjHBWd9F8zDyMf5jTqVqpWxgYzLI6oHAEE3GcETBVAMskBBAYKAAREizDeEhECTB0QBJsrER07GBs5KyKqJEwREAWPzlQCuhKnAAylEACaZE1nJABxIY1XwABxEY175ArU9fd1IQCaGzoWXAID/54Ag5BN19Q8BxZMHQAxcyFxAppdcwFxEhY9cxPJAYkTSREJJskkFYYKAaTVtv0ERBsaXAID/54CA1gNFhQGyQHUVEzUVAEEBgoBBEQbGxTcNxbcHhECThwcA1EOZzjdnCWATB8cQHEM3Bv3/fRbxjzcGAwDxjtWPHMOyQEEBgoBBEQbGbTcRwQ1FskBBARcDgP9nAIPMQREGxibCIsSqhJcAgP/ngKDJWTcNyTcHhECTBgcAg9eGABMEBwCFB8IHwYMjlPYAkwYADGOG1AATB+ADY3X3AG03IxQEALJAIkSSREEBgoBBEQbGEwcADGMa5QATBbANRTcTBcANskBBAVm/EwewDeMb5f5xNxMF0A31t0ERIsQmwgbGKoSzBLUAYxeUALJAIkSSREEBgoADRQQABQRNP+23NXEmy07H/XKFaf10Is1KyVLFVsMGz5OEhPoWkZOHCQemlxgIs4TnACqJJoUuhJcAgP/ngEAxk4cJBxgIBWq6l7OKR0Ex5AVnfXWTBYX6kwcHBxMFhfkUCKqXM4XXAJMHBweul7OF1wAqxpcAgP/ngAAuMkXBRZU3AUWFYhaR+kBqRNpESkm6SSpKmkoNYYKAooljc4oAhWlOhtaFSoWXAID/54DAxhN19Q8B7U6G1oUmhZcAgP/ngEApTpkzBDRBUbcTBTAGVb8TBQAMSb0xcf1yBWdO11LVVtNezwbfIt0m20rZWtFizWbLaslux/13FpETBwcHPpccCLqXPsYjqgf4qokuirKKtov1M5MHAAIZwbcHAgA+hZcAgP/ngCAghWdj5VcTBWR9eRMJifqTBwQHypcYCDOJ5wBKhZcAgP/ngGAgfXsTDDv5kwyL+RMHBAeTBwQHFAhil+aXgUQzDNcAs4zXAFJNY3xNCWPxpANBqJk/ooUIAY01uTcihgwBSoWXAID/54BAHKKZopRj9UQDs4ekQWPxdwMzBJpAY/OKAFaEIoYMAU6FlwCA/+eAALYTdfUPVd0CzAFEeV2NTaMJAQBihZcAgP/ngECkffkDRTEB5oWFNGNPBQDj4o3+hWeThwcHopcYCLqX2pcjiqf4BQTxt+MVpf2RR+MF9PYFZ311kwcHB5MFhfoTBYX5FAiqlzOF1wCTBwcHrpezhdcAKsaXAID/54BgEnE9MkXBRWUzUT3BMbcHAgAZ4ZMHAAI+hZcAgP/ngKANhWIWkfpQalTaVEpZulkqWppaClv6S2pM2kxKTbpNKWGCgLdXQUkZcZOH94QBRYbeotym2srYztbS1NbS2tDezuLM5srqyO7GPs6XAID/54DAnaE5Ec23Zwlgk4fHEJhDtwaEQCOi5gC3BgMAVY+Ywy05Bc23JwtgN0fYUJOGh8ETBxeqmMIThgfAIyAGACOgBgCThgfCmMKTh8fBmEM3BgQAUY+YwyOgBgC3B4RANzeFQJOHBwATBwe7IaAjoAcAkQfj7ef+XTuRRWgIyTF9M7e3hECThweyIWc+lyMg9wi3B4BANwmEQJOHhw4jIPkAtzmFQF0+EwkJAJOJCbJjBgUQtwcBYBMHEAIjqOcMhUVFRZcAgP/ngAD5twWAQAFGk4UFAEVFlwCA/+eAQPq39wBgEUeYyzcFAgCXAID/54CA+bcXCWCIX4FFt4SEQHGJYRUTNRUAlwCA/+eAgJ/BZ/0XEwcAEIVmQWa3BQABAUWThEQBtwqEQA1qlwCA/+eAQJUTi0oBJpqDp8kI9d+Dq8kIhUcjpgkIIwLxAoPHGwAJRyMT4QKjAvECAtRNR2OB5whRR2OP5wYpR2Of5wCDxzsAA8crAKIH2Y8RR2OW5wCDp4sAnEM+1FUxoUVIEEU+g8c7AAPHKwCiB9mPEWdBB2N09wQTBbANKT4TBcANET4TBeAOOTadOUG3twWAQAFGk4WFAxVFlwCA/+eAQOs3BwBgXEcTBQACk+cXEFzHMbfJRyMT8QJNtwPHGwDRRmPn5gKFRmPm5gABTBME8A+FqHkXE3f3D8lG4+jm/rc2hUAKB5OGRrs2lxhDAoeTBgcDk/b2DxFG42nW/BMH9wITd/cPjUZj6+YItzaFQAoHk4YGwDaXGEMChxMHQAJjmOcQAtQdRAFFtTQBRWU8wT75NqFFSBB9FOE8dfQBTAFEE3X0D0U0E3X8D2k8TT7jHgTqg8cbAElHY2j3MAlH43b36vUXk/f3Dz1H42D36jc3hUCKBxMHB8G6l5xDgocFRJ3rcBCBRQFFl/B//+eAgHEd4dFFaBCtPAFEMagFRIHvl/B//+eAQHczNKAAKaAhR2OF5wAFRAFMYbcDrIsAA6TLALNnjADSB/X37/D/hX3xwWwinP0cfX0zBYxAVdyzd5UBlePBbDMFjEBj5owC/XwzBYxAVdAxgZfwf//ngMBzVflmlPW3MYGX8H//54DAclXxapTRt0GBl/B//+eAAHJR+TMElEHBtyFH44nn8AFMEwQADDG3QUfNv0FHBUTjnOf2g6XLAAOliwD1MrG/QUcFROOS5/YDpwsBkWdj6uceg6VLAQOliwDv8D+BNb9BRwVE45Ln9IOnCwERZ2Nq9xwDp8sAg6VLAQOliwAzhOcC7/Cv/iOsBAAjJIqwMbcDxwQAYwMHFAOniwDBFxMEAAxjE/cAwEgBR5MG8A5jRvcCg8dbAAPHSwABTKIH2Y8Dx2sAQgddj4PHewDiB9mP44H25hMEEAypvTOG6wADRoYBBQexjuG3g8cEAP3H3ERjnQcUwEgjgAQAfbVhR2OW5wKDp8sBA6eLAYOmSwEDpgsBg6XLAAOliwCX8H//54CAYiqMMzSgACm1AUwFRBG1EUcFROOa5+a3lwBgtF9ld30XBWb5jtGOA6WLALTftFeBRfmO0Y601/Rf+Y7RjvTf9FN1j1GP+NOX8H//54CgZSm9E/f3AOMVB+qT3EcAE4SLAAFMfV3jdJzbSESX8H//54AgSBhEVEAQQPmOYwenARxCE0f3/32P2Y4UwgUMQQTZvxFHpbVBRwVE45fn3oOniwADp0sBIyj5ACMm6QB1u4MlyQDBF5Hlic8BTBMEYAyJuwMnCQFjZvcGE/c3AOMZB+IDKAkBAUYBRzMF6ECzhuUAY2n3AOMEBtIjKKkAIybZADG7M4brABBOEQeQwgVG6b8hRwVE45Hn2AMkCQEZwBMEgAwjKAkAIyYJADM0gAClswFMEwQgDO2xAUwTBIAMzbEBTBMEkAzpuRMHIA1jg+cMEwdADeOb57gDxDsAg8crACIEXYyX8H//54CASAOsxABBFGNzhAEijOMJDLbAQGKUMYCcSGNV8ACcRGNb9Arv8O/Ldd3IQGKGk4WLAZfwf//ngIBEAcWTB0AM3MjcQOKX3MDcRLOHh0HcxJfwf//ngGBDJbYJZRMFBXEDrMsAA6SLAJfwf//ngKAytwcAYNhLtwYAAcEWk1dHARIHdY+9i9mPs4eHAwFFs9WHApfwf//ngAA0EwWAPpfwf//ngEAv6byDpksBA6YLAYOlywADpYsA7/Av/NG0g8U7AIPHKwAThYsBogXdjcEV7/DP1XW07/AvxT2/A8Q7AIPHKwATjIsBIgRdjNxEQRTN45FHhUtj/4cIkweQDNzIQbQDpw0AItAFSLOH7EA+1oMnirBjc/QADUhCxjrE7/CvwCJHMkg3hYRA4oV8EJOGSgEQEBMFxQKX8H//54CgMTe3hECTCEcBglcDp4iwg6UNAB2MHY8+nLJXI6TosKqLvpUjoL0Ak4dKAZ2NAcWhZ2OX9QBahe/wb8sjoG0BCcTcRJnD409w92PfCwCTB3AMvbeFS7c9hUC3jIRAk40Nu5OMTAHpv+OdC5zcROOKB5yTB4AMqbeDp4sA45MHnO/wb9MJZRMFBXGX8H//54CgHO/w786X8H//54BgIVWyA6TLAOMPBJjv8O/QEwWAPpfwf//ngEAa7/CPzAKUUbLv8A/M9lBmVNZURlm2WSZalloGW/ZLZkzWTEZNtk0JYYKAAAA=", $ec3de3bad43fb783$var$ti = 1082130432, $ec3de3bad43fb783$var$ei = "FACEQG4KgEC+CoBAFguAQOQLgEBQDIBA/guAQDoJgECgC4BA4AuAQCoLgEDqCIBAXguAQOoIgEBICoBAjgqAQL4KgEAWC4BAWgqAQJ4JgEDOCYBAVgqAQKgOgEC+CoBAaA2AQGAOgEAqCIBAiA6AQCoIgEAqCIBAKgiAQCoIgEAqCIBAKgiAQCoIgEAqCIBABA2AQCoIgECGDYBAYA6AQA==", $ec3de3bad43fb783$var$ii = 1082469296;
+var $ec3de3bad43fb783$var$si = Object.freeze({
+    __proto__: null,
+    ESP32C5ROM: class extends $ec3de3bad43fb783$var$qe {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-C5", this.IMAGE_CHIP_ID = 23, this.EFUSE_BASE = 1611352064, this.EFUSE_BLOCK1_ADDR = this.EFUSE_BASE + 68, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.UART_CLKDIV_REG = 1610612756, this.TEXT_START = $ec3de3bad43fb783$var$ti, this.ENTRY = $ec3de3bad43fb783$var$$e, this.DATA_START = $ec3de3bad43fb783$var$ii, this.ROM_DATA = $ec3de3bad43fb783$var$ei, this.ROM_TEXT = $ec3de3bad43fb783$var$Ai, this.EFUSE_RD_REG_BASE = this.EFUSE_BASE + 48, this.EFUSE_PURPOSE_KEY0_REG = this.EFUSE_BASE + 52, this.EFUSE_PURPOSE_KEY0_SHIFT = 24, this.EFUSE_PURPOSE_KEY1_REG = this.EFUSE_BASE + 52, this.EFUSE_PURPOSE_KEY1_SHIFT = 28, this.EFUSE_PURPOSE_KEY2_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY2_SHIFT = 0, this.EFUSE_PURPOSE_KEY3_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY3_SHIFT = 4, this.EFUSE_PURPOSE_KEY4_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY4_SHIFT = 8, this.EFUSE_PURPOSE_KEY5_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY5_SHIFT = 12, this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG = this.EFUSE_RD_REG_BASE, this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT = 1048576, this.EFUSE_SPI_BOOT_CRYPT_CNT_REG = this.EFUSE_BASE + 52, this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK = 1835008, this.EFUSE_SECURE_BOOT_EN_REG = this.EFUSE_BASE + 56, this.EFUSE_SECURE_BOOT_EN_MASK = 1048576, this.IROM_MAP_START = 1107296256, this.IROM_MAP_END = 1115684864, this.DROM_MAP_START = 1115684864, this.DROM_MAP_END = 1124073472, this.PCR_SYSCLK_CONF_REG = 1611227408, this.PCR_SYSCLK_XTAL_FREQ_V = 2130706432, this.PCR_SYSCLK_XTAL_FREQ_S = 24, this.XTAL_CLK_DIVIDER = 1, this.UARTDEV_BUF_NO = 1082520860, this.CHIP_DETECT_MAGIC_VALUE = [
+                285294703
+            ], this.FLASH_FREQUENCY = {
+                "80m": 15,
+                "40m": 0,
+                "20m": 2
+            }, this.MEMORY_MAP = [
+                [
+                    0,
+                    65536,
+                    "PADDING"
+                ],
+                [
+                    1115684864,
+                    1124073472,
+                    "DROM"
+                ],
+                [
+                    1082130432,
+                    1082523648,
+                    "DRAM"
+                ],
+                [
+                    1082130432,
+                    1082523648,
+                    "BYTE_ACCESSIBLE"
+                ],
+                [
+                    1073979392,
+                    1074003968,
+                    "DROM_MASK"
+                ],
+                [
+                    1073741824,
+                    1073979392,
+                    "IROM_MASK"
+                ],
+                [
+                    1107296256,
+                    1115684864,
+                    "IROM"
+                ],
+                [
+                    1082130432,
+                    1082523648,
+                    "IRAM"
+                ],
+                [
+                    1342177280,
+                    1342193664,
+                    "RTC_IRAM"
+                ],
+                [
+                    1342177280,
+                    1342193664,
+                    "RTC_DRAM"
+                ],
+                [
+                    1611653120,
+                    1611661312,
+                    "MEM_INTERNAL2"
+                ]
+            ], this.UF2_FAMILY_ID = 4145808195, this.EFUSE_MAX_KEY = 5, this.KEY_PURPOSES = {
+                0: "USER/EMPTY",
+                1: "ECDSA_KEY",
+                2: "XTS_AES_256_KEY_1",
+                3: "XTS_AES_256_KEY_2",
+                4: "XTS_AES_128_KEY",
+                5: "HMAC_DOWN_ALL",
+                6: "HMAC_DOWN_JTAG",
+                7: "HMAC_DOWN_DIGITAL_SIGNATURE",
+                8: "HMAC_UP",
+                9: "SECURE_BOOT_DIGEST0",
+                10: "SECURE_BOOT_DIGEST1",
+                11: "SECURE_BOOT_DIGEST2",
+                12: "KM_INIT_KEY"
+            };
+        }
+        async getPkgVersion(A) {
+            return await A.readReg(this.EFUSE_BLOCK1_ADDR + 8) >> 26 & 7;
+        }
+        async getMinorChipVersion(A) {
+            return await A.readReg(this.EFUSE_BLOCK1_ADDR + 8) >> 0 & 15;
+        }
+        async getMajorChipVersion(A) {
+            return await A.readReg(this.EFUSE_BLOCK1_ADDR + 8) >> 4 & 3;
+        }
+        async getChipDescription(A) {
+            let t;
+            t = 0 === await this.getPkgVersion(A) ? "ESP32-C5" : "unknown ESP32-C5";
+            return `${t} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`;
+        }
+        async getCrystalFreq(A) {
+            const t = await A.readReg(this.UART_CLKDIV_REG) & this.UART_CLKDIV_MASK, e = A.transport.baudrate * t / 1e6 / this.XTAL_CLK_DIVIDER;
+            let i;
+            return i = e > 45 ? 48 : e > 33 ? 40 : 26, Math.abs(i - e) > 1 && A.info("WARNING: Unsupported crystal in use"), i;
+        }
+        async getCrystalFreqRomExpect(A) {
+            return (await A.readReg(this.PCR_SYSCLK_CONF_REG) & this.PCR_SYSCLK_XTAL_FREQ_V) >> this.PCR_SYSCLK_XTAL_FREQ_S;
+        }
+    }
+}), $ec3de3bad43fb783$var$ai = 1082132112, $ec3de3bad43fb783$var$ni = "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", $ec3de3bad43fb783$var$Ei = 1082130432, $ec3de3bad43fb783$var$hi = "EACDQEIKgECSCoBA6gqAQI4LgED6C4BAqAuAQA4JgEBKC4BAiguAQP4KgEC+CIBAMguAQL4IgEAcCoBAYgqAQJIKgEDqCoBALgqAQHIJgECiCYBAKgqAQFIOgECSCoBAEg2AQAoOgED+B4BAMg6AQP4HgED+B4BA/geAQP4HgED+B4BA/geAQP4HgED+B4BArgyAQP4HgEAwDYBACg6AQA==", $ec3de3bad43fb783$var$ri = 1082403756;
+var $ec3de3bad43fb783$var$gi = Object.freeze({
+    __proto__: null,
+    ESP32H2ROM: class extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-H2", this.IMAGE_CHIP_ID = 16, this.EFUSE_BASE = 1610647552, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.UART_CLKDIV_REG = 1072955412, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612860, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 0, this.FLASH_SIZES = {
+                "1MB": 0,
+                "2MB": 16,
+                "4MB": 32,
+                "8MB": 48,
+                "16MB": 64
+            }, this.SPI_REG_BASE = 1610620928, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.USB_RAM_BLOCK = 2048, this.UARTDEV_BUF_NO_USB = 3, this.UARTDEV_BUF_NO = 1070526796, this.TEXT_START = $ec3de3bad43fb783$var$Ei, this.ENTRY = $ec3de3bad43fb783$var$ai, this.DATA_START = $ec3de3bad43fb783$var$ri, this.ROM_DATA = $ec3de3bad43fb783$var$hi, this.ROM_TEXT = $ec3de3bad43fb783$var$ni;
+        }
+        async getChipDescription(A) {
+            return this.CHIP_NAME;
+        }
+        async getChipFeatures(A) {
+            return [
+                "BLE",
+                "IEEE802.15.4"
+            ];
+        }
+        async getCrystalFreq(A) {
+            return 32;
+        }
+        _d2h(A) {
+            const t = (+A).toString(16);
+            return 1 === t.length ? "0" + t : t;
+        }
+        async postConnect(A) {
+            const t = 255 & await A.readReg(this.UARTDEV_BUF_NO);
+            A.debug("In _post_connect " + t), t == this.UARTDEV_BUF_NO_USB && (A.ESP_RAM_BLOCK = this.USB_RAM_BLOCK);
+        }
+        async readMac(A) {
+            let t = await A.readReg(this.MAC_EFUSE_REG);
+            t >>>= 0;
+            let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+            e = e >>> 0 & 65535;
+            const i = new Uint8Array(6);
+            return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+        }
+        getEraseSize(A, t) {
+            return t;
+        }
+    }
+}), $ec3de3bad43fb783$var$oi = 1077381696, $ec3de3bad43fb783$var$Bi = "FIADYACAA2BIAMo/BIADYDZBAIH7/wxJwCAAmQjGBAAAgfj/wCAAqAiB9/+goHSICOAIACH2/8AgAIgCJ+jhHfAAAAAIAABgHAAAYBAAAGA2QQAh/P/AIAA4AkH7/8AgACgEICCUnOJB6P9GBAAMODCIAcAgAKgIiASgoHTgCAALImYC6Ib0/yHx/8AgADkCHfAAAOwryz9kq8o/hIAAAEBAAACk68o/8CvLPzZBALH5/yCgdBARIKUrAZYaBoH2/5KhAZCZEZqYwCAAuAmR8/+goHSaiMAgAJIYAJCQ9BvJwMD0wCAAwlgAmpvAIACiSQDAIACSGACB6v+QkPSAgPSHmUeB5f+SoQGQmRGamMAgAMgJoeX/seP/h5wXxgEAfOiHGt7GCADAIACJCsAgALkJRgIAwCAAuQrAIACJCZHX/5qIDAnAIACSWAAd8AAAVCAAYFQwAGA2QQCR/f/AIACICYCAJFZI/5H6/8AgAIgJgIAkVkj/HfAAAAAsIABgACAAYAAAAAg2QQAQESCl/P8h+v8MCMAgAIJiAJH6/4H4/8AgAJJoAMAgAJgIVnn/wCAAiAJ88oAiMCAgBB3wAAAAAEA2QQAQESDl+/8Wav+B7P+R+//AIACSaADAIACYCFZ5/x3wAAAUKABANkEAIKIggf3/4AgAHfAAAHDi+j8IIABgvAoAQMgKAEA2YQAQESBl9P8x+f+9Aa0Dgfr/4AgATQoMEuzqiAGSogCQiBCJARARIOX4/5Hy/6CiAcAgAIgJoIggwCAAiQm4Aa0Dge7/4AgAoCSDHfAAAFgAyj//DwAABCAAQOgIAEA2QQCB+/8MGZJIADCcQZkokfn/ORgpODAwtJoiKjMwPEEMAjlIKViB9P/gCAAnGgiB8//gCAAGAwAQESAl9v8tCowaIqDFHfC4CABANoEAgev/4AgAHAYGDAAAAGBUQwwIDBrQlREMjTkx7QKJYalRmUGJIYkR2QEsDwzMDEuB8v/gCABQRMBaM1oi5hTNDAId8AAA////AAQgAGD0CABADAkAQAAJAEA2gQAx0f8oQxaCERARIGXm/xb6EAz4DAQnqAyIIwwSgIA0gCSTIEB0EBEgZej/EBEgJeH/gcf/4AgAFjoKqCOB6/9AKhEW9AQnKDyBwv/gCACB6P/gCADoIwwCDBqpYalRHI9A7hEMjcKg2AxbKUEpMSkhKREpAYHK/+AIAIG1/+AIAIYCAAAAoKQhgdv/4AgAHAoGIAAAACcoOYGu/+AIAIHU/+AIAOgjDBIcj0DuEQyNLAwMW60CKWEpUUlBSTFJIUkRSQGBtv/gCACBov/gCABGAQCByf/gCAAMGoYNAAAoIwwZQCIRkIkBzBSAiQGRv/+QIhCRvv/AIAAiaQAhW//AIACCYgDAIACIAlZ4/xwKDBJAooMoQ6AiwClDKCOqIikjHfAAADaBAIGK/+AIACwGhg8AAACBr//gCABgVEMMCAwa0JUR7QKpYalRiUGJMZkhORGJASwPDI3CoBKyoASBj//gCACBe//gCABaM1oiUETA5hS/HfAAABQKAEA2YQBBcf9YNFAzYxajC1gUWlNQXEFGAQAQESBl5v9oRKYWBWIkAmel7hARIGXM/xZq/4Fn/+AIABaaBmIkAYFl/+AIAGBQdIKhAFB4wHezCM0DvQKtBgYPAM0HvQKtBlLV/xARICX0/zpVUFhBDAjGBQAAAADCoQCJARARIKXy/4gBctcBG4iAgHRwpoBwsoBXOOFww8AQESDl8P+BTv/gCACGBQCoFM0DvQKB1P/gCACgoHSMSiKgxCJkBSgUOiIpFCg0MCLAKTQd8ABcBwBANkEAgf7/4AgAggoYDAmCyPwMEoApkx3wNkEAgfj/4AgAggoYDAmCyP0MEoApkx3wvP/OP0QAyj9MAMo/QCYAQDQmAEDQJgBANmEAfMitAoeTLTH3/8YFAACoAwwcvQGB9//gCACBj/6iAQCICOAIAKgDgfP/4AgA5hrdxgoAAABmAyYMA80BDCsyYQCB7v/gCACYAYHo/zeZDagIZhoIMeb/wCAAokMAmQgd8EAAyj8AAMo/KCYAQDZBACH8/4Hc/8gCqAix+v+B+//gCAAMCIkCHfCQBgBANkEAEBEgpfP/jLqB8v+ICIxIEBEgpfz/EBEg5fD/FioAoqAEgfb/4AgAHfBIBgBANkEAEBEgpfD/vBqR5v+ICRuoqQmR5f8MCoqZIkkAgsjBDBmAqYOggHTMiqKvQKoiIJiTnNkQESBl9/9GBQCtAoHv/+AIABARIOXq/4xKEBEg5ff/HfAAADZBAKKgwBARIOX5/x3wAAA2QQCCoMCtAoeSEaKg2xARIGX4/6Kg3EYEAAAAAIKg24eSCBARICX3/6Kg3RARIKX2/x3wNkEAOjLGAgAAogIAGyIQESCl+/83kvEd8AAAAFwcAEAgCgBAaBwAQHQcAEA2ISGi0RCB+v/gCABGEAAAAAwUQEQRgcb+4AgAQENjzQS9AYyqrQIQESCltf8GAgAArQKB8P/gCACgoHT8Ws0EELEgotEQgez/4AgASiJAM8BWw/siogsQIrAgoiCy0RCB5//gCACtAhwLEBEgZfb/LQOGAAAioGMd8AAAiCYAQIQbAECUJgBAkBsAQDZBABARIGXb/6yKDBNBcf/wMwGMsqgEgfb/4AgArQPGCQCtA4H0/+AIAKgEgfP/4AgABgkAEBEgpdb/DBjwiAEsA6CDg60IFpIAgez/4AgAhgEAAIHo/+AIAB3wYAYAQDZBIWKkHeBmERpmWQYMF1KgAGLREFClIEB3EVJmGhARIOX3/0e3AsZCAK0Ggbb/4AgAxi8AUHPAgYP+4AgAQHdjzQe9AYy6IKIgEBEgpaT/BgIAAK0Cgaz/4AgAoKB0jJoMCIJmFn0IBhIAABARIGXj/70HrQEQESDl5v8QESBl4v/NBxCxIGCmIIGg/+AIAHoielU3tcmSoQfAmRGCpB0ameCIEZgJGoiICJB1wIc3gwbr/wwJkkZsoqQbEKqggc//4AgAVgr/sqILogZsELuwEBEg5acA9+oS9kcPkqINEJmwepmiSQAbd4bx/3zpl5rBZkcSgqEHkiYawIgRGoiZCDe5Ape1iyKiCxAisL0GrQKBf//gCAAQESCl2P+tAhwLEBEgJdz/EBEgpdf/DBoQESDl5v8d8AAAyj9PSEFJsIAAYKE62FCYgABguIAAYCoxHY+0gABg9CvLP6yAN0CYIAxg7IE3QKyFN0AIAAhggCEMYBCAN0AQgANgUIA3QAwAAGA4QABglCzLP///AAAsgQBgjIAAABBAAAD4K8s/CCzLP1AAyj9UAMo/VCzLPxQAAGDw//8A9CvLP2Qryj9wAMo/gAcAQHgbAEC4JgBAZCYAQHQfAEDsCgBAVAkAQFAKAEAABgBAHCkAQCQnAEAIKABA5AYAQHSBBECcCQBA/AkAQAgKAECoBgBAhAkAQGwJAECQCQBAKAgAQNgGAEA24QAhxv8MCinBgeb/4AgAEBEgJbH/FpoEMcH/IcL/QcL/wCAAKQMMAsAgACkEwCAAKQNRvv8xvv9hvv/AIAA5BcAgADgGfPQQRAFAMyDAIAA5BsAgACkFxgEAAEkCSyIGAgAhrf8xtP9CoAA3MuwQESAlwf8MS6LBMBARIKXE/yKhARARIOW//0Fz/ZAiESokwCAASQIxqf8hS/05AhARIKWp/y0KFvoFIar+wav+qAIMK4Gt/uAIADGh/7Gi/xwaDAzAIACpA4G4/+AIAAwa8KoBgSr/4AgAsZv/qAIMFYGz/+AIAKgCgSL/4AgAqAKBsP/gCAAxlf/AIAAoA1AiIMAgACkDhhgAEBEgZaH/vBoxj/8cGrGP/8AgAKJjACDCIIGh/+AIADGM/wxFwCAAKAMMGlAiIMAgACkD8KoBxggAAACxhv/NCgxagZf/4AgAMYP/UqEBwCAAKAMsClAiIMAgACkDgQX/4AgAgZL/4AgAIXz/wCAAKALMuhzDMCIQIsL4DBMgo4MMC4GL/+AIAIGk/eAIAIzaoXP/gYj/4AgAgaH94AgA8XH/DB0MHAwb4qEAQN0RAMwRYLsBDAqBgP/gCAAha/8qRCGU/WLSK4YXAAAAUWH+wCAAMgUAMDB0FtMEDBrwqgHAIAAiRQCB4f7gCACionHAqhGBcv/gCACBcf/gCABxWv986MAgADgHfPqAMxAQqgHAIAA5B4Fr/+AIAIFr/+AIAK0CgWr/4AgAwCAAKAQWovkMB8AgADgEDBLAIAB5BCJBJCIDAQwoeaEiQSWCURMcN3cSJBxHdxIhZpIhIgMDcgMCgCIRcCIgZkISKCPAIAAoAimhhgEAAAAcIiJRExARIKWf/7KgCKLBJBARICWj/7IDAyIDAoC7ESBbICE0/yAg9FeyGqKgwBARIOWd/6Kg7hARIGWd/xARICWc/wba/yIDARxHJzc39iIbxvgAACLCLyAgdLZCAgYlAHEm/3AioCgCoAIAACLC/iAgdBwnJ7cCBu8AcSD/cCKgKAKgAgBywjBwcHS2V8VG6QAsSQwHIqDAlxUCRucAeaEMcq0HEBEgpZb/rQcQESAllv8QESCllP8QESBllP8Mi6LBJCLC/xARIKWX/1Yi/UZEAAwSVqU1wsEQvQWtBYEd/+AIAFaqNBxLosEQEBEgZZX/hrAADBJWdTOBF//gCACgJYPGygAmhQQMEsbIAHgjKDMghyCAgLRW2P4QESClQv8qd6zaBvj/AIEd/eAIAFBcQZwKrQWBRf3gCACGAwAAItLwRgMArQWBBf/gCAAW6v4G7f8gV8DMEsaWAFCQ9FZp/IYLAIEO/eAIAFBQ9ZxKrQWBNf3gCACGBAAAfPgAiBGKIkYDAK0Fgfb+4AgAFqr+Bt3/DBkAmREgV8AnOcVGCwAAAACB/vzgCABQXEGcCq0FgSb94AgAhgMAACLS8EYDAK0Fgeb+4AgAFur+Bs7/IFfAVuL8hncADAcioMAmhQLGlQAMBy0HBpQAJrX1BmoADBImtQIGjgC4M6gjDAcQESDlhv+gJ4OGiQAMGWa1X4hDIKkRDAcioMKHugLGhgC4U6gjkmEREBEg5Tf/kiERoJeDRg4ADBlmtTSIQyCpEQwHIqDCh7oCBnwAKDO4U6gjIHiCkmEREBEg5TT/Ic78DAiSIRGJYiLSK3JiAqCYgy0JBm8AAJHI/AwHogkAIqDGd5oCBm0AeCOyxfAioMC3lwEoWQwHkqDvRgIAeoOCCBgbd4CZMLcn8oIDBXIDBICIEXCIIHIDBgB3EYB3IIIDB4CIAXCIIICZwIKgwQwHkCiThlkAgbD8IqDGkggAfQkWiRWYOAwHIqDIdxkCxlIAKFiSSABGTgAciQwHDBKXFQLGTQD4c+hj2FPIQ7gzqCOBi/7gCAAMCH0KoCiDxkYAAAAMEiZFAsZBAKgjDAuBgf7gCAAGIAAAUJA0DAcioMB3GQJGPQBQVEGLw3z4Rg8AqDyCYRKSYRHCYRCBef7gCADCIRCCIRIoLHgcqAySIRFwchAmAg3AIADYCiAoMNAiECB3IMAgAHkKG5nCzBBXOb7Gk/9mRQJGkv8MByKgwEYmAAwSJrUCxiEAIVX+iFN4I4kCIVT+eQIMAgYdAKFQ/gwH6AoMGbLF8I0HLQewKZPgiYMgiBAioMZ3mF/BSv59CNgMIqDJtz1SsPAUIqDAVp8ELQiGAgAAKoOIaEsiiQeNCSp+IP3AtzLtFmjd+Qx5CsZz/wAMEmaFFyE6/ogCjBiCoMgMB3kCITb+eQIMEoAngwwHBgEADAcioP8goHQQESDlXP9woHQQESBlXP8QESDlWv9WYrUiAwEcJyc3IPYyAgbS/iLC/SAgdAz3J7cChs7+cSX+cCKgKAKgAgAAAHKg0ncSX3Kg1HeSAgYhAMbG/igzOCMQESDlQf+NClbKsKKiccCqEYJhEoEl/uAIAHEX/pEX/sAgAHgHgiEScLQ1wHcRkHcQcLsgILuCrQgwu8KBJP7gCACio+iBGf7gCABGsv4AANhTyEO4M6gjEBEgpWb/hq3+ALIDAyIDAoC7ESC7ILLL8KLDGBARICUs/4am/gAiAwNyAwKAIhFwIiCBEv7gCABxHPwiwvCIN4AiYxaSp4gXioKAjEFGAwAAAIJhEhARIKUQ/4IhEpInBKYZBZInApeo5xARIKX2/hZq/6gXzQKywxiBAf7gCACMOjKgxDlXOBcqMzkXODcgI8ApN4H7/eAIAIaI/gAAcgMCIsMYMgMDDBmAMxFwMyAyw/AGIwBx3P2Bi/uYBzmxkIjAiUGIJgwZh7MBDDmSYREQESDlCP+SIRGB1P2ZAegHodP93QggsiDCwSzywRCCYRKB5f3gCAC4Jp0KqLGCIRKgu8C5JqAzwLgHqiKoQQwMqrsMGrkHkMqDgLvAwNB0VowAwtuAwK2TFmoBrQiCYRKSYREQESClGv+CIRKSIRGCZwBR2ft4NYyjkI8xkIjA1igAVvf11qkAMdT7IqDHKVNGAACMOYz3BlX+FheVUc/7IqDIKVWGUf4xzPsioMkpU8ZO/igjVmKTEBEg5S//oqJxwKoRga/94AgAgbv94AgAxkb+KDMWYpEQESDlLf+io+iBqP3gCADgAgBGQP4d8AAANkEAnQKCoMAoA4eZD8wyDBKGBwAMAikDfOKGDwAmEgcmIhiGAwAAAIKg24ApI4eZKgwiKQN88kYIAAAAIqDcJ5kKDBIpAy0IBgQAAACCoN188oeZBgwSKQMioNsd8AAA", $ec3de3bad43fb783$var$wi = 1077379072, $ec3de3bad43fb783$var$ci = "ZCvKP8qNN0CvjjdAcJM3QDqPN0DPjjdAOo83QJmPN0BmkDdA2ZA3QIGQN0BVjTdA/I83QFiQN0C8jzdA+5A3QOaPN0D7kDdAnY43QPqON0A6jzdAmY83QLWON0CWjTdAvJE3QDaTN0ByjDdAVpM3QHKMN0ByjDdAcow3QHKMN0ByjDdAcow3QHKMN0ByjDdAVpE3QHKMN0BRkjdANpM3QAQInwAAAAAAAAAYAQQIBQAAAAAAAAAIAQQIBgAAAAAAAAAAAQQIIQAAAAAAIAAAEQQI3AAAAAAAIAAAEQQIDAAAAAAAIAAAAQQIEgAAAAAAIAAAESAoDAAQAQAA", $ec3de3bad43fb783$var$Ci = 1070279668;
+var $ec3de3bad43fb783$var$Ii = Object.freeze({
+    __proto__: null,
+    ESP32S3ROM: class extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-S3", this.IMAGE_CHIP_ID = 9, this.EFUSE_BASE = 1610641408, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.UART_CLKDIV_REG = 1610612756, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612864, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 0, this.FLASH_SIZES = {
+                "1MB": 0,
+                "2MB": 16,
+                "4MB": 32,
+                "8MB": 48,
+                "16MB": 64
+            }, this.SPI_REG_BASE = 1610620928, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.USB_RAM_BLOCK = 2048, this.UARTDEV_BUF_NO_USB = 3, this.UARTDEV_BUF_NO = 1070526796, this.TEXT_START = $ec3de3bad43fb783$var$wi, this.ENTRY = $ec3de3bad43fb783$var$oi, this.DATA_START = $ec3de3bad43fb783$var$Ci, this.ROM_DATA = $ec3de3bad43fb783$var$ci, this.ROM_TEXT = $ec3de3bad43fb783$var$Bi;
+        }
+        async getChipDescription(A) {
+            return "ESP32-S3";
+        }
+        async getFlashCap(A) {
+            const t = this.EFUSE_BASE + 68 + 12;
+            return await A.readReg(t) >> 27 & 7;
+        }
+        async getFlashVendor(A) {
+            const t = this.EFUSE_BASE + 68 + 16;
+            return ({
+                1: "XMC",
+                2: "GD",
+                3: "FM",
+                4: "TT",
+                5: "BY"
+            })[await A.readReg(t) >> 0 & 7] || "";
+        }
+        async getPsramCap(A) {
+            const t = this.EFUSE_BASE + 68 + 16;
+            return await A.readReg(t) >> 3 & 3;
+        }
+        async getPsramVendor(A) {
+            const t = this.EFUSE_BASE + 68 + 16;
+            return ({
+                1: "AP_3v3",
+                2: "AP_1v8"
+            })[await A.readReg(t) >> 7 & 3] || "";
+        }
+        async getChipFeatures(A) {
+            const t = [
+                "Wi-Fi",
+                "BLE"
+            ], e = await this.getFlashCap(A), i = await this.getFlashVendor(A), s = {
+                0: null,
+                1: "Embedded Flash 8MB",
+                2: "Embedded Flash 4MB"
+            }[e], a = void 0 !== s ? s : "Unknown Embedded Flash";
+            null !== s && t.push(`${a} (${i})`);
+            const n = await this.getPsramCap(A), E = await this.getPsramVendor(A), h = {
+                0: null,
+                1: "Embedded PSRAM 8MB",
+                2: "Embedded PSRAM 2MB"
+            }[n], r = void 0 !== h ? h : "Unknown Embedded PSRAM";
+            return null !== h && t.push(`${r} (${E})`), t;
+        }
+        async getCrystalFreq(A) {
+            return 40;
+        }
+        _d2h(A) {
+            const t = (+A).toString(16);
+            return 1 === t.length ? "0" + t : t;
+        }
+        async postConnect(A) {
+            const t = 255 & await A.readReg(this.UARTDEV_BUF_NO);
+            A.debug("In _post_connect " + t), t == this.UARTDEV_BUF_NO_USB && (A.ESP_RAM_BLOCK = this.USB_RAM_BLOCK);
+        }
+        async readMac(A) {
+            let t = await A.readReg(this.MAC_EFUSE_REG);
+            t >>>= 0;
+            let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+            e = e >>> 0 & 65535;
+            const i = new Uint8Array(6);
+            return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+        }
+        getEraseSize(A, t) {
+            return t;
+        }
+    }
+}), $ec3de3bad43fb783$var$_i = 1073907696, $ec3de3bad43fb783$var$li = "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", $ec3de3bad43fb783$var$di = 1073905664, $ec3de3bad43fb783$var$Mi = "ZCv9PzaLAkDBiwJAhpACQEqMAkDjiwJASowCQKmMAkByjQJA5Y0CQI2NAkDAigJAC40CQGSNAkDMjAJACI4CQPaMAkAIjgJAr4sCQA6MAkBKjAJAqYwCQMeLAkACiwJAx44CQD2QAkDYiQJAZZACQNiJAkDYiQJA2IkCQNiJAkDYiQJA2IkCQNiJAkDYiQJAZI4CQNiJAkBZjwJAPZACQA==", $ec3de3bad43fb783$var$Di = 1073622012;
+var $ec3de3bad43fb783$var$Ri = Object.freeze({
+    __proto__: null,
+    ESP32S2ROM: class extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-S2", this.IMAGE_CHIP_ID = 2, this.MAC_EFUSE_REG = 1061265476, this.EFUSE_BASE = 1061265408, this.UART_CLKDIV_REG = 1061158932, this.UART_CLKDIV_MASK = 1048575, this.UART_DATE_REG_ADDR = 1610612856, this.FLASH_WRITE_SIZE = 1024, this.BOOTLOADER_FLASH_OFFSET = 4096, this.FLASH_SIZES = {
+                "1MB": 0,
+                "2MB": 16,
+                "4MB": 32,
+                "8MB": 48,
+                "16MB": 64
+            }, this.SPI_REG_BASE = 1061167104, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_W0_OFFS = 88, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.TEXT_START = $ec3de3bad43fb783$var$di, this.ENTRY = $ec3de3bad43fb783$var$_i, this.DATA_START = $ec3de3bad43fb783$var$Di, this.ROM_DATA = $ec3de3bad43fb783$var$Mi, this.ROM_TEXT = $ec3de3bad43fb783$var$li;
+        }
+        async getPkgVersion(A) {
+            const t = this.EFUSE_BASE + 68 + 12;
+            return await A.readReg(t) >> 21 & 15;
+        }
+        async getChipDescription(A) {
+            const t = [
+                "ESP32-S2",
+                "ESP32-S2FH16",
+                "ESP32-S2FH32"
+            ], e = await this.getPkgVersion(A);
+            return e >= 0 && e <= 2 ? t[e] : "unknown ESP32-S2";
+        }
+        async getFlashCap(A) {
+            const t = this.EFUSE_BASE + 68 + 12;
+            return await A.readReg(t) >> 21 & 15;
+        }
+        async getPsramCap(A) {
+            const t = this.EFUSE_BASE + 68 + 12;
+            return await A.readReg(t) >> 28 & 15;
+        }
+        async getBlock2Version(A) {
+            const t = this.EFUSE_BASE + 92 + 16;
+            return await A.readReg(t) >> 4 & 7;
+        }
+        async getChipFeatures(A) {
+            const t = [
+                "Wi-Fi"
+            ], e = {
+                0: "No Embedded Flash",
+                1: "Embedded Flash 2MB",
+                2: "Embedded Flash 4MB"
+            }[await this.getFlashCap(A)] || "Unknown Embedded Flash";
+            t.push(e);
+            const i = {
+                0: "No Embedded Flash",
+                1: "Embedded PSRAM 2MB",
+                2: "Embedded PSRAM 4MB"
+            }[await this.getPsramCap(A)] || "Unknown Embedded PSRAM";
+            t.push(i);
+            const s = {
+                0: "No calibration in BLK2 of efuse",
+                1: "ADC and temperature sensor calibration in BLK2 of efuse V1",
+                2: "ADC and temperature sensor calibration in BLK2 of efuse V2"
+            }[await this.getBlock2Version(A)] || "Unknown Calibration in BLK2";
+            return t.push(s), t;
+        }
+        async getCrystalFreq(A) {
+            return 40;
+        }
+        _d2h(A) {
+            const t = (+A).toString(16);
+            return 1 === t.length ? "0" + t : t;
+        }
+        async readMac(A) {
+            let t = await A.readReg(this.MAC_EFUSE_REG);
+            t >>>= 0;
+            let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+            e = e >>> 0 & 65535;
+            const i = new Uint8Array(6);
+            return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+        }
+        getEraseSize(A, t) {
+            return t;
+        }
+    }
+}), $ec3de3bad43fb783$var$Si = 1074843652, $ec3de3bad43fb783$var$Qi = "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", $ec3de3bad43fb783$var$fi = 1074843648, $ec3de3bad43fb783$var$Fi = "CIH+PwUFBAACAwcAAwMLALnXEEDv1xBAHdgQQLrYEEBo5xBAHtkQQHTZEEDA2RBAaOcQQILaEED/2hBAwNsQQGjnEEBo5xBAWNwQQGjnEEA33xBAAOAQQDvgEEBo5xBAaOcQQNfgEEBo5xBAv+EQQGXiEECj4xBAY+QQQDTlEEBo5xBAaOcQQGjnEEBo5xBAYuYQQGjnEEBX5xBAkN0QQI/YEECm5RBAq9oQQPzZEEBo5xBA7OYQQDHnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQCLaEEBf2hBAvuUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA", $ec3de3bad43fb783$var$Ti = 1073720488;
+var $ec3de3bad43fb783$var$ui = Object.freeze({
+    __proto__: null,
+    ESP8266ROM: class extends $ec3de3bad43fb783$export$c643cc54d6326a6f {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP8266", this.CHIP_DETECT_MAGIC_VALUE = [
+                4293968129
+            ], this.EFUSE_RD_REG_BASE = 1072693328, this.UART_CLKDIV_REG = 1610612756, this.UART_CLKDIV_MASK = 1048575, this.XTAL_CLK_DIVIDER = 2, this.FLASH_WRITE_SIZE = 16384, this.BOOTLOADER_FLASH_OFFSET = 0, this.UART_DATE_REG_ADDR = 0, this.FLASH_SIZES = {
+                "512KB": 0,
+                "256KB": 16,
+                "1MB": 32,
+                "2MB": 48,
+                "4MB": 64,
+                "2MB-c1": 80,
+                "4MB-c1": 96,
+                "8MB": 128,
+                "16MB": 144
+            }, this.SPI_REG_BASE = 1610613248, this.SPI_USR_OFFS = 28, this.SPI_USR1_OFFS = 32, this.SPI_USR2_OFFS = 36, this.SPI_MOSI_DLEN_OFFS = 0, this.SPI_MISO_DLEN_OFFS = 0, this.SPI_W0_OFFS = 64, this.TEXT_START = $ec3de3bad43fb783$var$fi, this.ENTRY = $ec3de3bad43fb783$var$Si, this.DATA_START = $ec3de3bad43fb783$var$Ti, this.ROM_DATA = $ec3de3bad43fb783$var$Fi, this.ROM_TEXT = $ec3de3bad43fb783$var$Qi, this.getChipFeatures = async (A)=>{
+                const t = [
+                    "WiFi"
+                ];
+                return "ESP8285" == await this.getChipDescription(A) && t.push("Embedded Flash"), t;
+            };
+        }
+        async readEfuse(A, t) {
+            const e = this.EFUSE_RD_REG_BASE + 4 * t;
+            return A.debug("Read efuse " + e), await A.readReg(e);
+        }
+        async getChipDescription(A) {
+            const t = await this.readEfuse(A, 2);
+            return 0 != (16 & await this.readEfuse(A, 0) | 65536 & t) ? "ESP8285" : "ESP8266EX";
+        }
+        async getCrystalFreq(A) {
+            const t = await A.readReg(this.UART_CLKDIV_REG) & this.UART_CLKDIV_MASK, e = A.transport.baudrate * t / 1e6 / this.XTAL_CLK_DIVIDER;
+            let i;
+            return i = e > 33 ? 40 : 26, Math.abs(i - e) > 1 && A.info("WARNING: Detected crystal freq " + e + "MHz is quite different to normalized freq " + i + "MHz. Unsupported crystal in use?"), i;
+        }
+        _d2h(A) {
+            const t = (+A).toString(16);
+            return 1 === t.length ? "0" + t : t;
+        }
+        async readMac(A) {
+            let t = await this.readEfuse(A, 0);
+            t >>>= 0;
+            let e = await this.readEfuse(A, 1);
+            e >>>= 0;
+            let i = await this.readEfuse(A, 3);
+            i >>>= 0;
+            const s = new Uint8Array(6);
+            return 0 != i ? (s[0] = i >> 16 & 255, s[1] = i >> 8 & 255, s[2] = 255 & i) : 0 == (e >> 16 & 255) ? (s[0] = 24, s[1] = 254, s[2] = 52) : 1 == (e >> 16 & 255) ? (s[0] = 172, s[1] = 208, s[2] = 116) : A.error("Unknown OUI"), s[3] = e >> 8 & 255, s[4] = 255 & e, s[5] = t >> 24 & 255, this._d2h(s[0]) + ":" + this._d2h(s[1]) + ":" + this._d2h(s[2]) + ":" + this._d2h(s[3]) + ":" + this._d2h(s[4]) + ":" + this._d2h(s[5]);
+        }
+        getEraseSize(A, t) {
+            return t;
+        }
+    }
+}), $ec3de3bad43fb783$var$pi = 1341195918, $ec3de3bad43fb783$var$yi = "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", $ec3de3bad43fb783$var$ki = 1341194240, $ec3de3bad43fb783$var$Hi = "EAD1TwYK8U9WCvFPrgrxT4QL8U/wC/FPngvxT9QI8U9AC/FPgAvxT8IK8U+ECPFP9grxT4QI8U/gCfFPJgrxT1YK8U+uCvFP8gnxTzgJ8U9oCfFP7gnxT0AO8U9WCvFPCA3xTwAO8U/EB/FPJA7xT8QH8U/EB/FPxAfxT8QH8U/EB/FPxAfxT8QH8U/EB/FPpAzxT8QH8U8mDfFPAA7xTw==", $ec3de3bad43fb783$var$Pi = 1341533100;
+var $ec3de3bad43fb783$var$Oi = Object.freeze({
+    __proto__: null,
+    ESP32P4ROM: class extends $ec3de3bad43fb783$var$ke {
+        constructor(){
+            super(...arguments), this.CHIP_NAME = "ESP32-P4", this.IMAGE_CHIP_ID = 18, this.IROM_MAP_START = 1073741824, this.IROM_MAP_END = 1275068416, this.DROM_MAP_START = 1073741824, this.DROM_MAP_END = 1275068416, this.BOOTLOADER_FLASH_OFFSET = 8192, this.CHIP_DETECT_MAGIC_VALUE = [
+                0,
+                182303440
+            ], this.UART_DATE_REG_ADDR = 1343004812, this.EFUSE_BASE = 1343410176, this.EFUSE_BLOCK1_ADDR = this.EFUSE_BASE + 68, this.MAC_EFUSE_REG = this.EFUSE_BASE + 68, this.SPI_REG_BASE = 1342754816, this.SPI_USR_OFFS = 24, this.SPI_USR1_OFFS = 28, this.SPI_USR2_OFFS = 32, this.SPI_MOSI_DLEN_OFFS = 36, this.SPI_MISO_DLEN_OFFS = 40, this.SPI_W0_OFFS = 88, this.EFUSE_RD_REG_BASE = this.EFUSE_BASE + 48, this.EFUSE_PURPOSE_KEY0_REG = this.EFUSE_BASE + 52, this.EFUSE_PURPOSE_KEY0_SHIFT = 24, this.EFUSE_PURPOSE_KEY1_REG = this.EFUSE_BASE + 52, this.EFUSE_PURPOSE_KEY1_SHIFT = 28, this.EFUSE_PURPOSE_KEY2_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY2_SHIFT = 0, this.EFUSE_PURPOSE_KEY3_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY3_SHIFT = 4, this.EFUSE_PURPOSE_KEY4_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY4_SHIFT = 8, this.EFUSE_PURPOSE_KEY5_REG = this.EFUSE_BASE + 56, this.EFUSE_PURPOSE_KEY5_SHIFT = 12, this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG = this.EFUSE_RD_REG_BASE, this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT = 1048576, this.EFUSE_SPI_BOOT_CRYPT_CNT_REG = this.EFUSE_BASE + 52, this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK = 1835008, this.EFUSE_SECURE_BOOT_EN_REG = this.EFUSE_BASE + 56, this.EFUSE_SECURE_BOOT_EN_MASK = 1048576, this.PURPOSE_VAL_XTS_AES256_KEY_1 = 2, this.PURPOSE_VAL_XTS_AES256_KEY_2 = 3, this.PURPOSE_VAL_XTS_AES128_KEY = 4, this.SUPPORTS_ENCRYPTED_FLASH = !0, this.FLASH_ENCRYPTED_WRITE_ALIGN = 16, this.MEMORY_MAP = [
+                [
+                    0,
+                    65536,
+                    "PADDING"
+                ],
+                [
+                    1073741824,
+                    1275068416,
+                    "DROM"
+                ],
+                [
+                    1341128704,
+                    1341784064,
+                    "DRAM"
+                ],
+                [
+                    1341128704,
+                    1341784064,
+                    "BYTE_ACCESSIBLE"
+                ],
+                [
+                    1337982976,
+                    1338114048,
+                    "DROM_MASK"
+                ],
+                [
+                    1337982976,
+                    1338114048,
+                    "IROM_MASK"
+                ],
+                [
+                    1073741824,
+                    1275068416,
+                    "IROM"
+                ],
+                [
+                    1341128704,
+                    1341784064,
+                    "IRAM"
+                ],
+                [
+                    1343258624,
+                    1343291392,
+                    "RTC_IRAM"
+                ],
+                [
+                    1343258624,
+                    1343291392,
+                    "RTC_DRAM"
+                ],
+                [
+                    1611653120,
+                    1611661312,
+                    "MEM_INTERNAL2"
+                ]
+            ], this.UF2_FAMILY_ID = 1026592404, this.EFUSE_MAX_KEY = 5, this.KEY_PURPOSES = {
+                0: "USER/EMPTY",
+                1: "ECDSA_KEY",
+                2: "XTS_AES_256_KEY_1",
+                3: "XTS_AES_256_KEY_2",
+                4: "XTS_AES_128_KEY",
+                5: "HMAC_DOWN_ALL",
+                6: "HMAC_DOWN_JTAG",
+                7: "HMAC_DOWN_DIGITAL_SIGNATURE",
+                8: "HMAC_UP",
+                9: "SECURE_BOOT_DIGEST0",
+                10: "SECURE_BOOT_DIGEST1",
+                11: "SECURE_BOOT_DIGEST2",
+                12: "KM_INIT_KEY"
+            }, this.TEXT_START = $ec3de3bad43fb783$var$ki, this.ENTRY = $ec3de3bad43fb783$var$pi, this.DATA_START = $ec3de3bad43fb783$var$Pi, this.ROM_DATA = $ec3de3bad43fb783$var$Hi, this.ROM_TEXT = $ec3de3bad43fb783$var$yi;
+        }
+        async getPkgVersion(A) {
+            const t = this.EFUSE_BLOCK1_ADDR + 8;
+            return await A.readReg(t) >> 27 & 7;
+        }
+        async getMinorChipVersion(A) {
+            const t = this.EFUSE_BLOCK1_ADDR + 8;
+            return await A.readReg(t) >> 0 & 15;
+        }
+        async getMajorChipVersion(A) {
+            const t = this.EFUSE_BLOCK1_ADDR + 8;
+            return await A.readReg(t) >> 4 & 3;
+        }
+        async getChipDescription(A) {
+            return `${0 === await this.getPkgVersion(A) ? "ESP32-P4" : "unknown ESP32-P4"} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`;
+        }
+        async getChipFeatures(A) {
+            return [
+                "High-Performance MCU"
+            ];
+        }
+        async getCrystalFreq(A) {
+            return 40;
+        }
+        async getFlashVoltage(A) {}
+        async overrideVddsdio(A) {
+            A.debug("VDD_SDIO overrides are not supported for ESP32-P4");
+        }
+        async readMac(A) {
+            let t = await A.readReg(this.MAC_EFUSE_REG);
+            t >>>= 0;
+            let e = await A.readReg(this.MAC_EFUSE_REG + 4);
+            e = e >>> 0 & 65535;
+            const i = new Uint8Array(6);
+            return i[0] = e >> 8 & 255, i[1] = 255 & e, i[2] = t >> 24 & 255, i[3] = t >> 16 & 255, i[4] = t >> 8 & 255, i[5] = 255 & t, this._d2h(i[0]) + ":" + this._d2h(i[1]) + ":" + this._d2h(i[2]) + ":" + this._d2h(i[3]) + ":" + this._d2h(i[4]) + ":" + this._d2h(i[5]);
+        }
+        async getFlashCryptConfig(A) {}
+        async getSecureBootEnabled(A) {
+            return await A.readReg(this.EFUSE_SECURE_BOOT_EN_REG) & this.EFUSE_SECURE_BOOT_EN_MASK;
+        }
+        async getKeyBlockPurpose(A, t) {
+            if (t < 0 || t > this.EFUSE_MAX_KEY) return void A.debug(`Valid key block numbers must be in range 0-${this.EFUSE_MAX_KEY}`);
+            const e = [
+                [
+                    this.EFUSE_PURPOSE_KEY0_REG,
+                    this.EFUSE_PURPOSE_KEY0_SHIFT
+                ],
+                [
+                    this.EFUSE_PURPOSE_KEY1_REG,
+                    this.EFUSE_PURPOSE_KEY1_SHIFT
+                ],
+                [
+                    this.EFUSE_PURPOSE_KEY2_REG,
+                    this.EFUSE_PURPOSE_KEY2_SHIFT
+                ],
+                [
+                    this.EFUSE_PURPOSE_KEY3_REG,
+                    this.EFUSE_PURPOSE_KEY3_SHIFT
+                ],
+                [
+                    this.EFUSE_PURPOSE_KEY4_REG,
+                    this.EFUSE_PURPOSE_KEY4_SHIFT
+                ],
+                [
+                    this.EFUSE_PURPOSE_KEY5_REG,
+                    this.EFUSE_PURPOSE_KEY5_SHIFT
+                ]
+            ], [i, s] = e[t];
+            return await A.readReg(i) >> s & 15;
+        }
+        async isFlashEncryptionKeyValid(A) {
+            const t = [];
+            for(let e = 0; e <= this.EFUSE_MAX_KEY; e++){
+                const i = await this.getKeyBlockPurpose(A, e);
+                t.push(i);
+            }
+            t.find((A)=>A === this.PURPOSE_VAL_XTS_AES128_KEY);
+            return !0;
+            const e = t.find((A)=>A === this.PURPOSE_VAL_XTS_AES256_KEY_1), i = t.find((A)=>A === this.PURPOSE_VAL_XTS_AES256_KEY_2);
+            return true;
+        }
+    }
+});
+
+
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ *    https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in
+ * writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ * OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing
+ * permissions and limitations under the License.
+ */ "use strict";
+var $d2bbb828b377f05f$export$24d5ae9391ffe6e0;
+(function(SerialPolyfillProtocol) {
+    SerialPolyfillProtocol[SerialPolyfillProtocol["UsbCdcAcm"] = 0] = "UsbCdcAcm";
+})($d2bbb828b377f05f$export$24d5ae9391ffe6e0 || ($d2bbb828b377f05f$export$24d5ae9391ffe6e0 = {}));
+const $d2bbb828b377f05f$var$kSetLineCoding = 0x20;
+const $d2bbb828b377f05f$var$kSetControlLineState = 0x22;
+const $d2bbb828b377f05f$var$kSendBreak = 0x23;
+const $d2bbb828b377f05f$var$kDefaultBufferSize = 255;
+const $d2bbb828b377f05f$var$kDefaultDataBits = 8;
+const $d2bbb828b377f05f$var$kDefaultParity = "none";
+const $d2bbb828b377f05f$var$kDefaultStopBits = 1;
+const $d2bbb828b377f05f$var$kAcceptableDataBits = [
+    16,
+    8,
+    7,
+    6,
+    5
+];
+const $d2bbb828b377f05f$var$kAcceptableStopBits = [
+    1,
+    2
+];
+const $d2bbb828b377f05f$var$kAcceptableParity = [
+    "none",
+    "even",
+    "odd"
+];
+const $d2bbb828b377f05f$var$kParityIndexMapping = [
+    "none",
+    "odd",
+    "even"
+];
+const $d2bbb828b377f05f$var$kStopBitsIndexMapping = [
+    1,
+    1.5,
+    2
+];
+const $d2bbb828b377f05f$var$kDefaultPolyfillOptions = {
+    protocol: $d2bbb828b377f05f$export$24d5ae9391ffe6e0.UsbCdcAcm,
+    usbControlInterfaceClass: 2,
+    usbTransferInterfaceClass: 10
+};
+/**
+ * Utility function to get the interface implementing a desired class.
+ * @param {USBDevice} device The USB device.
+ * @param {number} classCode The desired interface class.
+ * @return {USBInterface} The first interface found that implements the desired
+ * class.
+ * @throws TypeError if no interface is found.
+ */ function $d2bbb828b377f05f$var$findInterface(device, classCode) {
+    const configuration = device.configurations[0];
+    for (const iface of configuration.interfaces){
+        const alternate = iface.alternates[0];
+        if (alternate.interfaceClass === classCode) return iface;
+    }
+    throw new TypeError(`Unable to find interface with class ${classCode}.`);
+}
+/**
+ * Utility function to get an endpoint with a particular direction.
+ * @param {USBInterface} iface The interface to search.
+ * @param {USBDirection} direction The desired transfer direction.
+ * @return {USBEndpoint} The first endpoint with the desired transfer direction.
+ * @throws TypeError if no endpoint is found.
+ */ function $d2bbb828b377f05f$var$findEndpoint(iface, direction) {
+    const alternate = iface.alternates[0];
+    for (const endpoint of alternate.endpoints){
+        if (endpoint.direction == direction) return endpoint;
+    }
+    throw new TypeError(`Interface ${iface.interfaceNumber} does not have an ` + `${direction} endpoint.`);
+}
+/**
+ * Implementation of the underlying source API[1] which reads data from a USB
+ * endpoint. This can be used to construct a ReadableStream.
+ *
+ * [1]: https://streams.spec.whatwg.org/#underlying-source-api
+ */ class $d2bbb828b377f05f$var$UsbEndpointUnderlyingSource {
+    /**
+     * Constructs a new UnderlyingSource that will pull data from the specified
+     * endpoint on the given USB device.
+     *
+     * @param {USBDevice} device
+     * @param {USBEndpoint} endpoint
+     * @param {function} onError function to be called on error
+     */ constructor(device, endpoint, onError){
+        this.type = "bytes";
+        this.device_ = device;
+        this.endpoint_ = endpoint;
+        this.onError_ = onError;
+    }
+    /**
+     * Reads a chunk of data from the device.
+     *
+     * @param {ReadableByteStreamController} controller
+     */ pull(controller) {
+        (async ()=>{
+            var _a;
+            let chunkSize;
+            if (controller.desiredSize) {
+                const d = controller.desiredSize / this.endpoint_.packetSize;
+                chunkSize = Math.ceil(d) * this.endpoint_.packetSize;
+            } else chunkSize = this.endpoint_.packetSize;
+            try {
+                const result = await this.device_.transferIn(this.endpoint_.endpointNumber, chunkSize);
+                if (result.status != "ok") {
+                    controller.error(`USB error: ${result.status}`);
+                    this.onError_();
+                }
+                if ((_a = result.data) === null || _a === void 0 ? void 0 : _a.buffer) {
+                    const chunk = new Uint8Array(result.data.buffer, result.data.byteOffset, result.data.byteLength);
+                    controller.enqueue(chunk);
+                }
+            } catch (error) {
+                controller.error(error.toString());
+                this.onError_();
+            }
+        })();
+    }
+}
+/**
+ * Implementation of the underlying sink API[2] which writes data to a USB
+ * endpoint. This can be used to construct a WritableStream.
+ *
+ * [2]: https://streams.spec.whatwg.org/#underlying-sink-api
+ */ class $d2bbb828b377f05f$var$UsbEndpointUnderlyingSink {
+    /**
+     * Constructs a new UnderlyingSink that will write data to the specified
+     * endpoint on the given USB device.
+     *
+     * @param {USBDevice} device
+     * @param {USBEndpoint} endpoint
+     * @param {function} onError function to be called on error
+     */ constructor(device, endpoint, onError){
+        this.device_ = device;
+        this.endpoint_ = endpoint;
+        this.onError_ = onError;
+    }
+    /**
+     * Writes a chunk to the device.
+     *
+     * @param {Uint8Array} chunk
+     * @param {WritableStreamDefaultController} controller
+     */ async write(chunk, controller) {
+        try {
+            const result = await this.device_.transferOut(this.endpoint_.endpointNumber, chunk);
+            if (result.status != "ok") {
+                controller.error(result.status);
+                this.onError_();
+            }
+        } catch (error) {
+            controller.error(error.toString());
+            this.onError_();
+        }
+    }
+}
+class $d2bbb828b377f05f$export$237d90817cb05a2f {
+    /**
+     * constructor taking a WebUSB device that creates a SerialPort instance.
+     * @param {USBDevice} device A device acquired from the WebUSB API
+     * @param {SerialPolyfillOptions} polyfillOptions Optional options to
+     * configure the polyfill.
+     */ constructor(device, polyfillOptions){
+        this.polyfillOptions_ = Object.assign(Object.assign({}, $d2bbb828b377f05f$var$kDefaultPolyfillOptions), polyfillOptions);
+        this.outputSignals_ = {
+            dataTerminalReady: false,
+            requestToSend: false,
+            break: false
+        };
+        this.device_ = device;
+        this.controlInterface_ = $d2bbb828b377f05f$var$findInterface(this.device_, this.polyfillOptions_.usbControlInterfaceClass);
+        this.transferInterface_ = $d2bbb828b377f05f$var$findInterface(this.device_, this.polyfillOptions_.usbTransferInterfaceClass);
+        this.inEndpoint_ = $d2bbb828b377f05f$var$findEndpoint(this.transferInterface_, "in");
+        this.outEndpoint_ = $d2bbb828b377f05f$var$findEndpoint(this.transferInterface_, "out");
+    }
+    /**
+     * Getter for the readable attribute. Constructs a new ReadableStream as
+     * necessary.
+     * @return {ReadableStream} the current readable stream
+     */ get readable() {
+        var _a;
+        if (!this.readable_ && this.device_.opened) this.readable_ = new ReadableStream(new $d2bbb828b377f05f$var$UsbEndpointUnderlyingSource(this.device_, this.inEndpoint_, ()=>{
+            this.readable_ = null;
+        }), {
+            highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : $d2bbb828b377f05f$var$kDefaultBufferSize
+        });
+        return this.readable_;
+    }
+    /**
+     * Getter for the writable attribute. Constructs a new WritableStream as
+     * necessary.
+     * @return {WritableStream} the current writable stream
+     */ get writable() {
+        var _a;
+        if (!this.writable_ && this.device_.opened) this.writable_ = new WritableStream(new $d2bbb828b377f05f$var$UsbEndpointUnderlyingSink(this.device_, this.outEndpoint_, ()=>{
+            this.writable_ = null;
+        }), new ByteLengthQueuingStrategy({
+            highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : $d2bbb828b377f05f$var$kDefaultBufferSize
+        }));
+        return this.writable_;
+    }
+    /**
+     * a function that opens the device and claims all interfaces needed to
+     * control and communicate to and from the serial device
+     * @param {SerialOptions} options Object containing serial options
+     * @return {Promise<void>} A promise that will resolve when device is ready
+     * for communication
+     */ async open(options) {
+        this.serialOptions_ = options;
+        this.validateOptions();
+        try {
+            await this.device_.open();
+            if (this.device_.configuration === null) await this.device_.selectConfiguration(1);
+            await this.device_.claimInterface(this.controlInterface_.interfaceNumber);
+            if (this.controlInterface_ !== this.transferInterface_) await this.device_.claimInterface(this.transferInterface_.interfaceNumber);
+            await this.setLineCoding();
+            await this.setSignals({
+                dataTerminalReady: true
+            });
+        } catch (error) {
+            if (this.device_.opened) await this.device_.close();
+            throw new Error("Error setting up device: " + error.toString());
+        }
+    }
+    /**
+     * Closes the port.
+     *
+     * @return {Promise<void>} A promise that will resolve when the port is
+     * closed.
+     */ async close() {
+        const promises = [];
+        if (this.readable_) promises.push(this.readable_.cancel());
+        if (this.writable_) promises.push(this.writable_.abort());
+        await Promise.all(promises);
+        this.readable_ = null;
+        this.writable_ = null;
+        if (this.device_.opened) {
+            await this.setSignals({
+                dataTerminalReady: false,
+                requestToSend: false
+            });
+            await this.device_.close();
+        }
+    }
+    /**
+     * Forgets the port.
+     *
+     * @return {Promise<void>} A promise that will resolve when the port is
+     * forgotten.
+     */ async forget() {
+        return this.device_.forget();
+    }
+    /**
+     * A function that returns properties of the device.
+     * @return {SerialPortInfo} Device properties.
+     */ getInfo() {
+        return {
+            usbVendorId: this.device_.vendorId,
+            usbProductId: this.device_.productId
+        };
+    }
+    /**
+     * A function used to change the serial settings of the device
+     * @param {object} options the object which carries serial settings data
+     * @return {Promise<void>} A promise that will resolve when the options are
+     * set
+     */ reconfigure(options) {
+        this.serialOptions_ = Object.assign(Object.assign({}, this.serialOptions_), options);
+        this.validateOptions();
+        return this.setLineCoding();
+    }
+    /**
+     * Sets control signal state for the port.
+     * @param {SerialOutputSignals} signals The signals to enable or disable.
+     * @return {Promise<void>} a promise that is resolved when the signal state
+     * has been changed.
+     */ async setSignals(signals) {
+        this.outputSignals_ = Object.assign(Object.assign({}, this.outputSignals_), signals);
+        if (signals.dataTerminalReady !== undefined || signals.requestToSend !== undefined) {
+            // The Set_Control_Line_State command expects a bitmap containing the
+            // values of all output signals that should be enabled or disabled.
+            //
+            // Ref: USB CDC specification version 1.1 §6.2.14.
+            const value = (this.outputSignals_.dataTerminalReady ? 1 : 0) | (this.outputSignals_.requestToSend ? 2 : 0);
+            await this.device_.controlTransferOut({
+                "requestType": "class",
+                "recipient": "interface",
+                "request": $d2bbb828b377f05f$var$kSetControlLineState,
+                "value": value,
+                "index": this.controlInterface_.interfaceNumber
+            });
+        }
+        if (signals.break !== undefined) {
+            // The SendBreak command expects to be given a duration for how long the
+            // break signal should be asserted. Passing 0xFFFF enables the signal
+            // until 0x0000 is send.
+            //
+            // Ref: USB CDC specification version 1.1 §6.2.15.
+            const value = this.outputSignals_.break ? 0xFFFF : 0x0000;
+            await this.device_.controlTransferOut({
+                "requestType": "class",
+                "recipient": "interface",
+                "request": $d2bbb828b377f05f$var$kSendBreak,
+                "value": value,
+                "index": this.controlInterface_.interfaceNumber
+            });
+        }
+    }
+    /**
+     * Checks the serial options for validity and throws an error if it is
+     * not valid
+     */ validateOptions() {
+        if (!this.isValidBaudRate(this.serialOptions_.baudRate)) throw new RangeError("invalid Baud Rate " + this.serialOptions_.baudRate);
+        if (!this.isValidDataBits(this.serialOptions_.dataBits)) throw new RangeError("invalid dataBits " + this.serialOptions_.dataBits);
+        if (!this.isValidStopBits(this.serialOptions_.stopBits)) throw new RangeError("invalid stopBits " + this.serialOptions_.stopBits);
+        if (!this.isValidParity(this.serialOptions_.parity)) throw new RangeError("invalid parity " + this.serialOptions_.parity);
+    }
+    /**
+     * Checks the baud rate for validity
+     * @param {number} baudRate the baud rate to check
+     * @return {boolean} A boolean that reflects whether the baud rate is valid
+     */ isValidBaudRate(baudRate) {
+        return baudRate % 1 === 0;
+    }
+    /**
+     * Checks the data bits for validity
+     * @param {number} dataBits the data bits to check
+     * @return {boolean} A boolean that reflects whether the data bits setting is
+     * valid
+     */ isValidDataBits(dataBits) {
+        if (typeof dataBits === "undefined") return true;
+        return $d2bbb828b377f05f$var$kAcceptableDataBits.includes(dataBits);
+    }
+    /**
+     * Checks the stop bits for validity
+     * @param {number} stopBits the stop bits to check
+     * @return {boolean} A boolean that reflects whether the stop bits setting is
+     * valid
+     */ isValidStopBits(stopBits) {
+        if (typeof stopBits === "undefined") return true;
+        return $d2bbb828b377f05f$var$kAcceptableStopBits.includes(stopBits);
+    }
+    /**
+     * Checks the parity for validity
+     * @param {string} parity the parity to check
+     * @return {boolean} A boolean that reflects whether the parity is valid
+     */ isValidParity(parity) {
+        if (typeof parity === "undefined") return true;
+        return $d2bbb828b377f05f$var$kAcceptableParity.includes(parity);
+    }
+    /**
+     * sends the options alog the control interface to set them on the device
+     * @return {Promise} a promise that will resolve when the options are set
+     */ async setLineCoding() {
+        var _a, _b, _c;
+        // Ref: USB CDC specification version 1.1 §6.2.12.
+        const buffer = new ArrayBuffer(7);
+        const view = new DataView(buffer);
+        view.setUint32(0, this.serialOptions_.baudRate, true);
+        view.setUint8(4, $d2bbb828b377f05f$var$kStopBitsIndexMapping.indexOf((_a = this.serialOptions_.stopBits) !== null && _a !== void 0 ? _a : $d2bbb828b377f05f$var$kDefaultStopBits));
+        view.setUint8(5, $d2bbb828b377f05f$var$kParityIndexMapping.indexOf((_b = this.serialOptions_.parity) !== null && _b !== void 0 ? _b : $d2bbb828b377f05f$var$kDefaultParity));
+        view.setUint8(6, (_c = this.serialOptions_.dataBits) !== null && _c !== void 0 ? _c : $d2bbb828b377f05f$var$kDefaultDataBits);
+        const result = await this.device_.controlTransferOut({
+            "requestType": "class",
+            "recipient": "interface",
+            "request": $d2bbb828b377f05f$var$kSetLineCoding,
+            "value": 0x00,
+            "index": this.controlInterface_.interfaceNumber
+        }, buffer);
+        if (result.status != "ok") throw new DOMException("NetworkError", "Failed to set line coding.");
+    }
+}
+/** implementation of the global navigator.serial object */ class $d2bbb828b377f05f$var$Serial {
+    /**
+     * Requests permission to access a new port.
+     *
+     * @param {SerialPortRequestOptions} options
+     * @param {SerialPolyfillOptions} polyfillOptions
+     * @return {Promise<SerialPort>}
+     */ async requestPort(options, polyfillOptions) {
+        polyfillOptions = Object.assign(Object.assign({}, $d2bbb828b377f05f$var$kDefaultPolyfillOptions), polyfillOptions);
+        const usbFilters = [];
+        if (options && options.filters) for (const filter of options.filters){
+            const usbFilter = {
+                classCode: polyfillOptions.usbControlInterfaceClass
+            };
+            if (filter.usbVendorId !== undefined) usbFilter.vendorId = filter.usbVendorId;
+            if (filter.usbProductId !== undefined) usbFilter.productId = filter.usbProductId;
+            usbFilters.push(usbFilter);
+        }
+        if (usbFilters.length === 0) usbFilters.push({
+            classCode: polyfillOptions.usbControlInterfaceClass
+        });
+        const device = await navigator.usb.requestDevice({
+            "filters": usbFilters
+        });
+        const port = new $d2bbb828b377f05f$export$237d90817cb05a2f(device, polyfillOptions);
+        return port;
+    }
+    /**
+     * Get the set of currently available ports.
+     *
+     * @param {SerialPolyfillOptions} polyfillOptions Polyfill configuration that
+     * should be applied to these ports.
+     * @return {Promise<SerialPort[]>} a promise that is resolved with a list of
+     * ports.
+     */ async getPorts(polyfillOptions) {
+        polyfillOptions = Object.assign(Object.assign({}, $d2bbb828b377f05f$var$kDefaultPolyfillOptions), polyfillOptions);
+        const devices = await navigator.usb.getDevices();
+        const ports = [];
+        devices.forEach((device)=>{
+            try {
+                const port = new $d2bbb828b377f05f$export$237d90817cb05a2f(device, polyfillOptions);
+                ports.push(port);
+            } catch (e) {
+            // Skip unrecognized port.
+            }
+        });
+        return ports;
+    }
+}
+const $d2bbb828b377f05f$export$6c2c9a00e27c07e8 = new $d2bbb828b377f05f$var$Serial();
+
+
+const $382e02c9bbd5d50b$var$baudrates = document.getElementById("baudrates");
+const $382e02c9bbd5d50b$var$connectButton = document.getElementById("connectButton");
+const $382e02c9bbd5d50b$var$traceButton = document.getElementById("copyTraceButton");
+const $382e02c9bbd5d50b$var$disconnectButton = document.getElementById("disconnectButton");
+const $382e02c9bbd5d50b$var$resetButton = document.getElementById("resetButton");
+const $382e02c9bbd5d50b$var$eraseButton = document.getElementById("eraseButton");
+const $382e02c9bbd5d50b$var$programButton = document.getElementById("programButton");
+const $382e02c9bbd5d50b$var$filesDiv = document.getElementById("files");
+const $382e02c9bbd5d50b$var$terminal = document.getElementById("terminal");
+const $382e02c9bbd5d50b$var$programDiv = document.getElementById("program");
+const $382e02c9bbd5d50b$var$lblBaudrate = document.getElementById("lblBaudrate");
+const $382e02c9bbd5d50b$var$lblConnTo = document.getElementById("lblConnTo");
+const $382e02c9bbd5d50b$var$table = document.getElementById("fileTable");
+if (!navigator.serial && navigator.usb) navigator.serial = (0, $d2bbb828b377f05f$export$6c2c9a00e27c07e8);
+const $382e02c9bbd5d50b$var$term = new Terminal({
+    cols: 120,
+    rows: 40
+});
+$382e02c9bbd5d50b$var$term.open($382e02c9bbd5d50b$var$terminal);
+let $382e02c9bbd5d50b$var$device = null;
+let $382e02c9bbd5d50b$var$transport;
+let $382e02c9bbd5d50b$var$chip = null;
+let $382e02c9bbd5d50b$var$esploader;
+const $382e02c9bbd5d50b$var$fileArray = [];
+$382e02c9bbd5d50b$var$disconnectButton.style.display = "none";
+$382e02c9bbd5d50b$var$traceButton.style.display = "none";
+$382e02c9bbd5d50b$var$eraseButton.style.display = "none";
+$382e02c9bbd5d50b$var$resetButton.style.display = "none";
+$382e02c9bbd5d50b$var$filesDiv.style.display = "none";
+const $382e02c9bbd5d50b$var$espLoaderTerminal = {
+    clean () {
+        $382e02c9bbd5d50b$var$term.clear();
+    },
+    writeLine (data) {
+        $382e02c9bbd5d50b$var$term.writeln(data);
+    },
+    write (data) {
+        $382e02c9bbd5d50b$var$term.write(data);
+    }
+};
+function $382e02c9bbd5d50b$var$cleanUp() {
+    $382e02c9bbd5d50b$var$device = null;
+    $382e02c9bbd5d50b$var$transport = null;
+    $382e02c9bbd5d50b$var$chip = null;
+}
+$382e02c9bbd5d50b$var$traceButton.onclick = async ()=>{
+    if ($382e02c9bbd5d50b$var$transport) $382e02c9bbd5d50b$var$transport.returnTrace();
+};
+$382e02c9bbd5d50b$var$resetButton.onclick = async ()=>{
+    if ($382e02c9bbd5d50b$var$transport) {
+        await $382e02c9bbd5d50b$var$transport.setDTR(false);
+        await new Promise((resolve)=>setTimeout(resolve, 100));
+        await $382e02c9bbd5d50b$var$transport.setDTR(true);
+    }
+};
+$382e02c9bbd5d50b$var$eraseButton.onclick = async ()=>{
+    $382e02c9bbd5d50b$var$eraseButton.disabled = true;
+    try {
+        await $382e02c9bbd5d50b$var$esploader.eraseFlash();
+    } catch (e) {
+        console.error(e);
+        $382e02c9bbd5d50b$var$term.writeln(`Error: ${e.message}`);
+    } finally{
+        $382e02c9bbd5d50b$var$eraseButton.disabled = false;
+    }
+};
+$382e02c9bbd5d50b$var$connectButton.onclick = async ()=>{
+    if ($382e02c9bbd5d50b$var$device === null) {
+        $382e02c9bbd5d50b$var$device = await navigator.serial.requestPort({});
+        $382e02c9bbd5d50b$var$transport = new (0, $ec3de3bad43fb783$export$86495b081fef8e52)($382e02c9bbd5d50b$var$device, true);
+    }
+    try {
+        const flashOptions = {
+            transport: $382e02c9bbd5d50b$var$transport,
+            baudrate: parseInt($382e02c9bbd5d50b$var$baudrates.value),
+            terminal: $382e02c9bbd5d50b$var$espLoaderTerminal
+        };
+        $382e02c9bbd5d50b$var$esploader = new (0, $ec3de3bad43fb783$export$b0f7a6c745790308)(flashOptions);
+        $382e02c9bbd5d50b$var$lblBaudrate.style.display = "none";
+        $382e02c9bbd5d50b$var$baudrates.style.display = "none";
+        $382e02c9bbd5d50b$var$connectButton.style.display = "none";
+        $382e02c9bbd5d50b$var$chip = await $382e02c9bbd5d50b$var$esploader.main();
+        if (!$382e02c9bbd5d50b$var$chip.startsWith("ESP32-C6")) {
+            $382e02c9bbd5d50b$var$term.writeln("Error! Wrong chip connected. Expected is ESP32-C6");
+            await $382e02c9bbd5d50b$var$transport.disconnect();
+            $382e02c9bbd5d50b$var$cleanUp();
+            $382e02c9bbd5d50b$var$lblBaudrate.style.display = "initial";
+            $382e02c9bbd5d50b$var$baudrates.style.display = "initial";
+            $382e02c9bbd5d50b$var$connectButton.style.display = "initial";
+            return;
+        }
+    } catch (e) {
+        console.error(e);
+        $382e02c9bbd5d50b$var$term.writeln("");
+        $382e02c9bbd5d50b$var$term.writeln(`Error: ${e.message}`);
+        await $382e02c9bbd5d50b$var$transport.disconnect();
+        $382e02c9bbd5d50b$var$cleanUp();
+        $382e02c9bbd5d50b$var$lblBaudrate.style.display = "initial";
+        $382e02c9bbd5d50b$var$baudrates.style.display = "initial";
+        $382e02c9bbd5d50b$var$connectButton.style.display = "initial";
+        return;
+    }
+    console.log("Settings done for :" + $382e02c9bbd5d50b$var$chip);
+    $382e02c9bbd5d50b$var$lblBaudrate.style.display = "none";
+    $382e02c9bbd5d50b$var$baudrates.style.display = "none";
+    $382e02c9bbd5d50b$var$lblConnTo.innerHTML = "Connected to device: " + $382e02c9bbd5d50b$var$chip;
+    $382e02c9bbd5d50b$var$lblConnTo.style.display = "block";
+    $382e02c9bbd5d50b$var$connectButton.style.display = "none";
+    $382e02c9bbd5d50b$var$disconnectButton.style.display = "initial";
+    $382e02c9bbd5d50b$var$traceButton.style.display = "initial";
+    $382e02c9bbd5d50b$var$eraseButton.style.display = "initial";
+    $382e02c9bbd5d50b$var$filesDiv.style.display = "initial";
+};
+$382e02c9bbd5d50b$var$disconnectButton.onclick = async ()=>{
+    if ($382e02c9bbd5d50b$var$transport) await $382e02c9bbd5d50b$var$transport.disconnect();
+    $382e02c9bbd5d50b$var$term.reset();
+    $382e02c9bbd5d50b$var$lblBaudrate.style.display = "initial";
+    $382e02c9bbd5d50b$var$baudrates.style.display = "initial";
+    $382e02c9bbd5d50b$var$connectButton.style.display = "initial";
+    $382e02c9bbd5d50b$var$disconnectButton.style.display = "none";
+    $382e02c9bbd5d50b$var$traceButton.style.display = "none";
+    $382e02c9bbd5d50b$var$eraseButton.style.display = "none";
+    $382e02c9bbd5d50b$var$lblConnTo.style.display = "none";
+    $382e02c9bbd5d50b$var$filesDiv.style.display = "none";
+    $382e02c9bbd5d50b$var$programButton.style.display = "initial";
+    $382e02c9bbd5d50b$var$resetButton.style.display = "none";
+    for(let index = 1; index < $382e02c9bbd5d50b$var$table.rows.length; index++)$382e02c9bbd5d50b$var$table.rows[index].cells[3].childNodes[0].value = "0";
+    $382e02c9bbd5d50b$var$cleanUp();
+};
+$382e02c9bbd5d50b$var$programButton.onclick = async ()=>{
+    const progressBars = [];
+    for(let index = 1; index < $382e02c9bbd5d50b$var$table.rows.length; index++){
+        const row = $382e02c9bbd5d50b$var$table.rows[index];
+        const progressBar = row.cells[3].childNodes[0];
+        progressBar.textContent = "0";
+        progressBars.push(progressBar);
+    }
+    try {
+        const flashOptions = {
+            fileArray: $382e02c9bbd5d50b$var$fileArray,
+            eraseAll: false,
+            compress: true,
+            flashSize: "keep",
+            flashFreq: "80MHz",
+            flashMode: "DIO",
+            reportProgress: (fileIndex, written, total)=>{
+                progressBars[fileIndex].value = written / total * 100;
+            },
+            calculateMD5Hash: (image)=>CryptoJS.MD5(CryptoJS.enc.Latin1.parse(image))
+        };
+        $382e02c9bbd5d50b$var$programButton.style.display = "none";
+        $382e02c9bbd5d50b$var$eraseButton.style.display = "none";
+        await $382e02c9bbd5d50b$var$esploader.writeFlash(flashOptions);
+    } catch (e) {
+        console.error(e);
+        $382e02c9bbd5d50b$var$programButton.style.display = "initial";
+        $382e02c9bbd5d50b$var$term.writeln(`Error: ${e.message}`);
+    } finally{
+        // Switch to console
+        await $382e02c9bbd5d50b$var$transport.disconnect();
+        await $382e02c9bbd5d50b$var$transport.connect(115200);
+        await $382e02c9bbd5d50b$var$transport.setDTR(false);
+        await new Promise((resolve)=>setTimeout(resolve, 100));
+        await $382e02c9bbd5d50b$var$transport.setDTR(true);
+        $382e02c9bbd5d50b$var$resetButton.style.display = "initial";
+        while(true){
+            const val = await $382e02c9bbd5d50b$var$transport.rawRead();
+            if (typeof val !== "undefined") $382e02c9bbd5d50b$var$term.write(val);
+            else {
+                console.log("Leaving monitor");
+                break;
+            }
+        }
+    }
+};
+// addFileButton.onclick = () => {
+function $382e02c9bbd5d50b$var$addFileRow(addr, path, size) {
+    const rowCount = $382e02c9bbd5d50b$var$table.rows.length;
+    const row = $382e02c9bbd5d50b$var$table.insertRow(rowCount);
+    //Column 1 - Offset
+    const cell1 = row.insertCell(0);
+    const element1 = document.createElement("span");
+    element1.innerHTML = addr;
+    cell1.appendChild(element1);
+    // Column 2 - File selector
+    const cell2 = row.insertCell(1);
+    const element2 = document.createElement("span");
+    element2.innerHTML = path;
+    cell2.appendChild(element2);
+    // Column 3 - File Size
+    const cell3 = row.insertCell(2);
+    const element3 = document.createElement("span");
+    element3.innerHTML = size + " B";
+    cell3.appendChild(element3);
+    // Column 4  - Progress
+    const cell4 = row.insertCell(3);
+    cell4.classList.add("progress-cell");
+    cell4.innerHTML = `<progress value="0" max="100" style="width:100%"'></progress>`;
+}
+function $382e02c9bbd5d50b$var$addFileForFlashing(outArray, addr, path) {
+    console.log("load", addr, path);
+    var request = new XMLHttpRequest();
+    request.open("GET", path, true);
+    request.responseType = "blob";
+    request.onload = function() {
+        console.log("blob", addr, path, request.response);
+        var size = request.response.size;
+        var reader = new FileReader();
+        reader.onload = function(e) {
+            outArray.push({
+                data: e.target.result,
+                address: parseInt(addr)
+            });
+            console.log("push", addr, path);
+            $382e02c9bbd5d50b$var$addFileRow(addr, path, size);
+        };
+        reader.readAsBinaryString(request.response);
+    };
+    request.send();
+}
+$382e02c9bbd5d50b$var$addFileForFlashing($382e02c9bbd5d50b$var$fileArray, "0x0", "bootloader.bin");
+$382e02c9bbd5d50b$var$addFileForFlashing($382e02c9bbd5d50b$var$fileArray, "0x8000", "partition-table.bin");
+$382e02c9bbd5d50b$var$addFileForFlashing($382e02c9bbd5d50b$var$fileArray, "0xd000", "ota_data_initial.bin");
+$382e02c9bbd5d50b$var$addFileForFlashing($382e02c9bbd5d50b$var$fileArray, "0x10000", "network_adapter.bin");
+
+
+//# sourceMappingURL=index.82fa246c.js.map
diff --git a/c6-hosted/index.82fa246c.js.map b/c6-hosted/index.82fa246c.js.map
new file mode 100644
index 00000000000..13f35cd9afc
--- /dev/null
+++ b/c6-hosted/index.82fa246c.js.map
@@ -0,0 +1 @@
+{"mappings":"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","sources":["src/index.ts","assets/bundle.js","node_modules/web-serial-polyfill/dist/serial.js","node_modules/web-serial-polyfill/serial.ts"],"sourcesContent":["const baudrates = document.getElementById(\"baudrates\") as HTMLSelectElement;\nconst connectButton = document.getElementById(\"connectButton\") as HTMLButtonElement;\nconst traceButton = document.getElementById(\"copyTraceButton\") as HTMLButtonElement;\nconst disconnectButton = document.getElementById(\"disconnectButton\") as HTMLButtonElement;\nconst resetButton = document.getElementById(\"resetButton\") as HTMLButtonElement;\nconst eraseButton = document.getElementById(\"eraseButton\") as HTMLButtonElement;\nconst programButton = document.getElementById(\"programButton\");\nconst filesDiv = document.getElementById(\"files\");\nconst terminal = document.getElementById(\"terminal\");\nconst programDiv = document.getElementById(\"program\");\nconst lblBaudrate = document.getElementById(\"lblBaudrate\");\nconst lblConnTo = document.getElementById(\"lblConnTo\");\nconst table = document.getElementById(\"fileTable\") as HTMLTableElement;\n\nimport { ESPLoader, FlashOptions, LoaderOptions, Transport } from \"../assets/bundle.js\";\nimport { serial } from \"web-serial-polyfill\";\nif (!navigator.serial && navigator.usb) navigator.serial = serial;\n\ndeclare let Terminal; // Terminal is imported in HTML script\ndeclare let CryptoJS; // CryptoJS is imported in HTML script\n\nconst term = new Terminal({ cols: 120, rows: 40 });\nterm.open(terminal);\n\nlet device = null;\nlet transport: Transport;\nlet chip: string = null;\nlet esploader: ESPLoader;\n\nconst fileArray = [];\n\ndisconnectButton.style.display = \"none\";\ntraceButton.style.display = \"none\";\neraseButton.style.display = \"none\";\nresetButton.style.display = \"none\";\nfilesDiv.style.display = \"none\";\n\nconst espLoaderTerminal = {\n  clean() {\n    term.clear();\n  },\n  writeLine(data) {\n    term.writeln(data);\n  },\n  write(data) {\n    term.write(data);\n  },\n};\n\nfunction cleanUp() {\n  device = null;\n  transport = null;\n  chip = null;\n}\n\ntraceButton.onclick = async () => {\n  if (transport) {\n    transport.returnTrace();\n  }\n};\n\nresetButton.onclick = async () => {\n  if (transport) {\n    await transport.setDTR(false);\n    await new Promise((resolve) => setTimeout(resolve, 100));\n    await transport.setDTR(true);\n  }\n};\n\neraseButton.onclick = async () => {\n  eraseButton.disabled = true;\n  try {\n    await esploader.eraseFlash();\n  } catch (e) {\n    console.error(e);\n    term.writeln(`Error: ${e.message}`);\n  } finally {\n    eraseButton.disabled = false;\n  }\n};\n\nconnectButton.onclick = async () => {\n  if (device === null) {\n    device = await navigator.serial.requestPort({});\n    transport = new Transport(device, true);\n  }\n\n  try {\n    const flashOptions = {\n      transport,\n      baudrate: parseInt(baudrates.value),\n      terminal: espLoaderTerminal,\n    } as LoaderOptions;\n    esploader = new ESPLoader(flashOptions);\n\n    lblBaudrate.style.display = \"none\";\n    baudrates.style.display = \"none\";\n    connectButton.style.display = \"none\";\n\n    chip = await esploader.main();\n\n    if(!chip.startsWith(\"ESP32-C6\")){\n      term.writeln(\"Error! Wrong chip connected. Expected is ESP32-C6\");\n      await transport.disconnect();\n      cleanUp();\n      lblBaudrate.style.display = \"initial\";\n      baudrates.style.display = \"initial\";\n      connectButton.style.display = \"initial\";\n      return;\n    }\n  } catch (e) {\n    console.error(e);\n    term.writeln(\"\");\n    term.writeln(`Error: ${e.message}`);\n    await transport.disconnect();\n    cleanUp();\n    lblBaudrate.style.display = \"initial\";\n    baudrates.style.display = \"initial\";\n    connectButton.style.display = \"initial\";\n    return;\n  }\n\n  console.log(\"Settings done for :\" + chip);\n  lblBaudrate.style.display = \"none\";\n  baudrates.style.display = \"none\";\n  lblConnTo.innerHTML = \"Connected to device: \" + chip;\n  lblConnTo.style.display = \"block\";\n  connectButton.style.display = \"none\";\n  disconnectButton.style.display = \"initial\";\n  traceButton.style.display = \"initial\";\n  eraseButton.style.display = \"initial\";\n  filesDiv.style.display = \"initial\";\n};\n\ndisconnectButton.onclick = async () => {\n  if (transport) await transport.disconnect();\n\n  term.reset();\n  lblBaudrate.style.display = \"initial\";\n  baudrates.style.display = \"initial\";\n  connectButton.style.display = \"initial\";\n  disconnectButton.style.display = \"none\";\n  traceButton.style.display = \"none\";\n  eraseButton.style.display = \"none\";\n  lblConnTo.style.display = \"none\";\n  filesDiv.style.display = \"none\";\n  programButton.style.display = \"initial\";\n  resetButton.style.display = \"none\";\n  for (let index = 1; index < table.rows.length; index++) {\n    table.rows[index].cells[3].childNodes[0].value = \"0\";\n  }\n  cleanUp();\n};\n\nprogramButton.onclick = async () => {\n  const progressBars = [];\n\n  for (let index = 1; index < table.rows.length; index++) {\n    const row = table.rows[index];\n    const progressBar = row.cells[3].childNodes[0];\n\n    progressBar.textContent = \"0\";\n    progressBars.push(progressBar);\n  }\n\n  try {\n    const flashOptions: FlashOptions = {\n      fileArray: fileArray,\n      eraseAll: false,\n      compress: true,\n      flashSize: \"keep\",\n      flashFreq: \"80MHz\",\n      flashMode: \"DIO\",\n      reportProgress: (fileIndex, written, total) => {\n        progressBars[fileIndex].value = (written / total) * 100;\n      },\n      calculateMD5Hash: (image) => CryptoJS.MD5(CryptoJS.enc.Latin1.parse(image)),\n    } as FlashOptions;\n    programButton.style.display = \"none\";\n    eraseButton.style.display = \"none\";\n    await esploader.writeFlash(flashOptions);\n  } catch (e) {\n    console.error(e);\n    programButton.style.display = \"initial\";\n    term.writeln(`Error: ${e.message}`);\n  } finally {\n    // Switch to console\n    await transport.disconnect();\n    await transport.connect(115200);\n    await transport.setDTR(false);\n    await new Promise((resolve) => setTimeout(resolve, 100));\n    await transport.setDTR(true);\n    resetButton.style.display = \"initial\";\n    while (true) {\n      const val = await transport.rawRead();\n      if (typeof val !== \"undefined\") {\n        term.write(val);\n      } else {\n        console.log(\"Leaving monitor\");\n        break;\n      }\n    }\n  }\n};\n\n// addFileButton.onclick = () => {\nfunction addFileRow(addr, path, size) {\n  const rowCount = table.rows.length;\n  const row = table.insertRow(rowCount);\n\n  //Column 1 - Offset\n  const cell1 = row.insertCell(0);\n  const element1 = document.createElement(\"span\");\n  element1.innerHTML = addr;\n  cell1.appendChild(element1);\n\n  // Column 2 - File selector\n  const cell2 = row.insertCell(1);\n  const element2 = document.createElement(\"span\");\n  element2.innerHTML = path;\n  cell2.appendChild(element2);\n\n  // Column 3 - File Size\n  const cell3 = row.insertCell(2);\n  const element3 = document.createElement(\"span\");\n  element3.innerHTML = size+\" B\";\n  cell3.appendChild(element3);\n\n  // Column 4  - Progress\n  const cell4 = row.insertCell(3);\n  cell4.classList.add(\"progress-cell\");\n  cell4.innerHTML = `<progress value=\"0\" max=\"100\" style=\"width:100%\"'></progress>`;\n};\n\nfunction addFileForFlashing(outArray, addr, path) {\n  console.log(\"load\", addr, path);\n  var request = new XMLHttpRequest();\n  request.open('GET', path, true);\n  request.responseType = 'blob';\n  request.onload = function() {\n      console.log(\"blob\", addr, path, request.response);\n      var size = request.response.size;\n      var reader = new FileReader();\n      reader.onload =  function(e){\n          outArray.push({ data: e.target.result, address: parseInt(addr) });\n          console.log(\"push\", addr, path);\n          addFileRow(addr, path, size);\n      };\n      reader.readAsBinaryString(request.response);\n  };\n  request.send();\n}\n\naddFileForFlashing(fileArray, \"0x0\", \"bootloader.bin\");\naddFileForFlashing(fileArray, \"0x8000\", \"partition-table.bin\");\naddFileForFlashing(fileArray, \"0xd000\", \"ota_data_initial.bin\");\naddFileForFlashing(fileArray, \"0x10000\", \"network_adapter.bin\");\n","class A extends Error{}\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function t(A){let t=A.length;for(;--t>=0;)A[t]=0}const e=256,i=286,s=30,a=15,n=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),E=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),h=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),r=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),g=new Array(576);t(g);const o=new Array(60);t(o);const B=new Array(512);t(B);const w=new Array(256);t(w);const c=new Array(29);t(c);const C=new Array(s);function I(A,t,e,i,s){this.static_tree=A,this.extra_bits=t,this.extra_base=e,this.elems=i,this.max_length=s,this.has_stree=A&&A.length}let _,l,d;function M(A,t){this.dyn_tree=A,this.max_code=0,this.stat_desc=t}t(C);const D=A=>A<256?B[A]:B[256+(A>>>7)],R=(A,t)=>{A.pending_buf[A.pending++]=255&t,A.pending_buf[A.pending++]=t>>>8&255},S=(A,t,e)=>{A.bi_valid>16-e?(A.bi_buf|=t<<A.bi_valid&65535,R(A,A.bi_buf),A.bi_buf=t>>16-A.bi_valid,A.bi_valid+=e-16):(A.bi_buf|=t<<A.bi_valid&65535,A.bi_valid+=e)},Q=(A,t,e)=>{S(A,e[2*t],e[2*t+1])},f=(A,t)=>{let e=0;do{e|=1&A,A>>>=1,e<<=1}while(--t>0);return e>>>1},F=(A,t,e)=>{const i=new Array(16);let s,n,E=0;for(s=1;s<=a;s++)E=E+e[s-1]<<1,i[s]=E;for(n=0;n<=t;n++){let t=A[2*n+1];0!==t&&(A[2*n]=f(i[t]++,t))}},T=A=>{let t;for(t=0;t<i;t++)A.dyn_ltree[2*t]=0;for(t=0;t<s;t++)A.dyn_dtree[2*t]=0;for(t=0;t<19;t++)A.bl_tree[2*t]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},u=A=>{A.bi_valid>8?R(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},p=(A,t,e,i)=>{const s=2*t,a=2*e;return A[s]<A[a]||A[s]===A[a]&&i[t]<=i[e]},y=(A,t,e)=>{const i=A.heap[e];let s=e<<1;for(;s<=A.heap_len&&(s<A.heap_len&&p(t,A.heap[s+1],A.heap[s],A.depth)&&s++,!p(t,i,A.heap[s],A.depth));)A.heap[e]=A.heap[s],e=s,s<<=1;A.heap[e]=i},k=(A,t,i)=>{let s,a,h,r,g=0;if(0!==A.sym_next)do{s=255&A.pending_buf[A.sym_buf+g++],s+=(255&A.pending_buf[A.sym_buf+g++])<<8,a=A.pending_buf[A.sym_buf+g++],0===s?Q(A,a,t):(h=w[a],Q(A,h+e+1,t),r=n[h],0!==r&&(a-=c[h],S(A,a,r)),s--,h=D(s),Q(A,h,i),r=E[h],0!==r&&(s-=C[h],S(A,s,r)))}while(g<A.sym_next);Q(A,256,t)},H=(A,t)=>{const e=t.dyn_tree,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,n=t.stat_desc.elems;let E,h,r,g=-1;for(A.heap_len=0,A.heap_max=573,E=0;E<n;E++)0!==e[2*E]?(A.heap[++A.heap_len]=g=E,A.depth[E]=0):e[2*E+1]=0;for(;A.heap_len<2;)r=A.heap[++A.heap_len]=g<2?++g:0,e[2*r]=1,A.depth[r]=0,A.opt_len--,s&&(A.static_len-=i[2*r+1]);for(t.max_code=g,E=A.heap_len>>1;E>=1;E--)y(A,e,E);r=n;do{E=A.heap[1],A.heap[1]=A.heap[A.heap_len--],y(A,e,1),h=A.heap[1],A.heap[--A.heap_max]=E,A.heap[--A.heap_max]=h,e[2*r]=e[2*E]+e[2*h],A.depth[r]=(A.depth[E]>=A.depth[h]?A.depth[E]:A.depth[h])+1,e[2*E+1]=e[2*h+1]=r,A.heap[1]=r++,y(A,e,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,t)=>{const e=t.dyn_tree,i=t.max_code,s=t.stat_desc.static_tree,n=t.stat_desc.has_stree,E=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,r=t.stat_desc.max_length;let g,o,B,w,c,C,I=0;for(w=0;w<=a;w++)A.bl_count[w]=0;for(e[2*A.heap[A.heap_max]+1]=0,g=A.heap_max+1;g<573;g++)o=A.heap[g],w=e[2*e[2*o+1]+1]+1,w>r&&(w=r,I++),e[2*o+1]=w,o>i||(A.bl_count[w]++,c=0,o>=h&&(c=E[o-h]),C=e[2*o],A.opt_len+=C*(w+c),n&&(A.static_len+=C*(s[2*o+1]+c)));if(0!==I){do{for(w=r-1;0===A.bl_count[w];)w--;A.bl_count[w]--,A.bl_count[w+1]+=2,A.bl_count[r]--,I-=2}while(I>0);for(w=r;0!==w;w--)for(o=A.bl_count[w];0!==o;)B=A.heap[--g],B>i||(e[2*B+1]!==w&&(A.opt_len+=(w-e[2*B+1])*e[2*B],e[2*B+1]=w),o--)}})(A,t),F(e,g,A.bl_count)},P=(A,t,e)=>{let i,s,a=-1,n=t[1],E=0,h=7,r=4;for(0===n&&(h=138,r=3),t[2*(e+1)+1]=65535,i=0;i<=e;i++)s=n,n=t[2*(i+1)+1],++E<h&&s===n||(E<r?A.bl_tree[2*s]+=E:0!==s?(s!==a&&A.bl_tree[2*s]++,A.bl_tree[32]++):E<=10?A.bl_tree[34]++:A.bl_tree[36]++,E=0,a=s,0===n?(h=138,r=3):s===n?(h=6,r=3):(h=7,r=4))},O=(A,t,e)=>{let i,s,a=-1,n=t[1],E=0,h=7,r=4;for(0===n&&(h=138,r=3),i=0;i<=e;i++)if(s=n,n=t[2*(i+1)+1],!(++E<h&&s===n)){if(E<r)do{Q(A,s,A.bl_tree)}while(0!=--E);else 0!==s?(s!==a&&(Q(A,s,A.bl_tree),E--),Q(A,16,A.bl_tree),S(A,E-3,2)):E<=10?(Q(A,17,A.bl_tree),S(A,E-3,3)):(Q(A,18,A.bl_tree),S(A,E-11,7));E=0,a=s,0===n?(h=138,r=3):s===n?(h=6,r=3):(h=7,r=4)}};let U=!1;const G=(A,t,e,i)=>{S(A,0+(i?1:0),3),u(A),R(A,e),R(A,~e),e&&A.pending_buf.set(A.window.subarray(t,t+e),A.pending),A.pending+=e};var m=(A,t,i,s)=>{let a,n,E=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==A.dyn_ltree[2*t])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(t=32;t<e;t++)if(0!==A.dyn_ltree[2*t])return 1;return 0})(A)),H(A,A.l_desc),H(A,A.d_desc),E=(A=>{let t;for(P(A,A.dyn_ltree,A.l_desc.max_code),P(A,A.dyn_dtree,A.d_desc.max_code),H(A,A.bl_desc),t=18;t>=3&&0===A.bl_tree[2*r[t]+1];t--);return A.opt_len+=3*(t+1)+5+5+4,t})(A),a=A.opt_len+3+7>>>3,n=A.static_len+3+7>>>3,n<=a&&(a=n)):a=n=i+5,i+4<=a&&-1!==t?G(A,t,i,s):4===A.strategy||n===a?(S(A,2+(s?1:0),3),k(A,g,o)):(S(A,4+(s?1:0),3),((A,t,e,i)=>{let s;for(S(A,t-257,5),S(A,e-1,5),S(A,i-4,4),s=0;s<i;s++)S(A,A.bl_tree[2*r[s]+1],3);O(A,A.dyn_ltree,t-1),O(A,A.dyn_dtree,e-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,E+1),k(A,A.dyn_ltree,A.dyn_dtree)),T(A),s&&u(A)},Y={_tr_init:A=>{U||((()=>{let A,t,e,r,M;const D=new Array(16);for(e=0,r=0;r<28;r++)for(c[r]=e,A=0;A<1<<n[r];A++)w[e++]=r;for(w[e-1]=r,M=0,r=0;r<16;r++)for(C[r]=M,A=0;A<1<<E[r];A++)B[M++]=r;for(M>>=7;r<s;r++)for(C[r]=M<<7,A=0;A<1<<E[r]-7;A++)B[256+M++]=r;for(t=0;t<=a;t++)D[t]=0;for(A=0;A<=143;)g[2*A+1]=8,A++,D[8]++;for(;A<=255;)g[2*A+1]=9,A++,D[9]++;for(;A<=279;)g[2*A+1]=7,A++,D[7]++;for(;A<=287;)g[2*A+1]=8,A++,D[8]++;for(F(g,287,D),A=0;A<s;A++)o[2*A+1]=5,o[2*A]=f(A,5);_=new I(g,n,257,i,a),l=new I(o,E,0,s,a),d=new I(new Array(0),h,0,19,7)})(),U=!0),A.l_desc=new M(A.dyn_ltree,_),A.d_desc=new M(A.dyn_dtree,l),A.bl_desc=new M(A.bl_tree,d),A.bi_buf=0,A.bi_valid=0,T(A)},_tr_stored_block:G,_tr_flush_block:m,_tr_tally:(A,t,i)=>(A.pending_buf[A.sym_buf+A.sym_next++]=t,A.pending_buf[A.sym_buf+A.sym_next++]=t>>8,A.pending_buf[A.sym_buf+A.sym_next++]=i,0===t?A.dyn_ltree[2*i]++:(A.matches++,t--,A.dyn_ltree[2*(w[i]+e+1)]++,A.dyn_dtree[2*D(t)]++),A.sym_next===A.sym_end),_tr_align:A=>{S(A,2,3),Q(A,256,g),(A=>{16===A.bi_valid?(R(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var b=(A,t,e,i)=>{let s=65535&A|0,a=A>>>16&65535|0,n=0;for(;0!==e;){n=e>2e3?2e3:e,e-=n;do{s=s+t[i++]|0,a=a+s|0}while(--n);s%=65521,a%=65521}return s|a<<16|0};const K=new Uint32Array((()=>{let A,t=[];for(var e=0;e<256;e++){A=e;for(var i=0;i<8;i++)A=1&A?3988292384^A>>>1:A>>>1;t[e]=A}return t})());var x=(A,t,e,i)=>{const s=K,a=i+e;A^=-1;for(let e=i;e<a;e++)A=A>>>8^s[255&(A^t[e])];return-1^A},L={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},J={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:z,_tr_stored_block:N,_tr_flush_block:v,_tr_tally:j,_tr_align:Z}=Y,{Z_NO_FLUSH:W,Z_PARTIAL_FLUSH:X,Z_FULL_FLUSH:q,Z_FINISH:V,Z_BLOCK:$,Z_OK:AA,Z_STREAM_END:tA,Z_STREAM_ERROR:eA,Z_DATA_ERROR:iA,Z_BUF_ERROR:sA,Z_DEFAULT_COMPRESSION:aA,Z_FILTERED:nA,Z_HUFFMAN_ONLY:EA,Z_RLE:hA,Z_FIXED:rA,Z_DEFAULT_STRATEGY:gA,Z_UNKNOWN:oA,Z_DEFLATED:BA}=J,wA=258,cA=262,CA=42,IA=113,_A=666,lA=(A,t)=>(A.msg=L[t],t),dA=A=>2*A-(A>4?9:0),MA=A=>{let t=A.length;for(;--t>=0;)A[t]=0},DA=A=>{let t,e,i,s=A.w_size;t=A.hash_size,i=t;do{e=A.head[--i],A.head[i]=e>=s?e-s:0}while(--t);t=s,i=t;do{e=A.prev[--i],A.prev[i]=e>=s?e-s:0}while(--t)};let RA=(A,t,e)=>(t<<A.hash_shift^e)&A.hash_mask;const SA=A=>{const t=A.state;let e=t.pending;e>A.avail_out&&(e=A.avail_out),0!==e&&(A.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+e),A.next_out),A.next_out+=e,t.pending_out+=e,A.total_out+=e,A.avail_out-=e,t.pending-=e,0===t.pending&&(t.pending_out=0))},QA=(A,t)=>{v(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,t),A.block_start=A.strstart,SA(A.strm)},fA=(A,t)=>{A.pending_buf[A.pending++]=t},FA=(A,t)=>{A.pending_buf[A.pending++]=t>>>8&255,A.pending_buf[A.pending++]=255&t},TA=(A,t,e,i)=>{let s=A.avail_in;return s>i&&(s=i),0===s?0:(A.avail_in-=s,t.set(A.input.subarray(A.next_in,A.next_in+s),e),1===A.state.wrap?A.adler=b(A.adler,t,s,e):2===A.state.wrap&&(A.adler=x(A.adler,t,s,e)),A.next_in+=s,A.total_in+=s,s)},uA=(A,t)=>{let e,i,s=A.max_chain_length,a=A.strstart,n=A.prev_length,E=A.nice_match;const h=A.strstart>A.w_size-cA?A.strstart-(A.w_size-cA):0,r=A.window,g=A.w_mask,o=A.prev,B=A.strstart+wA;let w=r[a+n-1],c=r[a+n];A.prev_length>=A.good_match&&(s>>=2),E>A.lookahead&&(E=A.lookahead);do{if(e=t,r[e+n]===c&&r[e+n-1]===w&&r[e]===r[a]&&r[++e]===r[a+1]){a+=2,e++;do{}while(r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&r[++a]===r[++e]&&a<B);if(i=wA-(B-a),a=B-wA,i>n){if(A.match_start=t,n=i,i>=E)break;w=r[a+n-1],c=r[a+n]}}}while((t=o[t&g])>h&&0!=--s);return n<=A.lookahead?n:A.lookahead},pA=A=>{const t=A.w_size;let e,i,s;do{if(i=A.window_size-A.lookahead-A.strstart,A.strstart>=t+(t-cA)&&(A.window.set(A.window.subarray(t,t+t-i),0),A.match_start-=t,A.strstart-=t,A.block_start-=t,A.insert>A.strstart&&(A.insert=A.strstart),DA(A),i+=t),0===A.strm.avail_in)break;if(e=TA(A.strm,A.window,A.strstart+A.lookahead,i),A.lookahead+=e,A.lookahead+A.insert>=3)for(s=A.strstart-A.insert,A.ins_h=A.window[s],A.ins_h=RA(A,A.ins_h,A.window[s+1]);A.insert&&(A.ins_h=RA(A,A.ins_h,A.window[s+3-1]),A.prev[s&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=s,s++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<cA&&0!==A.strm.avail_in)},yA=(A,t)=>{let e,i,s,a=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,n=0,E=A.strm.avail_in;do{if(e=65535,s=A.bi_valid+42>>3,A.strm.avail_out<s)break;if(s=A.strm.avail_out-s,i=A.strstart-A.block_start,e>i+A.strm.avail_in&&(e=i+A.strm.avail_in),e>s&&(e=s),e<a&&(0===e&&t!==V||t===W||e!==i+A.strm.avail_in))break;n=t===V&&e===i+A.strm.avail_in?1:0,N(A,0,0,n),A.pending_buf[A.pending-4]=e,A.pending_buf[A.pending-3]=e>>8,A.pending_buf[A.pending-2]=~e,A.pending_buf[A.pending-1]=~e>>8,SA(A.strm),i&&(i>e&&(i=e),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+i),A.strm.next_out),A.strm.next_out+=i,A.strm.avail_out-=i,A.strm.total_out+=i,A.block_start+=i,e-=i),e&&(TA(A.strm,A.strm.output,A.strm.next_out,e),A.strm.next_out+=e,A.strm.avail_out-=e,A.strm.total_out+=e)}while(0===n);return E-=A.strm.avail_in,E&&(E>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=E&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-E,A.strm.next_in),A.strstart),A.strstart+=E,A.insert+=E>A.w_size-A.insert?A.w_size-A.insert:E),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),n?4:t!==W&&t!==V&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(s=A.window_size-A.strstart,A.strm.avail_in>s&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,s+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),s>A.strm.avail_in&&(s=A.strm.avail_in),s&&(TA(A.strm,A.window,A.strstart,s),A.strstart+=s,A.insert+=s>A.w_size-A.insert?A.w_size-A.insert:s),A.high_water<A.strstart&&(A.high_water=A.strstart),s=A.bi_valid+42>>3,s=A.pending_buf_size-s>65535?65535:A.pending_buf_size-s,a=s>A.w_size?A.w_size:s,i=A.strstart-A.block_start,(i>=a||(i||t===V)&&t!==W&&0===A.strm.avail_in&&i<=s)&&(e=i>s?s:i,n=t===V&&0===A.strm.avail_in&&e===i?1:0,N(A,A.block_start,e,n),A.block_start+=e,SA(A.strm)),n?3:1)},kA=(A,t)=>{let e,i;for(;;){if(A.lookahead<cA){if(pA(A),A.lookahead<cA&&t===W)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=RA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==e&&A.strstart-e<=A.w_size-cA&&(A.match_length=uA(A,e)),A.match_length>=3)if(i=j(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=RA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!=--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=RA(A,A.ins_h,A.window[A.strstart+1]);else i=j(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(i&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,t===V?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2},HA=(A,t)=>{let e,i,s;for(;;){if(A.lookahead<cA){if(pA(A),A.lookahead<cA&&t===W)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=RA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==e&&A.prev_length<A.max_lazy_match&&A.strstart-e<=A.w_size-cA&&(A.match_length=uA(A,e),A.match_length<=5&&(A.strategy===nA||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){s=A.strstart+A.lookahead-3,i=j(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=s&&(A.ins_h=RA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!=--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,i&&(QA(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(i=j(A,0,A.window[A.strstart-1]),i&&QA(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(i=j(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,t===V?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2};function PA(A,t,e,i,s){this.good_length=A,this.max_lazy=t,this.nice_length=e,this.max_chain=i,this.func=s}const OA=[new PA(0,0,0,0,yA),new PA(4,4,8,4,kA),new PA(4,5,16,8,kA),new PA(4,6,32,32,kA),new PA(4,4,16,16,HA),new PA(8,16,32,32,HA),new PA(8,16,128,128,HA),new PA(8,32,128,256,HA),new PA(32,128,258,1024,HA),new PA(32,258,258,4096,HA)];function UA(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=BA,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),MA(this.dyn_ltree),MA(this.dyn_dtree),MA(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),MA(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),MA(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const GA=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.status!==CA&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==IA&&t.status!==_A?1:0},mA=A=>{if(GA(A))return lA(A,eA);A.total_in=A.total_out=0,A.data_type=oA;const t=A.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?CA:IA,A.adler=2===t.wrap?0:1,t.last_flush=-2,z(t),AA},YA=A=>{const t=mA(A);var e;return t===AA&&((e=A.state).window_size=2*e.w_size,MA(e.head),e.max_lazy_match=OA[e.level].max_lazy,e.good_match=OA[e.level].good_length,e.nice_match=OA[e.level].nice_length,e.max_chain_length=OA[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),t},bA=(A,t,e,i,s,a)=>{if(!A)return eA;let n=1;if(t===aA&&(t=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||e!==BA||i<8||i>15||t<0||t>9||a<0||a>rA||8===i&&1!==n)return lA(A,eA);8===i&&(i=9);const E=new UA;return A.state=E,E.strm=A,E.status=CA,E.wrap=n,E.gzhead=null,E.w_bits=i,E.w_size=1<<E.w_bits,E.w_mask=E.w_size-1,E.hash_bits=s+7,E.hash_size=1<<E.hash_bits,E.hash_mask=E.hash_size-1,E.hash_shift=~~((E.hash_bits+3-1)/3),E.window=new Uint8Array(2*E.w_size),E.head=new Uint16Array(E.hash_size),E.prev=new Uint16Array(E.w_size),E.lit_bufsize=1<<s+6,E.pending_buf_size=4*E.lit_bufsize,E.pending_buf=new Uint8Array(E.pending_buf_size),E.sym_buf=E.lit_bufsize,E.sym_end=3*(E.lit_bufsize-1),E.level=t,E.strategy=a,E.method=e,YA(A)};var KA={deflateInit:(A,t)=>bA(A,t,BA,15,8,gA),deflateInit2:bA,deflateReset:YA,deflateResetKeep:mA,deflateSetHeader:(A,t)=>GA(A)||2!==A.state.wrap?eA:(A.state.gzhead=t,AA),deflate:(A,t)=>{if(GA(A)||t>$||t<0)return A?lA(A,eA):eA;const e=A.state;if(!A.output||0!==A.avail_in&&!A.input||e.status===_A&&t!==V)return lA(A,0===A.avail_out?sA:eA);const i=e.last_flush;if(e.last_flush=t,0!==e.pending){if(SA(A),0===A.avail_out)return e.last_flush=-1,AA}else if(0===A.avail_in&&dA(t)<=dA(i)&&t!==V)return lA(A,sA);if(e.status===_A&&0!==A.avail_in)return lA(A,sA);if(e.status===CA&&0===e.wrap&&(e.status=IA),e.status===CA){let t=BA+(e.w_bits-8<<4)<<8,i=-1;if(i=e.strategy>=EA||e.level<2?0:e.level<6?1:6===e.level?2:3,t|=i<<6,0!==e.strstart&&(t|=32),t+=31-t%31,FA(e,t),0!==e.strstart&&(FA(e,A.adler>>>16),FA(e,65535&A.adler)),A.adler=1,e.status=IA,SA(A),0!==e.pending)return e.last_flush=-1,AA}if(57===e.status)if(A.adler=0,fA(e,31),fA(e,139),fA(e,8),e.gzhead)fA(e,(e.gzhead.text?1:0)+(e.gzhead.hcrc?2:0)+(e.gzhead.extra?4:0)+(e.gzhead.name?8:0)+(e.gzhead.comment?16:0)),fA(e,255&e.gzhead.time),fA(e,e.gzhead.time>>8&255),fA(e,e.gzhead.time>>16&255),fA(e,e.gzhead.time>>24&255),fA(e,9===e.level?2:e.strategy>=EA||e.level<2?4:0),fA(e,255&e.gzhead.os),e.gzhead.extra&&e.gzhead.extra.length&&(fA(e,255&e.gzhead.extra.length),fA(e,e.gzhead.extra.length>>8&255)),e.gzhead.hcrc&&(A.adler=x(A.adler,e.pending_buf,e.pending,0)),e.gzindex=0,e.status=69;else if(fA(e,0),fA(e,0),fA(e,0),fA(e,0),fA(e,0),fA(e,9===e.level?2:e.strategy>=EA||e.level<2?4:0),fA(e,3),e.status=IA,SA(A),0!==e.pending)return e.last_flush=-1,AA;if(69===e.status){if(e.gzhead.extra){let t=e.pending,i=(65535&e.gzhead.extra.length)-e.gzindex;for(;e.pending+i>e.pending_buf_size;){let s=e.pending_buf_size-e.pending;if(e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex,e.gzindex+s),e.pending),e.pending=e.pending_buf_size,e.gzhead.hcrc&&e.pending>t&&(A.adler=x(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex+=s,SA(A),0!==e.pending)return e.last_flush=-1,AA;t=0,i-=s}let s=new Uint8Array(e.gzhead.extra);e.pending_buf.set(s.subarray(e.gzindex,e.gzindex+i),e.pending),e.pending+=i,e.gzhead.hcrc&&e.pending>t&&(A.adler=x(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex=0}e.status=73}if(73===e.status){if(e.gzhead.name){let t,i=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>i&&(A.adler=x(A.adler,e.pending_buf,e.pending-i,i)),SA(A),0!==e.pending)return e.last_flush=-1,AA;i=0}t=e.gzindex<e.gzhead.name.length?255&e.gzhead.name.charCodeAt(e.gzindex++):0,fA(e,t)}while(0!==t);e.gzhead.hcrc&&e.pending>i&&(A.adler=x(A.adler,e.pending_buf,e.pending-i,i)),e.gzindex=0}e.status=91}if(91===e.status){if(e.gzhead.comment){let t,i=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>i&&(A.adler=x(A.adler,e.pending_buf,e.pending-i,i)),SA(A),0!==e.pending)return e.last_flush=-1,AA;i=0}t=e.gzindex<e.gzhead.comment.length?255&e.gzhead.comment.charCodeAt(e.gzindex++):0,fA(e,t)}while(0!==t);e.gzhead.hcrc&&e.pending>i&&(A.adler=x(A.adler,e.pending_buf,e.pending-i,i))}e.status=103}if(103===e.status){if(e.gzhead.hcrc){if(e.pending+2>e.pending_buf_size&&(SA(A),0!==e.pending))return e.last_flush=-1,AA;fA(e,255&A.adler),fA(e,A.adler>>8&255),A.adler=0}if(e.status=IA,SA(A),0!==e.pending)return e.last_flush=-1,AA}if(0!==A.avail_in||0!==e.lookahead||t!==W&&e.status!==_A){let i=0===e.level?yA(e,t):e.strategy===EA?((A,t)=>{let e;for(;;){if(0===A.lookahead&&(pA(A),0===A.lookahead)){if(t===W)return 1;break}if(A.match_length=0,e=j(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,e&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===V?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2})(e,t):e.strategy===hA?((A,t)=>{let e,i,s,a;const n=A.window;for(;;){if(A.lookahead<=wA){if(pA(A),A.lookahead<=wA&&t===W)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(s=A.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){a=A.strstart+wA;do{}while(i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&s<a);A.match_length=wA-(a-s),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(e=j(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(e=j(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),e&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===V?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2})(e,t):OA[e.level].func(e,t);if(3!==i&&4!==i||(e.status=_A),1===i||3===i)return 0===A.avail_out&&(e.last_flush=-1),AA;if(2===i&&(t===X?Z(e):t!==$&&(N(e,0,0,!1),t===q&&(MA(e.head),0===e.lookahead&&(e.strstart=0,e.block_start=0,e.insert=0))),SA(A),0===A.avail_out))return e.last_flush=-1,AA}return t!==V?AA:e.wrap<=0?tA:(2===e.wrap?(fA(e,255&A.adler),fA(e,A.adler>>8&255),fA(e,A.adler>>16&255),fA(e,A.adler>>24&255),fA(e,255&A.total_in),fA(e,A.total_in>>8&255),fA(e,A.total_in>>16&255),fA(e,A.total_in>>24&255)):(FA(e,A.adler>>>16),FA(e,65535&A.adler)),SA(A),e.wrap>0&&(e.wrap=-e.wrap),0!==e.pending?AA:tA)},deflateEnd:A=>{if(GA(A))return eA;const t=A.state.status;return A.state=null,t===IA?lA(A,iA):AA},deflateSetDictionary:(A,t)=>{let e=t.length;if(GA(A))return eA;const i=A.state,s=i.wrap;if(2===s||1===s&&i.status!==CA||i.lookahead)return eA;if(1===s&&(A.adler=b(A.adler,t,e,0)),i.wrap=0,e>=i.w_size){0===s&&(MA(i.head),i.strstart=0,i.block_start=0,i.insert=0);let A=new Uint8Array(i.w_size);A.set(t.subarray(e-i.w_size,e),0),t=A,e=i.w_size}const a=A.avail_in,n=A.next_in,E=A.input;for(A.avail_in=e,A.next_in=0,A.input=t,pA(i);i.lookahead>=3;){let A=i.strstart,t=i.lookahead-2;do{i.ins_h=RA(i,i.ins_h,i.window[A+3-1]),i.prev[A&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=A,A++}while(--t);i.strstart=A,i.lookahead=2,pA(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,A.next_in=n,A.input=E,A.avail_in=a,i.wrap=s,AA},deflateInfo:\"pako deflate (from Nodeca project)\"};const xA=(A,t)=>Object.prototype.hasOwnProperty.call(A,t);var LA={assign:function(A){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const e=t.shift();if(e){if(\"object\"!=typeof e)throw new TypeError(e+\"must be non-object\");for(const t in e)xA(e,t)&&(A[t]=e[t])}}return A},flattenChunks:A=>{let t=0;for(let e=0,i=A.length;e<i;e++)t+=A[e].length;const e=new Uint8Array(t);for(let t=0,i=0,s=A.length;t<s;t++){let s=A[t];e.set(s,i),i+=s.length}return e}};let JA=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){JA=!1}const zA=new Uint8Array(256);for(let A=0;A<256;A++)zA[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;zA[254]=zA[254]=1;var NA={string2buf:A=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let t,e,i,s,a,n=A.length,E=0;for(s=0;s<n;s++)e=A.charCodeAt(s),55296==(64512&e)&&s+1<n&&(i=A.charCodeAt(s+1),56320==(64512&i)&&(e=65536+(e-55296<<10)+(i-56320),s++)),E+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(E),a=0,s=0;a<E;s++)e=A.charCodeAt(s),55296==(64512&e)&&s+1<n&&(i=A.charCodeAt(s+1),56320==(64512&i)&&(e=65536+(e-55296<<10)+(i-56320),s++)),e<128?t[a++]=e:e<2048?(t[a++]=192|e>>>6,t[a++]=128|63&e):e<65536?(t[a++]=224|e>>>12,t[a++]=128|e>>>6&63,t[a++]=128|63&e):(t[a++]=240|e>>>18,t[a++]=128|e>>>12&63,t[a++]=128|e>>>6&63,t[a++]=128|63&e);return t},buf2string:(A,t)=>{const e=t||A.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,t));let i,s;const a=new Array(2*e);for(s=0,i=0;i<e;){let t=A[i++];if(t<128){a[s++]=t;continue}let n=zA[t];if(n>4)a[s++]=65533,i+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&i<e;)t=t<<6|63&A[i++],n--;n>1?a[s++]=65533:t<65536?a[s++]=t:(t-=65536,a[s++]=55296|t>>10&1023,a[s++]=56320|1023&t)}}return((A,t)=>{if(t<65534&&A.subarray&&JA)return String.fromCharCode.apply(null,A.length===t?A:A.subarray(0,t));let e=\"\";for(let i=0;i<t;i++)e+=String.fromCharCode(A[i]);return e})(a,s)},utf8border:(A,t)=>{(t=t||A.length)>A.length&&(t=A.length);let e=t-1;for(;e>=0&&128==(192&A[e]);)e--;return e<0||0===e?t:e+zA[A[e]]>t?e:t}};var vA=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};const jA=Object.prototype.toString,{Z_NO_FLUSH:ZA,Z_SYNC_FLUSH:WA,Z_FULL_FLUSH:XA,Z_FINISH:qA,Z_OK:VA,Z_STREAM_END:$A,Z_DEFAULT_COMPRESSION:At,Z_DEFAULT_STRATEGY:tt,Z_DEFLATED:et}=J;function it(A){this.options=LA.assign({level:At,method:et,chunkSize:16384,windowBits:15,memLevel:8,strategy:tt},A||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new vA,this.strm.avail_out=0;let e=KA.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==VA)throw new Error(L[e]);if(t.header&&KA.deflateSetHeader(this.strm,t.header),t.dictionary){let A;if(A=\"string\"==typeof t.dictionary?NA.string2buf(t.dictionary):\"[object ArrayBuffer]\"===jA.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,e=KA.deflateSetDictionary(this.strm,A),e!==VA)throw new Error(L[e]);this._dict_set=!0}}function st(A,t){const e=new it(t);if(e.push(A,!0),e.err)throw e.msg||L[e.err];return e.result}it.prototype.push=function(A,t){const e=this.strm,i=this.options.chunkSize;let s,a;if(this.ended)return!1;for(a=t===~~t?t:!0===t?qA:ZA,\"string\"==typeof A?e.input=NA.string2buf(A):\"[object ArrayBuffer]\"===jA.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;)if(0===e.avail_out&&(e.output=new Uint8Array(i),e.next_out=0,e.avail_out=i),(a===WA||a===XA)&&e.avail_out<=6)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else{if(s=KA.deflate(e,a),s===$A)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),s=KA.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===VA;if(0!==e.avail_out){if(a>0&&e.next_out>0)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else if(0===e.avail_in)break}else this.onData(e.output)}return!0},it.prototype.onData=function(A){this.chunks.push(A)},it.prototype.onEnd=function(A){A===VA&&(this.result=LA.flattenChunks(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var at={Deflate:it,deflate:st,deflateRaw:function(A,t){return(t=t||{}).raw=!0,st(A,t)},gzip:function(A,t){return(t=t||{}).gzip=!0,st(A,t)},constants:J};const nt=16209;var Et=function(A,t){let e,i,s,a,n,E,h,r,g,o,B,w,c,C,I,_,l,d,M,D,R,S,Q,f;const F=A.state;e=A.next_in,Q=A.input,i=e+(A.avail_in-5),s=A.next_out,f=A.output,a=s-(t-A.avail_out),n=s+(A.avail_out-257),E=F.dmax,h=F.wsize,r=F.whave,g=F.wnext,o=F.window,B=F.hold,w=F.bits,c=F.lencode,C=F.distcode,I=(1<<F.lenbits)-1,_=(1<<F.distbits)-1;A:do{w<15&&(B+=Q[e++]<<w,w+=8,B+=Q[e++]<<w,w+=8),l=c[B&I];t:for(;;){if(d=l>>>24,B>>>=d,w-=d,d=l>>>16&255,0===d)f[s++]=65535&l;else{if(!(16&d)){if(0==(64&d)){l=c[(65535&l)+(B&(1<<d)-1)];continue t}if(32&d){F.mode=16191;break A}A.msg=\"invalid literal/length code\",F.mode=nt;break A}M=65535&l,d&=15,d&&(w<d&&(B+=Q[e++]<<w,w+=8),M+=B&(1<<d)-1,B>>>=d,w-=d),w<15&&(B+=Q[e++]<<w,w+=8,B+=Q[e++]<<w,w+=8),l=C[B&_];e:for(;;){if(d=l>>>24,B>>>=d,w-=d,d=l>>>16&255,!(16&d)){if(0==(64&d)){l=C[(65535&l)+(B&(1<<d)-1)];continue e}A.msg=\"invalid distance code\",F.mode=nt;break A}if(D=65535&l,d&=15,w<d&&(B+=Q[e++]<<w,w+=8,w<d&&(B+=Q[e++]<<w,w+=8)),D+=B&(1<<d)-1,D>E){A.msg=\"invalid distance too far back\",F.mode=nt;break A}if(B>>>=d,w-=d,d=s-a,D>d){if(d=D-d,d>r&&F.sane){A.msg=\"invalid distance too far back\",F.mode=nt;break A}if(R=0,S=o,0===g){if(R+=h-d,d<M){M-=d;do{f[s++]=o[R++]}while(--d);R=s-D,S=f}}else if(g<d){if(R+=h+g-d,d-=g,d<M){M-=d;do{f[s++]=o[R++]}while(--d);if(R=0,g<M){d=g,M-=d;do{f[s++]=o[R++]}while(--d);R=s-D,S=f}}}else if(R+=g-d,d<M){M-=d;do{f[s++]=o[R++]}while(--d);R=s-D,S=f}for(;M>2;)f[s++]=S[R++],f[s++]=S[R++],f[s++]=S[R++],M-=3;M&&(f[s++]=S[R++],M>1&&(f[s++]=S[R++]))}else{R=s-D;do{f[s++]=f[R++],f[s++]=f[R++],f[s++]=f[R++],M-=3}while(M>2);M&&(f[s++]=f[R++],M>1&&(f[s++]=f[R++]))}break}}break}}while(e<i&&s<n);M=w>>3,e-=M,w-=M<<3,B&=(1<<w)-1,A.next_in=e,A.next_out=s,A.avail_in=e<i?i-e+5:5-(e-i),A.avail_out=s<n?n-s+257:257-(s-n),F.hold=B,F.bits=w};const ht=15,rt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),gt=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ot=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Bt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var wt=(A,t,e,i,s,a,n,E)=>{const h=E.bits;let r,g,o,B,w,c,C=0,I=0,_=0,l=0,d=0,M=0,D=0,R=0,S=0,Q=0,f=null;const F=new Uint16Array(16),T=new Uint16Array(16);let u,p,y,k=null;for(C=0;C<=ht;C++)F[C]=0;for(I=0;I<i;I++)F[t[e+I]]++;for(d=h,l=ht;l>=1&&0===F[l];l--);if(d>l&&(d=l),0===l)return s[a++]=20971520,s[a++]=20971520,E.bits=1,0;for(_=1;_<l&&0===F[_];_++);for(d<_&&(d=_),R=1,C=1;C<=ht;C++)if(R<<=1,R-=F[C],R<0)return-1;if(R>0&&(0===A||1!==l))return-1;for(T[1]=0,C=1;C<ht;C++)T[C+1]=T[C]+F[C];for(I=0;I<i;I++)0!==t[e+I]&&(n[T[t[e+I]]++]=I);if(0===A?(f=k=n,c=20):1===A?(f=rt,k=gt,c=257):(f=ot,k=Bt,c=0),Q=0,I=0,C=_,w=a,M=d,D=0,o=-1,S=1<<d,B=S-1,1===A&&S>852||2===A&&S>592)return 1;for(;;){u=C-D,n[I]+1<c?(p=0,y=n[I]):n[I]>=c?(p=k[n[I]-c],y=f[n[I]-c]):(p=96,y=0),r=1<<C-D,g=1<<M,_=g;do{g-=r,s[w+(Q>>D)+g]=u<<24|p<<16|y|0}while(0!==g);for(r=1<<C-1;Q&r;)r>>=1;if(0!==r?(Q&=r-1,Q+=r):Q=0,I++,0==--F[C]){if(C===l)break;C=t[e+n[I]]}if(C>d&&(Q&B)!==o){for(0===D&&(D=d),w+=_,M=C-D,R=1<<M;M+D<l&&(R-=F[M+D],!(R<=0));)M++,R<<=1;if(S+=1<<M,1===A&&S>852||2===A&&S>592)return 1;o=Q&B,s[o]=d<<24|M<<16|w-a|0}}return 0!==Q&&(s[w+Q]=C-D<<24|64<<16|0),E.bits=d,0};const{Z_FINISH:ct,Z_BLOCK:Ct,Z_TREES:It,Z_OK:_t,Z_STREAM_END:lt,Z_NEED_DICT:dt,Z_STREAM_ERROR:Mt,Z_DATA_ERROR:Dt,Z_MEM_ERROR:Rt,Z_BUF_ERROR:St,Z_DEFLATED:Qt}=J,ft=16180,Ft=16190,Tt=16191,ut=16192,pt=16194,yt=16199,kt=16200,Ht=16206,Pt=16209,Ot=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Gt=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.mode<ft||t.mode>16211?1:0},mt=A=>{if(Gt(A))return Mt;const t=A.state;return A.total_in=A.total_out=t.total=0,A.msg=\"\",t.wrap&&(A.adler=1&t.wrap),t.mode=ft,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Yt=A=>{if(Gt(A))return Mt;const t=A.state;return t.wsize=0,t.whave=0,t.wnext=0,mt(A)},bt=(A,t)=>{let e;if(Gt(A))return Mt;const i=A.state;return t<0?(e=0,t=-t):(e=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Mt:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=e,i.wbits=t,Yt(A))},Kt=(A,t)=>{if(!A)return Mt;const e=new Ut;A.state=e,e.strm=A,e.window=null,e.mode=ft;const i=bt(A,t);return i!==_t&&(A.state=null),i};let xt,Lt,Jt=!0;const zt=A=>{if(Jt){xt=new Int32Array(512),Lt=new Int32Array(32);let t=0;for(;t<144;)A.lens[t++]=8;for(;t<256;)A.lens[t++]=9;for(;t<280;)A.lens[t++]=7;for(;t<288;)A.lens[t++]=8;for(wt(1,A.lens,0,288,xt,0,A.work,{bits:9}),t=0;t<32;)A.lens[t++]=5;wt(2,A.lens,0,32,Lt,0,A.work,{bits:5}),Jt=!1}A.lencode=xt,A.lenbits=9,A.distcode=Lt,A.distbits=5},Nt=(A,t,e,i)=>{let s;const a=A.state;return null===a.window&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(e-a.wsize,e),0),a.wnext=0,a.whave=a.wsize):(s=a.wsize-a.wnext,s>i&&(s=i),a.window.set(t.subarray(e-i,e-i+s),a.wnext),(i-=s)?(a.window.set(t.subarray(e-i,e),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=s))),0};var vt={inflateReset:Yt,inflateReset2:bt,inflateResetKeep:mt,inflateInit:A=>Kt(A,15),inflateInit2:Kt,inflate:(A,t)=>{let e,i,s,a,n,E,h,r,g,o,B,w,c,C,I,_,l,d,M,D,R,S,Q=0;const f=new Uint8Array(4);let F,T;const u=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Gt(A)||!A.output||!A.input&&0!==A.avail_in)return Mt;e=A.state,e.mode===Tt&&(e.mode=ut),n=A.next_out,s=A.output,h=A.avail_out,a=A.next_in,i=A.input,E=A.avail_in,r=e.hold,g=e.bits,o=E,B=h,S=_t;A:for(;;)switch(e.mode){case ft:if(0===e.wrap){e.mode=ut;break}for(;g<16;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(2&e.wrap&&35615===r){0===e.wbits&&(e.wbits=15),e.check=0,f[0]=255&r,f[1]=r>>>8&255,e.check=x(e.check,f,2,0),r=0,g=0,e.mode=16181;break}if(e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&r)<<8)+(r>>8))%31){A.msg=\"incorrect header check\",e.mode=Pt;break}if((15&r)!==Qt){A.msg=\"unknown compression method\",e.mode=Pt;break}if(r>>>=4,g-=4,R=8+(15&r),0===e.wbits&&(e.wbits=R),R>15||R>e.wbits){A.msg=\"invalid window size\",e.mode=Pt;break}e.dmax=1<<e.wbits,e.flags=0,A.adler=e.check=1,e.mode=512&r?16189:Tt,r=0,g=0;break;case 16181:for(;g<16;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(e.flags=r,(255&e.flags)!==Qt){A.msg=\"unknown compression method\",e.mode=Pt;break}if(57344&e.flags){A.msg=\"unknown header flags set\",e.mode=Pt;break}e.head&&(e.head.text=r>>8&1),512&e.flags&&4&e.wrap&&(f[0]=255&r,f[1]=r>>>8&255,e.check=x(e.check,f,2,0)),r=0,g=0,e.mode=16182;case 16182:for(;g<32;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.head&&(e.head.time=r),512&e.flags&&4&e.wrap&&(f[0]=255&r,f[1]=r>>>8&255,f[2]=r>>>16&255,f[3]=r>>>24&255,e.check=x(e.check,f,4,0)),r=0,g=0,e.mode=16183;case 16183:for(;g<16;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.head&&(e.head.xflags=255&r,e.head.os=r>>8),512&e.flags&&4&e.wrap&&(f[0]=255&r,f[1]=r>>>8&255,e.check=x(e.check,f,2,0)),r=0,g=0,e.mode=16184;case 16184:if(1024&e.flags){for(;g<16;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.length=r,e.head&&(e.head.extra_len=r),512&e.flags&&4&e.wrap&&(f[0]=255&r,f[1]=r>>>8&255,e.check=x(e.check,f,2,0)),r=0,g=0}else e.head&&(e.head.extra=null);e.mode=16185;case 16185:if(1024&e.flags&&(w=e.length,w>E&&(w=E),w&&(e.head&&(R=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(i.subarray(a,a+w),R)),512&e.flags&&4&e.wrap&&(e.check=x(e.check,i,w,a)),E-=w,a+=w,e.length-=w),e.length))break A;e.length=0,e.mode=16186;case 16186:if(2048&e.flags){if(0===E)break A;w=0;do{R=i[a+w++],e.head&&R&&e.length<65536&&(e.head.name+=String.fromCharCode(R))}while(R&&w<E);if(512&e.flags&&4&e.wrap&&(e.check=x(e.check,i,w,a)),E-=w,a+=w,R)break A}else e.head&&(e.head.name=null);e.length=0,e.mode=16187;case 16187:if(4096&e.flags){if(0===E)break A;w=0;do{R=i[a+w++],e.head&&R&&e.length<65536&&(e.head.comment+=String.fromCharCode(R))}while(R&&w<E);if(512&e.flags&&4&e.wrap&&(e.check=x(e.check,i,w,a)),E-=w,a+=w,R)break A}else e.head&&(e.head.comment=null);e.mode=16188;case 16188:if(512&e.flags){for(;g<16;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(4&e.wrap&&r!==(65535&e.check)){A.msg=\"header crc mismatch\",e.mode=Pt;break}r=0,g=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),A.adler=e.check=0,e.mode=Tt;break;case 16189:for(;g<32;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}A.adler=e.check=Ot(r),r=0,g=0,e.mode=Ft;case Ft:if(0===e.havedict)return A.next_out=n,A.avail_out=h,A.next_in=a,A.avail_in=E,e.hold=r,e.bits=g,dt;A.adler=e.check=1,e.mode=Tt;case Tt:if(t===Ct||t===It)break A;case ut:if(e.last){r>>>=7&g,g-=7&g,e.mode=Ht;break}for(;g<3;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}switch(e.last=1&r,r>>>=1,g-=1,3&r){case 0:e.mode=16193;break;case 1:if(zt(e),e.mode=yt,t===It){r>>>=2,g-=2;break A}break;case 2:e.mode=16196;break;case 3:A.msg=\"invalid block type\",e.mode=Pt}r>>>=2,g-=2;break;case 16193:for(r>>>=7&g,g-=7&g;g<32;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if((65535&r)!=(r>>>16^65535)){A.msg=\"invalid stored block lengths\",e.mode=Pt;break}if(e.length=65535&r,r=0,g=0,e.mode=pt,t===It)break A;case pt:e.mode=16195;case 16195:if(w=e.length,w){if(w>E&&(w=E),w>h&&(w=h),0===w)break A;s.set(i.subarray(a,a+w),n),E-=w,a+=w,h-=w,n+=w,e.length-=w;break}e.mode=Tt;break;case 16196:for(;g<14;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(e.nlen=257+(31&r),r>>>=5,g-=5,e.ndist=1+(31&r),r>>>=5,g-=5,e.ncode=4+(15&r),r>>>=4,g-=4,e.nlen>286||e.ndist>30){A.msg=\"too many length or distance symbols\",e.mode=Pt;break}e.have=0,e.mode=16197;case 16197:for(;e.have<e.ncode;){for(;g<3;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.lens[u[e.have++]]=7&r,r>>>=3,g-=3}for(;e.have<19;)e.lens[u[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,F={bits:e.lenbits},S=wt(0,e.lens,0,19,e.lencode,0,e.work,F),e.lenbits=F.bits,S){A.msg=\"invalid code lengths set\",e.mode=Pt;break}e.have=0,e.mode=16198;case 16198:for(;e.have<e.nlen+e.ndist;){for(;Q=e.lencode[r&(1<<e.lenbits)-1],I=Q>>>24,_=Q>>>16&255,l=65535&Q,!(I<=g);){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(l<16)r>>>=I,g-=I,e.lens[e.have++]=l;else{if(16===l){for(T=I+2;g<T;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(r>>>=I,g-=I,0===e.have){A.msg=\"invalid bit length repeat\",e.mode=Pt;break}R=e.lens[e.have-1],w=3+(3&r),r>>>=2,g-=2}else if(17===l){for(T=I+3;g<T;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}r>>>=I,g-=I,R=0,w=3+(7&r),r>>>=3,g-=3}else{for(T=I+7;g<T;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}r>>>=I,g-=I,R=0,w=11+(127&r),r>>>=7,g-=7}if(e.have+w>e.nlen+e.ndist){A.msg=\"invalid bit length repeat\",e.mode=Pt;break}for(;w--;)e.lens[e.have++]=R}}if(e.mode===Pt)break;if(0===e.lens[256]){A.msg=\"invalid code -- missing end-of-block\",e.mode=Pt;break}if(e.lenbits=9,F={bits:e.lenbits},S=wt(1,e.lens,0,e.nlen,e.lencode,0,e.work,F),e.lenbits=F.bits,S){A.msg=\"invalid literal/lengths set\",e.mode=Pt;break}if(e.distbits=6,e.distcode=e.distdyn,F={bits:e.distbits},S=wt(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,F),e.distbits=F.bits,S){A.msg=\"invalid distances set\",e.mode=Pt;break}if(e.mode=yt,t===It)break A;case yt:e.mode=kt;case kt:if(E>=6&&h>=258){A.next_out=n,A.avail_out=h,A.next_in=a,A.avail_in=E,e.hold=r,e.bits=g,Et(A,B),n=A.next_out,s=A.output,h=A.avail_out,a=A.next_in,i=A.input,E=A.avail_in,r=e.hold,g=e.bits,e.mode===Tt&&(e.back=-1);break}for(e.back=0;Q=e.lencode[r&(1<<e.lenbits)-1],I=Q>>>24,_=Q>>>16&255,l=65535&Q,!(I<=g);){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(_&&0==(240&_)){for(d=I,M=_,D=l;Q=e.lencode[D+((r&(1<<d+M)-1)>>d)],I=Q>>>24,_=Q>>>16&255,l=65535&Q,!(d+I<=g);){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}r>>>=d,g-=d,e.back+=d}if(r>>>=I,g-=I,e.back+=I,e.length=l,0===_){e.mode=16205;break}if(32&_){e.back=-1,e.mode=Tt;break}if(64&_){A.msg=\"invalid literal/length code\",e.mode=Pt;break}e.extra=15&_,e.mode=16201;case 16201:if(e.extra){for(T=e.extra;g<T;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.length+=r&(1<<e.extra)-1,r>>>=e.extra,g-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=16202;case 16202:for(;Q=e.distcode[r&(1<<e.distbits)-1],I=Q>>>24,_=Q>>>16&255,l=65535&Q,!(I<=g);){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(0==(240&_)){for(d=I,M=_,D=l;Q=e.distcode[D+((r&(1<<d+M)-1)>>d)],I=Q>>>24,_=Q>>>16&255,l=65535&Q,!(d+I<=g);){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}r>>>=d,g-=d,e.back+=d}if(r>>>=I,g-=I,e.back+=I,64&_){A.msg=\"invalid distance code\",e.mode=Pt;break}e.offset=l,e.extra=15&_,e.mode=16203;case 16203:if(e.extra){for(T=e.extra;g<T;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}e.offset+=r&(1<<e.extra)-1,r>>>=e.extra,g-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){A.msg=\"invalid distance too far back\",e.mode=Pt;break}e.mode=16204;case 16204:if(0===h)break A;if(w=B-h,e.offset>w){if(w=e.offset-w,w>e.whave&&e.sane){A.msg=\"invalid distance too far back\",e.mode=Pt;break}w>e.wnext?(w-=e.wnext,c=e.wsize-w):c=e.wnext-w,w>e.length&&(w=e.length),C=e.window}else C=s,c=n-e.offset,w=e.length;w>h&&(w=h),h-=w,e.length-=w;do{s[n++]=C[c++]}while(--w);0===e.length&&(e.mode=kt);break;case 16205:if(0===h)break A;s[n++]=e.length,h--,e.mode=kt;break;case Ht:if(e.wrap){for(;g<32;){if(0===E)break A;E--,r|=i[a++]<<g,g+=8}if(B-=h,A.total_out+=B,e.total+=B,4&e.wrap&&B&&(A.adler=e.check=e.flags?x(e.check,s,B,n-B):b(e.check,s,B,n-B)),B=h,4&e.wrap&&(e.flags?r:Ot(r))!==e.check){A.msg=\"incorrect data check\",e.mode=Pt;break}r=0,g=0}e.mode=16207;case 16207:if(e.wrap&&e.flags){for(;g<32;){if(0===E)break A;E--,r+=i[a++]<<g,g+=8}if(4&e.wrap&&r!==(4294967295&e.total)){A.msg=\"incorrect length check\",e.mode=Pt;break}r=0,g=0}e.mode=16208;case 16208:S=lt;break A;case Pt:S=Dt;break A;case 16210:return Rt;default:return Mt}return A.next_out=n,A.avail_out=h,A.next_in=a,A.avail_in=E,e.hold=r,e.bits=g,(e.wsize||B!==A.avail_out&&e.mode<Pt&&(e.mode<Ht||t!==ct))&&Nt(A,A.output,A.next_out,B-A.avail_out),o-=A.avail_in,B-=A.avail_out,A.total_in+=o,A.total_out+=B,e.total+=B,4&e.wrap&&B&&(A.adler=e.check=e.flags?x(e.check,s,B,A.next_out-B):b(e.check,s,B,A.next_out-B)),A.data_type=e.bits+(e.last?64:0)+(e.mode===Tt?128:0)+(e.mode===yt||e.mode===pt?256:0),(0===o&&0===B||t===ct)&&S===_t&&(S=St),S},inflateEnd:A=>{if(Gt(A))return Mt;let t=A.state;return t.window&&(t.window=null),A.state=null,_t},inflateGetHeader:(A,t)=>{if(Gt(A))return Mt;const e=A.state;return 0==(2&e.wrap)?Mt:(e.head=t,t.done=!1,_t)},inflateSetDictionary:(A,t)=>{const e=t.length;let i,s,a;return Gt(A)?Mt:(i=A.state,0!==i.wrap&&i.mode!==Ft?Mt:i.mode===Ft&&(s=1,s=b(s,t,e,0),s!==i.check)?Dt:(a=Nt(A,t,e,e),a?(i.mode=16210,Rt):(i.havedict=1,_t)))},inflateInfo:\"pako inflate (from Nodeca project)\"};var jt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const Zt=Object.prototype.toString,{Z_NO_FLUSH:Wt,Z_FINISH:Xt,Z_OK:qt,Z_STREAM_END:Vt,Z_NEED_DICT:$t,Z_STREAM_ERROR:Ae,Z_DATA_ERROR:te,Z_MEM_ERROR:ee}=J;function ie(A){this.options=LA.assign({chunkSize:65536,windowBits:15,to:\"\"},A||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||A&&A.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new vA,this.strm.avail_out=0;let e=vt.inflateInit2(this.strm,t.windowBits);if(e!==qt)throw new Error(L[e]);if(this.header=new jt,vt.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=NA.string2buf(t.dictionary):\"[object ArrayBuffer]\"===Zt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(e=vt.inflateSetDictionary(this.strm,t.dictionary),e!==qt)))throw new Error(L[e])}function se(A,t){const e=new ie(t);if(e.push(A),e.err)throw e.msg||L[e.err];return e.result}ie.prototype.push=function(A,t){const e=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let a,n,E;if(this.ended)return!1;for(n=t===~~t?t:!0===t?Xt:Wt,\"[object ArrayBuffer]\"===Zt.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;){for(0===e.avail_out&&(e.output=new Uint8Array(i),e.next_out=0,e.avail_out=i),a=vt.inflate(e,n),a===$t&&s&&(a=vt.inflateSetDictionary(e,s),a===qt?a=vt.inflate(e,n):a===te&&(a=$t));e.avail_in>0&&a===Vt&&e.state.wrap>0&&0!==A[e.next_in];)vt.inflateReset(e),a=vt.inflate(e,n);switch(a){case Ae:case te:case $t:case ee:return this.onEnd(a),this.ended=!0,!1}if(E=e.avail_out,e.next_out&&(0===e.avail_out||a===Vt))if(\"string\"===this.options.to){let A=NA.utf8border(e.output,e.next_out),t=e.next_out-A,s=NA.buf2string(e.output,A);e.next_out=t,e.avail_out=i-t,t&&e.output.set(e.output.subarray(A,A+t),0),this.onData(s)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(a!==qt||0!==E){if(a===Vt)return a=vt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===e.avail_in)break}}return!0},ie.prototype.onData=function(A){this.chunks.push(A)},ie.prototype.onEnd=function(A){A===qt&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=LA.flattenChunks(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var ae={Inflate:ie,inflate:se,inflateRaw:function(A,t){return(t=t||{}).raw=!0,se(A,t)},ungzip:se,constants:J};const{Deflate:ne,deflate:Ee,deflateRaw:he,gzip:re}=at,{Inflate:ge,inflate:oe,inflateRaw:Be,ungzip:we}=ae;var ce=Ee,Ce=ge;class Ie{constructor(A,t=!1,e=!0){this.device=A,this.tracing=t,this.slipReaderEnabled=!1,this.leftOver=new Uint8Array(0),this.baudrate=0,this.traceLog=\"\",this.lastTraceTime=Date.now(),this._DTR_state=!1,this.slipReaderEnabled=e}getInfo(){const A=this.device.getInfo();return A.usbVendorId&&A.usbProductId?`WebSerial VendorID 0x${A.usbVendorId.toString(16)} ProductID 0x${A.usbProductId.toString(16)}`:\"\"}getPid(){return this.device.getInfo().usbProductId}trace(A){const t=`${`TRACE ${(Date.now()-this.lastTraceTime).toFixed(3)}`} ${A}`;console.log(t),this.traceLog+=t+\"\\n\"}async returnTrace(){try{await navigator.clipboard.writeText(this.traceLog),console.log(\"Text copied to clipboard!\")}catch(A){console.error(\"Failed to copy text:\",A)}}hexify(A){return Array.from(A).map((A=>A.toString(16).padStart(2,\"0\"))).join(\"\").padEnd(16,\" \")}hexConvert(A,t=!0){if(t&&A.length>16){let t=\"\",e=A;for(;e.length>0;){const A=e.slice(0,16),i=String.fromCharCode(...A).split(\"\").map((A=>\" \"===A||A>=\" \"&&A<=\"~\"&&\"  \"!==A?A:\".\")).join(\"\");e=e.slice(16),t+=`\\n    ${this.hexify(A.slice(0,8))} ${this.hexify(A.slice(8))} | ${i}`}return t}return this.hexify(A)}slipWriter(A){const t=[];t.push(192);for(let e=0;e<A.length;e++)219===A[e]?t.push(219,221):192===A[e]?t.push(219,220):t.push(A[e]);return t.push(192),new Uint8Array(t)}async write(A){const t=this.slipWriter(A);if(this.device.writable){const A=this.device.writable.getWriter();this.tracing&&(console.log(\"Write bytes\"),this.trace(`Write ${t.length} bytes: ${this.hexConvert(t)}`)),await A.write(t),A.releaseLock()}}_appendBuffer(A,t){const e=new Uint8Array(A.byteLength+t.byteLength);return e.set(new Uint8Array(A),0),e.set(new Uint8Array(t),A.byteLength),e.buffer}slipReader(A){let t=0,e=0,i=0,s=\"init\";for(;t<A.length;)if(\"init\"!==s||192!=A[t]){if(\"valid_data\"===s&&192==A[t]){i=t-1,s=\"packet_complete\";break}t++}else e=t+1,s=\"valid_data\",t++;if(\"packet_complete\"!==s)return this.leftOver=A,new Uint8Array(0);this.leftOver=A.slice(i+2);const a=new Uint8Array(i-e+1);let n=0;for(t=e;t<=i;t++,n++)219!==A[t]||220!==A[t+1]?219!==A[t]||221!==A[t+1]?a[n]=A[t]:(a[n]=219,t++):(a[n]=192,t++);return a.slice(0,n)}async read(A=0,t=12){let e,i=this.leftOver;if(this.leftOver=new Uint8Array(0),this.slipReaderEnabled){const A=this.slipReader(i);if(A.length>0)return A;i=this.leftOver,this.leftOver=new Uint8Array(0)}if(null==this.device.readable)return this.leftOver;this.reader=this.device.readable.getReader();try{A>0&&(e=setTimeout((()=>{this.reader&&this.reader.cancel()}),A));do{const{value:A,done:t}=await this.reader.read();if(t)throw this.leftOver=i,new Error(\"Timeout\");i=new Uint8Array(this._appendBuffer(i.buffer,A.buffer))}while(i.length<t)}finally{A>0&&clearTimeout(e),this.reader.releaseLock()}if(this.tracing&&(console.log(\"Read bytes\"),this.trace(`Read ${i.length} bytes: ${this.hexConvert(i)}`)),this.slipReaderEnabled){const A=this.slipReader(i);return this.tracing&&(console.log(\"Slip reader results\"),this.trace(`Read ${A.length} bytes: ${this.hexConvert(A)}`)),A}return i}async rawRead(A=0){if(0!=this.leftOver.length){const A=this.leftOver;return this.leftOver=new Uint8Array(0),A}if(!this.device.readable)return this.leftOver;let t;this.reader=this.device.readable.getReader();try{A>0&&(t=setTimeout((()=>{this.reader&&this.reader.cancel()}),A));const{value:e,done:i}=await this.reader.read();return i||this.tracing&&(console.log(\"Raw Read bytes\"),this.trace(`Read ${e.length} bytes: ${this.hexConvert(e)}`)),e}finally{A>0&&clearTimeout(t),this.reader.releaseLock()}}async setRTS(A){await this.device.setSignals({requestToSend:A}),await this.setDTR(this._DTR_state)}async setDTR(A){this._DTR_state=A,await this.device.setSignals({dataTerminalReady:A})}async connect(A=115200,t={}){await this.device.open({baudRate:A,dataBits:null==t?void 0:t.dataBits,stopBits:null==t?void 0:t.stopBits,bufferSize:null==t?void 0:t.bufferSize,parity:null==t?void 0:t.parity,flowControl:null==t?void 0:t.flowControl}),this.baudrate=A,this.leftOver=new Uint8Array(0)}async sleep(A){return new Promise((t=>setTimeout(t,A)))}async waitForUnlock(A){for(;this.device.readable&&this.device.readable.locked||this.device.writable&&this.device.writable.locked;)await this.sleep(A)}async disconnect(){var A,t;(null===(A=this.device.readable)||void 0===A?void 0:A.locked)&&await(null===(t=this.reader)||void 0===t?void 0:t.cancel()),await this.waitForUnlock(400),this.reader=void 0,await this.device.close()}}function _e(A){return new Promise((t=>setTimeout(t,A)))}async function le(A,t=50){await A.setDTR(!1),await A.setRTS(!0),await _e(100),await A.setDTR(!0),await A.setRTS(!1),await _e(t),await A.setDTR(!1)}async function de(A){await A.setRTS(!1),await A.setDTR(!1),await _e(100),await A.setDTR(!0),await A.setRTS(!1),await _e(100),await A.setRTS(!0),await A.setDTR(!1),await A.setRTS(!0),await _e(100),await A.setRTS(!1),await A.setDTR(!1)}async function Me(A,t=!1){t?(await _e(200),await A.setRTS(!1),await _e(200)):(await _e(100),await A.setRTS(!1))}function De(A){const t=[\"D\",\"R\",\"W\"],e=A.split(\"|\");for(const A of e){const e=A[0],i=A.slice(1);if(!t.includes(e))return!1;if(\"D\"===e||\"R\"===e){if(\"0\"!==i&&\"1\"!==i)return!1}else if(\"W\"===e){const A=parseInt(i);if(isNaN(A)||A<=0)return!1}}return!0}async function Re(A,t){const e={D:async t=>await A.setDTR(t),R:async t=>await A.setRTS(t),W:async A=>await _e(A)};try{if(!De(t))return;const A=t.split(\"|\");for(const t of A){const A=t[0],i=t.slice(1);\"W\"===A?await e.W(Number(i)):\"D\"!==A&&\"R\"!==A||await e[A](\"1\"===i)}}catch(A){throw new Error(\"Invalid custom reset sequence\")}}var Se=function(A){return atob(A)};class Qe{constructor(A){this.ESP_RAM_BLOCK=6144,this.ESP_FLASH_BEGIN=2,this.ESP_FLASH_DATA=3,this.ESP_FLASH_END=4,this.ESP_MEM_BEGIN=5,this.ESP_MEM_END=6,this.ESP_MEM_DATA=7,this.ESP_WRITE_REG=9,this.ESP_READ_REG=10,this.ESP_SPI_ATTACH=13,this.ESP_CHANGE_BAUDRATE=15,this.ESP_FLASH_DEFL_BEGIN=16,this.ESP_FLASH_DEFL_DATA=17,this.ESP_FLASH_DEFL_END=18,this.ESP_SPI_FLASH_MD5=19,this.ESP_ERASE_FLASH=208,this.ESP_ERASE_REGION=209,this.ESP_READ_FLASH=210,this.ESP_RUN_USER_CODE=211,this.ESP_IMAGE_MAGIC=233,this.ESP_CHECKSUM_MAGIC=239,this.ROM_INVALID_RECV_MSG=5,this.ERASE_REGION_TIMEOUT_PER_MB=3e4,this.ERASE_WRITE_TIMEOUT_PER_MB=4e4,this.MD5_TIMEOUT_PER_MB=8e3,this.CHIP_ERASE_TIMEOUT=12e4,this.FLASH_READ_TIMEOUT=1e5,this.MAX_TIMEOUT=2*this.CHIP_ERASE_TIMEOUT,this.CHIP_DETECT_MAGIC_REG_ADDR=1073745920,this.DETECTED_FLASH_SIZES={18:\"256KB\",19:\"512KB\",20:\"1MB\",21:\"2MB\",22:\"4MB\",23:\"8MB\",24:\"16MB\"},this.DETECTED_FLASH_SIZES_NUM={18:256,19:512,20:1024,21:2048,22:4096,23:8192,24:16384},this.USB_JTAG_SERIAL_PID=4097,this.romBaudrate=115200,this.debugLogging=!1,this.syncStubDetected=!1,this.checksum=function(A){let t,e=239;for(t=0;t<A.length;t++)e^=A[t];return e},this.timeoutPerMb=function(A,t){const e=A*(t/1e6);return e<3e3?3e3:e},this.flashSizeBytes=function(A){let t=-1;return-1!==A.indexOf(\"KB\")?t=1024*parseInt(A.slice(0,A.indexOf(\"KB\"))):-1!==A.indexOf(\"MB\")&&(t=1024*parseInt(A.slice(0,A.indexOf(\"MB\")))*1024),t},this.IS_STUB=!1,this.FLASH_WRITE_SIZE=16384,this.transport=A.transport,this.baudrate=A.baudrate,A.serialOptions&&(this.serialOptions=A.serialOptions),A.romBaudrate&&(this.romBaudrate=A.romBaudrate),A.terminal&&(this.terminal=A.terminal,this.terminal.clean()),void 0!==A.debugLogging&&(this.debugLogging=A.debugLogging),A.port&&(this.transport=new Ie(A.port)),void 0!==A.enableTracing&&(this.transport.tracing=A.enableTracing),this.info(\"esptool.js\"),this.info(\"Serial port \"+this.transport.getInfo())}_sleep(A){return new Promise((t=>setTimeout(t,A)))}write(A,t=!0){this.terminal?t?this.terminal.writeLine(A):this.terminal.write(A):console.log(A)}error(A,t=!0){this.write(`Error: ${A}`,t)}info(A,t=!0){this.write(A,t)}debug(A,t=!0){this.debugLogging&&this.write(`Debug: ${A}`,t)}_shortToBytearray(A){return new Uint8Array([255&A,A>>8&255])}_intToByteArray(A){return new Uint8Array([255&A,A>>8&255,A>>16&255,A>>24&255])}_byteArrayToShort(A,t){return A|t>>8}_byteArrayToInt(A,t,e,i){return A|t<<8|e<<16|i<<24}_appendBuffer(A,t){const e=new Uint8Array(A.byteLength+t.byteLength);return e.set(new Uint8Array(A),0),e.set(new Uint8Array(t),A.byteLength),e.buffer}_appendArray(A,t){const e=new Uint8Array(A.length+t.length);return e.set(A,0),e.set(t,A.length),e}ui8ToBstr(A){let t=\"\";for(let e=0;e<A.length;e++)t+=String.fromCharCode(A[e]);return t}bstrToUi8(A){const t=new Uint8Array(A.length);for(let e=0;e<A.length;e++)t[e]=A.charCodeAt(e);return t}async flushInput(){try{await this.transport.rawRead(200)}catch(A){this.error(A.message)}}async readPacket(t=null,e=3e3){for(let i=0;i<100;i++){const i=await this.transport.read(e),s=i[0],a=i[1],n=this._byteArrayToInt(i[4],i[5],i[6],i[7]),E=i.slice(8);if(1==s){if(null==t||a==t)return[n,E];if(0!=E[0]&&E[1]==this.ROM_INVALID_RECV_MSG)throw await this.flushInput(),new A(\"unsupported command error\")}}throw new A(\"invalid response\")}async command(A=null,t=new Uint8Array(0),e=0,i=!0,s=3e3){if(null!=A){this.transport.tracing&&this.transport.trace(`command op:0x${A.toString(16).padStart(2,\"0\")} data len=${t.length} wait_response=${i?1:0} timeout=${(s/1e3).toFixed(3)} data=${this.transport.hexConvert(t)}`);const a=new Uint8Array(8+t.length);let n;for(a[0]=0,a[1]=A,a[2]=this._shortToBytearray(t.length)[0],a[3]=this._shortToBytearray(t.length)[1],a[4]=this._intToByteArray(e)[0],a[5]=this._intToByteArray(e)[1],a[6]=this._intToByteArray(e)[2],a[7]=this._intToByteArray(e)[3],n=0;n<t.length;n++)a[8+n]=t[n];await this.transport.write(a)}return i?this.readPacket(A,s):[0,new Uint8Array(0)]}async readReg(A,t=3e3){const e=this._intToByteArray(A);return(await this.command(this.ESP_READ_REG,e,void 0,void 0,t))[0]}async writeReg(A,t,e=4294967295,i=0,s=0){let a=this._appendArray(this._intToByteArray(A),this._intToByteArray(t));a=this._appendArray(a,this._intToByteArray(e)),a=this._appendArray(a,this._intToByteArray(i)),s>0&&(a=this._appendArray(a,this._intToByteArray(this.chip.UART_DATE_REG_ADDR)),a=this._appendArray(a,this._intToByteArray(0)),a=this._appendArray(a,this._intToByteArray(0)),a=this._appendArray(a,this._intToByteArray(s))),await this.checkCommand(\"write target memory\",this.ESP_WRITE_REG,a)}async sync(){this.debug(\"Sync\");const A=new Uint8Array(36);let t;for(A[0]=7,A[1]=7,A[2]=18,A[3]=32,t=0;t<32;t++)A[4+t]=85;try{const t=await this.command(8,A,void 0,void 0,100);return this.syncStubDetected=this.syncStubDetected&&0===t[0],t}catch(A){throw this.debug(\"Sync err \"+A),A}}async _connectAttempt(A=\"default_reset\",t=!1){if(this.debug(\"_connect_attempt \"+A+\" \"+t),\"no_reset\"!==A)if(this.transport.getPid()===this.USB_JTAG_SERIAL_PID)await de(this.transport);else{const A=t?\"D0|R1|W100|W2000|D1|R0|W50|D0\":\"D0|R1|W100|D1|R0|W50|D0\";await Re(this.transport,A)}let e=0,i=!0;for(;i;){try{e+=(await this.transport.read(1e3)).length}catch(A){if(this.debug(A.message),A instanceof Error){i=!1;break}}await this._sleep(50)}for(this.transport.slipReaderEnabled=!0,this.syncStubDetected=!0,e=7;e--;){try{const A=await this.sync();return this.debug(A[0].toString()),\"success\"}catch(A){A instanceof Error&&(t?this.info(\"_\",!1):this.info(\".\",!1))}await this._sleep(50)}return\"error\"}async connect(t=\"default_reset\",e=7,i=!1){let s,a;for(this.info(\"Connecting...\",!1),await this.transport.connect(this.romBaudrate,this.serialOptions),s=0;s<e&&(a=await this._connectAttempt(t,!1),\"success\"!==a)&&(a=await this._connectAttempt(t,!0),\"success\"!==a);s++);if(\"success\"!==a)throw new A(\"Failed to connect with the device\");if(this.info(\"\\n\\r\",!1),!i){const t=await this.readReg(1073745920)>>>0;this.debug(\"Chip Magic \"+t.toString(16));const e=await async function(A){switch(A){case 15736195:{const{ESP32ROM:A}=await Promise.resolve().then((function(){return He}));return new A}case 1867591791:case 2084675695:{const{ESP32C2ROM:A}=await Promise.resolve().then((function(){return Ne}));return new A}case 1763790959:case 456216687:case 1216438383:case 1130455151:{const{ESP32C3ROM:A}=await Promise.resolve().then((function(){return be}));return new A}case 752910447:{const{ESP32C6ROM:A}=await Promise.resolve().then((function(){return Ve}));return new A}case 285294703:{const{ESP32C5ROM:A}=await Promise.resolve().then((function(){return si}));return new A}case 3619110528:{const{ESP32H2ROM:A}=await Promise.resolve().then((function(){return gi}));return new A}case 9:{const{ESP32S3ROM:A}=await Promise.resolve().then((function(){return Ii}));return new A}case 1990:{const{ESP32S2ROM:A}=await Promise.resolve().then((function(){return Ri}));return new A}case 4293968129:{const{ESP8266ROM:A}=await Promise.resolve().then((function(){return ui}));return new A}case 0:case 182303440:case 117676761:{const{ESP32P4ROM:A}=await Promise.resolve().then((function(){return Oi}));return new A}default:return null}}(t);if(null===this.chip)throw new A(`Unexpected CHIP magic value ${t}. Failed to autodetect chip type.`);this.chip=e}}async detectChip(A=\"default_reset\"){await this.connect(A),this.info(\"Detecting chip type... \",!1),null!=this.chip?this.info(this.chip.CHIP_NAME):this.info(\"unknown!\")}async checkCommand(A=\"\",t=null,e=new Uint8Array(0),i=0,s=3e3){this.debug(\"check_command \"+A);const a=await this.command(t,e,i,void 0,s);return a[1].length>4?a[1]:a[0]}async memBegin(A,t,e,i){this.debug(\"mem_begin \"+A+\" \"+t+\" \"+e+\" \"+i.toString(16));let s=this._appendArray(this._intToByteArray(A),this._intToByteArray(t));s=this._appendArray(s,this._intToByteArray(e)),s=this._appendArray(s,this._intToByteArray(i)),await this.checkCommand(\"enter RAM download mode\",this.ESP_MEM_BEGIN,s)}async memBlock(A,t){let e=this._appendArray(this._intToByteArray(A.length),this._intToByteArray(t));e=this._appendArray(e,this._intToByteArray(0)),e=this._appendArray(e,this._intToByteArray(0)),e=this._appendArray(e,A);const i=this.checksum(A);await this.checkCommand(\"write to target RAM\",this.ESP_MEM_DATA,e,i)}async memFinish(A){const t=0===A?1:0,e=this._appendArray(this._intToByteArray(t),this._intToByteArray(A));await this.checkCommand(\"leave RAM download mode\",this.ESP_MEM_END,e,void 0,50)}async flashSpiAttach(A){const t=this._intToByteArray(A);await this.checkCommand(\"configure SPI flash pins\",this.ESP_SPI_ATTACH,t)}async flashBegin(A,t){const e=Math.floor((A+this.FLASH_WRITE_SIZE-1)/this.FLASH_WRITE_SIZE),i=this.chip.getEraseSize(t,A),s=new Date,a=s.getTime();let n=3e3;0==this.IS_STUB&&(n=this.timeoutPerMb(this.ERASE_REGION_TIMEOUT_PER_MB,A)),this.debug(\"flash begin \"+i+\" \"+e+\" \"+this.FLASH_WRITE_SIZE+\" \"+t+\" \"+A);let E=this._appendArray(this._intToByteArray(i),this._intToByteArray(e));E=this._appendArray(E,this._intToByteArray(this.FLASH_WRITE_SIZE)),E=this._appendArray(E,this._intToByteArray(t)),0==this.IS_STUB&&(E=this._appendArray(E,this._intToByteArray(0))),await this.checkCommand(\"enter Flash download mode\",this.ESP_FLASH_BEGIN,E,void 0,n);const h=s.getTime();return 0!=A&&0==this.IS_STUB&&this.info(\"Took \"+(h-a)/1e3+\".\"+(h-a)%1e3+\"s to erase flash block\"),e}async flashDeflBegin(A,t,e){const i=Math.floor((t+this.FLASH_WRITE_SIZE-1)/this.FLASH_WRITE_SIZE),s=Math.floor((A+this.FLASH_WRITE_SIZE-1)/this.FLASH_WRITE_SIZE),a=new Date,n=a.getTime();let E,h;this.IS_STUB?(E=A,h=3e3):(E=s*this.FLASH_WRITE_SIZE,h=this.timeoutPerMb(this.ERASE_REGION_TIMEOUT_PER_MB,E)),this.info(\"Compressed \"+A+\" bytes to \"+t+\"...\");let r=this._appendArray(this._intToByteArray(E),this._intToByteArray(i));r=this._appendArray(r,this._intToByteArray(this.FLASH_WRITE_SIZE)),r=this._appendArray(r,this._intToByteArray(e)),\"ESP32-S2\"!==this.chip.CHIP_NAME&&\"ESP32-S3\"!==this.chip.CHIP_NAME&&\"ESP32-C3\"!==this.chip.CHIP_NAME&&\"ESP32-C2\"!==this.chip.CHIP_NAME||!1!==this.IS_STUB||(r=this._appendArray(r,this._intToByteArray(0))),await this.checkCommand(\"enter compressed flash mode\",this.ESP_FLASH_DEFL_BEGIN,r,void 0,h);const g=a.getTime();return 0!=A&&!1===this.IS_STUB&&this.info(\"Took \"+(g-n)/1e3+\".\"+(g-n)%1e3+\"s to erase flash block\"),i}async flashBlock(A,t,e){let i=this._appendArray(this._intToByteArray(A.length),this._intToByteArray(t));i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,A);const s=this.checksum(A);await this.checkCommand(\"write to target Flash after seq \"+t,this.ESP_FLASH_DATA,i,s,e)}async flashDeflBlock(A,t,e){let i=this._appendArray(this._intToByteArray(A.length),this._intToByteArray(t));i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,A);const s=this.checksum(A);this.debug(\"flash_defl_block \"+A[0].toString(16)+\" \"+A[1].toString(16)),await this.checkCommand(\"write compressed data to flash after seq \"+t,this.ESP_FLASH_DEFL_DATA,i,s,e)}async flashFinish(A=!1){const t=A?0:1,e=this._intToByteArray(t);await this.checkCommand(\"leave Flash mode\",this.ESP_FLASH_END,e)}async flashDeflFinish(A=!1){const t=A?0:1,e=this._intToByteArray(t);await this.checkCommand(\"leave compressed flash mode\",this.ESP_FLASH_DEFL_END,e)}async runSpiflashCommand(t,e,i){const s=this.chip.SPI_REG_BASE,a=s+0,n=s+this.chip.SPI_USR_OFFS,E=s+this.chip.SPI_USR1_OFFS,h=s+this.chip.SPI_USR2_OFFS,r=s+this.chip.SPI_W0_OFFS;let g;g=null!=this.chip.SPI_MOSI_DLEN_OFFS?async(A,t)=>{const e=s+this.chip.SPI_MOSI_DLEN_OFFS,i=s+this.chip.SPI_MISO_DLEN_OFFS;A>0&&await this.writeReg(e,A-1),t>0&&await this.writeReg(i,t-1)}:async(A,t)=>{const e=E,i=(0===t?0:t-1)<<8|(0===A?0:A-1)<<17;await this.writeReg(e,i)};const o=1<<18;if(i>32)throw new A(\"Reading more than 32 bits back from a SPI flash operation is unsupported\");if(e.length>64)throw new A(\"Writing more than 64 bytes of data with one SPI command is unsupported\");const B=8*e.length,w=await this.readReg(n),c=await this.readReg(h);let C,I=1<<31;i>0&&(I|=268435456),B>0&&(I|=134217728),await g(B,i),await this.writeReg(n,I);let _=7<<28|t;if(await this.writeReg(h,_),0==B)await this.writeReg(r,0);else{if(e.length%4!=0){const A=new Uint8Array(e.length%4);e=this._appendArray(e,A)}let A=r;for(C=0;C<e.length-4;C+=4)_=this._byteArrayToInt(e[C],e[C+1],e[C+2],e[C+3]),await this.writeReg(A,_),A+=4}for(await this.writeReg(a,o),C=0;C<10&&(_=await this.readReg(a)&o,0!=_);C++);if(10===C)throw new A(\"SPI command did not complete in time\");const l=await this.readReg(r);return await this.writeReg(n,w),await this.writeReg(h,c),l}async readFlashId(){const A=new Uint8Array(0);return await this.runSpiflashCommand(159,A,24)}async eraseFlash(){this.info(\"Erasing flash (this may take a while)...\");let A=new Date;const t=A.getTime(),e=await this.checkCommand(\"erase flash\",this.ESP_ERASE_FLASH,void 0,void 0,this.CHIP_ERASE_TIMEOUT);A=new Date;const i=A.getTime();return this.info(\"Chip erase completed successfully in \"+(i-t)/1e3+\"s\"),e}toHex(A){return Array.prototype.map.call(A,(A=>(\"00\"+A.toString(16)).slice(-2))).join(\"\")}async flashMd5sum(A,t){const e=this.timeoutPerMb(this.MD5_TIMEOUT_PER_MB,t);let i=this._appendArray(this._intToByteArray(A),this._intToByteArray(t));i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,this._intToByteArray(0));let s=await this.checkCommand(\"calculate md5sum\",this.ESP_SPI_FLASH_MD5,i,void 0,e);s instanceof Uint8Array&&s.length>16&&(s=s.slice(0,16));return this.toHex(s)}async readFlash(t,e,i=null){let s=this._appendArray(this._intToByteArray(t),this._intToByteArray(e));s=this._appendArray(s,this._intToByteArray(4096)),s=this._appendArray(s,this._intToByteArray(1024));const a=await this.checkCommand(\"read flash\",this.ESP_READ_FLASH,s);if(0!=a)throw new A(\"Failed to read memory: \"+a);let n=new Uint8Array(0);for(;n.length<e;){const t=await this.transport.read(this.FLASH_READ_TIMEOUT);if(!(t instanceof Uint8Array))throw new A(\"Failed to read memory: \"+t);t.length>0&&(n=this._appendArray(n,t),await this.transport.write(this._intToByteArray(n.length)),i&&i(t,n.length,e))}return n}async runStub(){if(this.syncStubDetected)return this.info(\"Stub is already running. No upload is necessary.\"),this.chip;this.info(\"Uploading stub...\");let t=Se(this.chip.ROM_TEXT),e=t.split(\"\").map((function(A){return A.charCodeAt(0)}));const i=new Uint8Array(e);t=Se(this.chip.ROM_DATA),e=t.split(\"\").map((function(A){return A.charCodeAt(0)}));const s=new Uint8Array(e);let a,n=Math.floor((i.length+this.ESP_RAM_BLOCK-1)/this.ESP_RAM_BLOCK);for(await this.memBegin(i.length,n,this.ESP_RAM_BLOCK,this.chip.TEXT_START),a=0;a<n;a++){const A=a*this.ESP_RAM_BLOCK,t=A+this.ESP_RAM_BLOCK;await this.memBlock(i.slice(A,t),a)}for(n=Math.floor((s.length+this.ESP_RAM_BLOCK-1)/this.ESP_RAM_BLOCK),await this.memBegin(s.length,n,this.ESP_RAM_BLOCK,this.chip.DATA_START),a=0;a<n;a++){const A=a*this.ESP_RAM_BLOCK,t=A+this.ESP_RAM_BLOCK;await this.memBlock(s.slice(A,t),a)}this.info(\"Running stub...\"),await this.memFinish(this.chip.ENTRY);for(let A=0;A<100;A++){const A=await this.transport.read(1e3,6);if(79===A[0]&&72===A[1]&&65===A[2]&&73===A[3])return this.info(\"Stub running...\"),this.IS_STUB=!0,this.FLASH_WRITE_SIZE=16384,this.chip}throw new A(\"Failed to start stub. Unexpected response\")}async changeBaud(){this.info(\"Changing baudrate to \"+this.baudrate);const A=this.IS_STUB?this.transport.baudrate:0,t=this._appendArray(this._intToByteArray(this.baudrate),this._intToByteArray(A)),e=await this.command(this.ESP_CHANGE_BAUDRATE,t);this.debug(e[0].toString()),this.info(\"Changed\"),await this.transport.disconnect(),await this._sleep(50),await this.transport.connect(this.baudrate,this.serialOptions);try{let A=64;for(;A--;){try{await this.sync();break}catch(A){this.debug(A.message)}await this._sleep(10)}}catch(A){this.debug(A.message)}}async main(A=\"default_reset\"){await this.detectChip(A);const t=await this.chip.getChipDescription(this);return this.info(\"Chip is \"+t),this.info(\"Features: \"+await this.chip.getChipFeatures(this)),this.info(\"Crystal is \"+await this.chip.getCrystalFreq(this)+\"MHz\"),this.info(\"MAC: \"+await this.chip.readMac(this)),await this.chip.readMac(this),void 0!==this.chip.postConnect&&await this.chip.postConnect(this),await this.runStub(),this.romBaudrate!==this.baudrate&&await this.changeBaud(),t}parseFlashSizeArg(t){if(void 0===this.chip.FLASH_SIZES[t])throw new A(\"Flash size \"+t+\" is not supported by this chip type. Supported sizes: \"+this.chip.FLASH_SIZES);return this.chip.FLASH_SIZES[t]}_updateImageFlashParams(A,t,e,i,s){if(this.debug(\"_update_image_flash_params \"+e+\" \"+i+\" \"+s),A.length<8)return A;if(t!=this.chip.BOOTLOADER_FLASH_OFFSET)return A;if(\"keep\"===e&&\"keep\"===i&&\"keep\"===s)return this.info(\"Not changing the image\"),A;const a=parseInt(A[0]);let n=parseInt(A[2]);const E=parseInt(A[3]);if(a!==this.ESP_IMAGE_MAGIC)return this.info(\"Warning: Image file at 0x\"+t.toString(16)+\" doesn't look like an image file, so not changing any flash settings.\"),A;if(\"keep\"!==i){n={qio:0,qout:1,dio:2,dout:3}[i]}let h=15&E;if(\"keep\"!==s){h={\"40m\":0,\"26m\":1,\"20m\":2,\"80m\":15}[s]}let r=240&E;\"keep\"!==e&&(r=this.parseFlashSizeArg(e));const g=n<<8|h+r;return this.info(\"Flash params set to \"+g.toString(16)),parseInt(A[2])!==n<<8&&(A=A.substring(0,2)+(n<<8).toString()+A.substring(3)),parseInt(A[3])!==h+r&&(A=A.substring(0,3)+(h+r).toString()+A.substring(4)),A}async writeFlash(t){if(this.debug(\"EspLoader program\"),\"keep\"!==t.flashSize){const e=this.flashSizeBytes(t.flashSize);for(let i=0;i<t.fileArray.length;i++)if(t.fileArray[i].data.length+t.fileArray[i].address>e)throw new A(`File ${i+1} doesn't fit in the available flash`)}let e,i;!0===this.IS_STUB&&!0===t.eraseAll&&await this.eraseFlash();for(let s=0;s<t.fileArray.length;s++){this.debug(\"Data Length \"+t.fileArray[s].data.length),e=t.fileArray[s].data;const a=t.fileArray[s].data.length%4;if(a>0&&(e+=\"ÿÿÿÿ\".substring(4-a)),i=t.fileArray[s].address,this.debug(\"Image Length \"+e.length),0===e.length){this.debug(\"Warning: File is empty\");continue}e=this._updateImageFlashParams(e,i,t.flashSize,t.flashMode,t.flashFreq);let n=null;t.calculateMD5Hash&&(n=t.calculateMD5Hash(e),this.debug(\"Image MD5 \"+n));const E=e.length;let h;if(t.compress){const A=this.bstrToUi8(e);e=this.ui8ToBstr(ce(A,{level:9})),h=await this.flashDeflBegin(E,e.length,i)}else h=await this.flashBegin(E,i);let r=0,g=0;const o=e.length;t.reportProgress&&t.reportProgress(s,0,o);let B=new Date;const w=B.getTime();let c=5e3;const C=new Ce({chunkSize:1});let I=0;for(C.onData=function(A){I+=A.byteLength};e.length>0;){this.debug(\"Write loop \"+i+\" \"+r+\" \"+h),this.info(\"Writing at 0x\"+(i+I).toString(16)+\"... (\"+Math.floor(100*(r+1)/h)+\"%)\");const a=this.bstrToUi8(e.slice(0,this.FLASH_WRITE_SIZE));if(!t.compress)throw new A(\"Yet to handle Non Compressed writes\");{const A=I;C.push(a,!1);const t=I-A;let e=3e3;this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB,t)>3e3&&(e=this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB,t)),!1===this.IS_STUB&&(c=e),await this.flashDeflBlock(a,r,c),this.IS_STUB&&(c=e)}g+=a.length,e=e.slice(this.FLASH_WRITE_SIZE,e.length),r++,t.reportProgress&&t.reportProgress(s,g,o)}this.IS_STUB&&await this.readReg(this.CHIP_DETECT_MAGIC_REG_ADDR,c),B=new Date;const _=B.getTime()-w;if(t.compress&&this.info(\"Wrote \"+E+\" bytes (\"+g+\" compressed) at 0x\"+i.toString(16)+\" in \"+_/1e3+\" seconds.\"),n){const t=await this.flashMd5sum(i,E);if(new String(t).valueOf()!=new String(n).valueOf())throw this.info(\"File  md5: \"+n),this.info(\"Flash md5: \"+t),new A(\"MD5 of file does not match data in flash!\");this.info(\"Hash of data verified.\")}}this.info(\"Leaving...\"),this.IS_STUB&&(await this.flashBegin(0,0),t.compress?await this.flashDeflFinish():await this.flashFinish())}async flashId(){this.debug(\"flash_id\");const A=await this.readFlashId();this.info(\"Manufacturer: \"+(255&A).toString(16));const t=A>>16&255;this.info(\"Device: \"+(A>>8&255).toString(16)+t.toString(16)),this.info(\"Detected flash size: \"+this.DETECTED_FLASH_SIZES[t])}async getFlashSize(){this.debug(\"flash_id\");const A=await this.readFlashId()>>16&255;return this.DETECTED_FLASH_SIZES_NUM[A]}async hardReset(){await this.transport.setRTS(!0),await this._sleep(100),await this.transport.setRTS(!1)}async softReset(){if(this.IS_STUB){if(\"ESP8266\"!=this.chip.CHIP_NAME)throw new A(\"Soft resetting is currently only supported on ESP8266\");await this.command(this.ESP_RUN_USER_CODE,void 0,void 0,!1)}else await this.flashBegin(0,0),await this.flashFinish(!1)}}class fe{getEraseSize(A,t){return t}}var Fe=1074521560,Te=\"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\",ue=1074520064,pe=\"GOv8P9jnC0Bx6AtA8+wLQO3oC0CP6AtA7egLQEnpC0AG6gtAeOoLQCHqC0CB5wtAo+kLQPjpC0Bn6QtAmuoLQI7pC0Ca6gtAXegLQLPoC0Dt6AtASekLQHfoC0BM6wtAs+wLQKXmC0DX7AtApeYLQKXmC0Cl5gtApeYLQKXmC0Cl5gtApeYLQKXmC0Dz6gtApeYLQM3rC0Cz7AtA\",ye=1073605544;class ke extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32\",this.IMAGE_CHIP_ID=0,this.EFUSE_RD_REG_BASE=1073061888,this.DR_REG_SYSCON_BASE=1073111040,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612856,this.XTAL_CLK_DIVIDER=1,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=4096,this.SPI_REG_BASE=1072963584,this.SPI_USR_OFFS=28,this.SPI_USR1_OFFS=32,this.SPI_USR2_OFFS=36,this.SPI_W0_OFFS=128,this.SPI_MOSI_DLEN_OFFS=40,this.SPI_MISO_DLEN_OFFS=44,this.TEXT_START=ue,this.ENTRY=Fe,this.DATA_START=ye,this.ROM_DATA=pe,this.ROM_TEXT=Te}async readEfuse(A,t){const e=this.EFUSE_RD_REG_BASE+4*t;return A.debug(\"Read efuse \"+e),await A.readReg(e)}async getPkgVersion(A){const t=await this.readEfuse(A,3);let e=t>>9&7;return e+=(t>>2&1)<<3,e}async getChipRevision(A){const t=await this.readEfuse(A,3),e=await this.readEfuse(A,5),i=await A.readReg(this.DR_REG_SYSCON_BASE+124);return 0!=(t>>15&1)?0!=(e>>20&1)?0!=(i>>31&1)?3:2:1:0}async getChipDescription(A){const t=[\"ESP32-D0WDQ6\",\"ESP32-D0WD\",\"ESP32-D2WD\",\"\",\"ESP32-U4WDH\",\"ESP32-PICO-D4\",\"ESP32-PICO-V3-02\"];let e=\"\";const i=await this.getPkgVersion(A),s=await this.getChipRevision(A),a=3==s;return 0!=(1&await this.readEfuse(A,3))&&(t[0]=\"ESP32-S0WDQ6\",t[1]=\"ESP32-S0WD\"),a&&(t[5]=\"ESP32-PICO-V3\"),e=i>=0&&i<=6?t[i]:\"Unknown ESP32\",!a||0!==i&&1!==i||(e+=\"-V3\"),e+\" (revision \"+s+\")\"}async getChipFeatures(A){const t=[\"Wi-Fi\"],e=await this.readEfuse(A,3);0===(2&e)&&t.push(\" BT\");0!==(1&e)?t.push(\" Single Core\"):t.push(\" Dual Core\");if(0!==(8192&e)){0!==(4096&e)?t.push(\" 160MHz\"):t.push(\" 240MHz\")}const i=await this.getPkgVersion(A);-1!==[2,4,5,6].indexOf(i)&&t.push(\" Embedded Flash\"),6===i&&t.push(\" Embedded PSRAM\");0!==(await this.readEfuse(A,4)>>8&31)&&t.push(\" VRef calibration in efuse\");0!==(e>>14&1)&&t.push(\" BLK3 partially reserved\");const s=3&await this.readEfuse(A,6);return t.push(\" Coding Scheme \"+[\"None\",\"3/4\",\"Repeat (UNSUPPORTED)\",\"Invalid\"][s]),t}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info(\"WARNING: Unsupported crystal in use\"),i}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await this.readEfuse(A,1);t>>>=0;let e=await this.readEfuse(A,2);e>>>=0;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}}var He=Object.freeze({__proto__:null,ESP32ROM:ke}),Pe=1077413532,Oe=\"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\",Ue=1077411840,Ge=\"IGvIP3YKOEDGCjhAHgs4QMILOEAuDDhA3As4QEIJOEB+CzhAvgs4QDILOEDyCDhAZgs4QPIIOEBQCjhAlgo4QMYKOEAeCzhAYgo4QKYJOEDWCThAXgo4QIAOOEDGCjhARg04QDgOOEAyCDhAYA44QDIIOEAyCDhAMgg4QDIIOEAyCDhAMgg4QDIIOEAyCDhA4gw4QDIIOEBkDThAOA44QA==\",me=1070164912;class Ye extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-C3\",this.IMAGE_CHIP_ID=5,this.EFUSE_BASE=1610647552,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.TEXT_START=Ue,this.ENTRY=Pe,this.DATA_START=me,this.ROM_DATA=Ge,this.ROM_TEXT=Oe}async getPkgVersion(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&7}async getChipRevision(A){const t=this.EFUSE_BASE+68+12;return(await A.readReg(t)&7<<18)>>18}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?\"ESP32-C3\":\"unknown ESP32-C3\";return t+=\" (revision \"+await this.getChipRevision(A)+\")\",t}async getFlashCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>27&7}async getFlashVendor(A){const t=this.EFUSE_BASE+68+16;return{1:\"XMC\",2:\"GD\",3:\"FM\",4:\"TT\",5:\"ZBIT\"}[await A.readReg(t)>>0&7]||\"\"}async getChipFeatures(A){const t=[\"Wi-Fi\",\"BLE\"],e=await this.getFlashCap(A),i=await this.getFlashVendor(A),s={0:null,1:\"Embedded Flash 4MB\",2:\"Embedded Flash 2MB\",3:\"Embedded Flash 1MB\",4:\"Embedded Flash 8MB\"}[e],a=void 0!==s?s:\"Unknown Embedded Flash\";return null!==s&&t.push(`${a} (${i})`),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}var be=Object.freeze({__proto__:null,ESP32C3ROM:Ye}),Ke=1077413304,xe=\"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\",Le=1077411840,Je=\"DEDKP+AIOEAsCThAhAk4QFIKOEC+CjhAbAo4QKgHOEAOCjhATgo4QJgJOEBYBzhAzAk4QFgHOEC6CDhA/gg4QCwJOECECThAzAg4QBIIOEBCCDhAyAg4QBYNOEAsCThA1gs4QMoMOECkBjhA9Aw4QKQGOECkBjhApAY4QKQGOECkBjhApAY4QKQGOECkBjhAcgs4QKQGOEDyCzhAygw4QA==\",ze=1070295976;var Ne=Object.freeze({__proto__:null,ESP32C2ROM:class extends Ye{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-C2\",this.IMAGE_CHIP_ID=12,this.EFUSE_BASE=1610647552,this.MAC_EFUSE_REG=this.EFUSE_BASE+64,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.XTAL_CLK_DIVIDER=1,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.TEXT_START=Le,this.ENTRY=Ke,this.DATA_START=ze,this.ROM_DATA=Je,this.ROM_TEXT=xe}async getPkgVersion(A){const t=this.EFUSE_BASE+64+4;return await A.readReg(t)>>22&7}async getChipRevision(A){const t=this.EFUSE_BASE+64+4;return(await A.readReg(t)&3<<20)>>20}async getChipDescription(A){let t;const e=await this.getPkgVersion(A);t=0===e||1===e?\"ESP32-C2\":\"unknown ESP32-C2\";return t+=\" (revision \"+await this.getChipRevision(A)+\")\",t}async getChipFeatures(A){return[\"Wi-Fi\",\"BLE\"]}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info(\"WARNING: Unsupported crystal in use\"),i}async changeBaudRate(A){26===await this.getCrystalFreq(A)&&A.changeBaud()}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}}),ve=1082132112,je=\"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\",Ze=1082130432,We=\"HCuEQEIKgECSCoBA6gqAQI4LgED6C4BAqAuAQA4JgEBKC4BAiguAQP4KgEC+CIBAMguAQL4IgEAcCoBAYgqAQJIKgEDqCoBALgqAQHIJgECiCYBAKgqAQEwOgECSCoBAEg2AQAQOgED+B4BALA6AQP4HgED+B4BA/geAQP4HgED+B4BA/geAQP4HgED+B4BArgyAQP4HgEAwDYBABA6AQA==\",Xe=1082469292;class qe extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-C6\",this.IMAGE_CHIP_ID=13,this.EFUSE_BASE=1611335680,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.TEXT_START=Ze,this.ENTRY=ve,this.DATA_START=Xe,this.ROM_DATA=We,this.ROM_TEXT=je}async getPkgVersion(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&7}async getChipRevision(A){const t=this.EFUSE_BASE+68+12;return(await A.readReg(t)&7<<18)>>18}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?\"ESP32-C6\":\"unknown ESP32-C6\";return t+=\" (revision \"+await this.getChipRevision(A)+\")\",t}async getChipFeatures(A){return[\"Wi-Fi 6\",\"BT 5\",\"IEEE802.15.4\"]}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}var Ve=Object.freeze({__proto__:null,ESP32C6ROM:qe}),$e=1082132164,Ai=\"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\",ti=1082130432,ei=\"FACEQG4KgEC+CoBAFguAQOQLgEBQDIBA/guAQDoJgECgC4BA4AuAQCoLgEDqCIBAXguAQOoIgEBICoBAjgqAQL4KgEAWC4BAWgqAQJ4JgEDOCYBAVgqAQKgOgEC+CoBAaA2AQGAOgEAqCIBAiA6AQCoIgEAqCIBAKgiAQCoIgEAqCIBAKgiAQCoIgEAqCIBABA2AQCoIgECGDYBAYA6AQA==\",ii=1082469296;var si=Object.freeze({__proto__:null,ESP32C5ROM:class extends qe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-C5\",this.IMAGE_CHIP_ID=23,this.EFUSE_BASE=1611352064,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1610612756,this.TEXT_START=ti,this.ENTRY=$e,this.DATA_START=ii,this.ROM_DATA=ei,this.ROM_TEXT=Ai,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=24,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=28,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY2_SHIFT=0,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY3_SHIFT=4,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY4_SHIFT=8,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY5_SHIFT=12,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<20,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+52,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<18,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+56,this.EFUSE_SECURE_BOOT_EN_MASK=1<<20,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.DROM_MAP_START=1115684864,this.DROM_MAP_END=1124073472,this.PCR_SYSCLK_CONF_REG=1611227408,this.PCR_SYSCLK_XTAL_FREQ_V=127<<24,this.PCR_SYSCLK_XTAL_FREQ_S=24,this.XTAL_CLK_DIVIDER=1,this.UARTDEV_BUF_NO=1082520860,this.CHIP_DETECT_MAGIC_VALUE=[285294703],this.FLASH_FREQUENCY={\"80m\":15,\"40m\":0,\"20m\":2},this.MEMORY_MAP=[[0,65536,\"PADDING\"],[1115684864,1124073472,\"DROM\"],[1082130432,1082523648,\"DRAM\"],[1082130432,1082523648,\"BYTE_ACCESSIBLE\"],[1073979392,1074003968,\"DROM_MASK\"],[1073741824,1073979392,\"IROM_MASK\"],[1107296256,1115684864,\"IROM\"],[1082130432,1082523648,\"IRAM\"],[1342177280,1342193664,\"RTC_IRAM\"],[1342177280,1342193664,\"RTC_DRAM\"],[1611653120,1611661312,\"MEM_INTERNAL2\"]],this.UF2_FAMILY_ID=4145808195,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:\"USER/EMPTY\",1:\"ECDSA_KEY\",2:\"XTS_AES_256_KEY_1\",3:\"XTS_AES_256_KEY_2\",4:\"XTS_AES_128_KEY\",5:\"HMAC_DOWN_ALL\",6:\"HMAC_DOWN_JTAG\",7:\"HMAC_DOWN_DIGITAL_SIGNATURE\",8:\"HMAC_UP\",9:\"SECURE_BOOT_DIGEST0\",10:\"SECURE_BOOT_DIGEST1\",11:\"SECURE_BOOT_DIGEST2\",12:\"KM_INIT_KEY\"}}async getPkgVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>26&7}async getMinorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>0&15}async getMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>4&3}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?\"ESP32-C5\":\"unknown ESP32-C5\";return`${t} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>45?48:e>33?40:26,Math.abs(i-e)>1&&A.info(\"WARNING: Unsupported crystal in use\"),i}async getCrystalFreqRomExpect(A){return(await A.readReg(this.PCR_SYSCLK_CONF_REG)&this.PCR_SYSCLK_XTAL_FREQ_V)>>this.PCR_SYSCLK_XTAL_FREQ_S}}}),ai=1082132112,ni=\"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\",Ei=1082130432,hi=\"EACDQEIKgECSCoBA6gqAQI4LgED6C4BAqAuAQA4JgEBKC4BAiguAQP4KgEC+CIBAMguAQL4IgEAcCoBAYgqAQJIKgEDqCoBALgqAQHIJgECiCYBAKgqAQFIOgECSCoBAEg2AQAoOgED+B4BAMg6AQP4HgED+B4BA/geAQP4HgED+B4BA/geAQP4HgED+B4BArgyAQP4HgEAwDYBACg6AQA==\",ri=1082403756;var gi=Object.freeze({__proto__:null,ESP32H2ROM:class extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-H2\",this.IMAGE_CHIP_ID=16,this.EFUSE_BASE=1610647552,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.USB_RAM_BLOCK=2048,this.UARTDEV_BUF_NO_USB=3,this.UARTDEV_BUF_NO=1070526796,this.TEXT_START=Ei,this.ENTRY=ai,this.DATA_START=ri,this.ROM_DATA=hi,this.ROM_TEXT=ni}async getChipDescription(A){return this.CHIP_NAME}async getChipFeatures(A){return[\"BLE\",\"IEEE802.15.4\"]}async getCrystalFreq(A){return 32}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async postConnect(A){const t=255&await A.readReg(this.UARTDEV_BUF_NO);A.debug(\"In _post_connect \"+t),t==this.UARTDEV_BUF_NO_USB&&(A.ESP_RAM_BLOCK=this.USB_RAM_BLOCK)}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}}),oi=1077381696,Bi=\"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\",wi=1077379072,ci=\"ZCvKP8qNN0CvjjdAcJM3QDqPN0DPjjdAOo83QJmPN0BmkDdA2ZA3QIGQN0BVjTdA/I83QFiQN0C8jzdA+5A3QOaPN0D7kDdAnY43QPqON0A6jzdAmY83QLWON0CWjTdAvJE3QDaTN0ByjDdAVpM3QHKMN0ByjDdAcow3QHKMN0ByjDdAcow3QHKMN0ByjDdAVpE3QHKMN0BRkjdANpM3QAQInwAAAAAAAAAYAQQIBQAAAAAAAAAIAQQIBgAAAAAAAAAAAQQIIQAAAAAAIAAAEQQI3AAAAAAAIAAAEQQIDAAAAAAAIAAAAQQIEgAAAAAAIAAAESAoDAAQAQAA\",Ci=1070279668;var Ii=Object.freeze({__proto__:null,ESP32S3ROM:class extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-S3\",this.IMAGE_CHIP_ID=9,this.EFUSE_BASE=1610641408,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612864,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.USB_RAM_BLOCK=2048,this.UARTDEV_BUF_NO_USB=3,this.UARTDEV_BUF_NO=1070526796,this.TEXT_START=wi,this.ENTRY=oi,this.DATA_START=Ci,this.ROM_DATA=ci,this.ROM_TEXT=Bi}async getChipDescription(A){return\"ESP32-S3\"}async getFlashCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>27&7}async getFlashVendor(A){const t=this.EFUSE_BASE+68+16;return{1:\"XMC\",2:\"GD\",3:\"FM\",4:\"TT\",5:\"BY\"}[await A.readReg(t)>>0&7]||\"\"}async getPsramCap(A){const t=this.EFUSE_BASE+68+16;return await A.readReg(t)>>3&3}async getPsramVendor(A){const t=this.EFUSE_BASE+68+16;return{1:\"AP_3v3\",2:\"AP_1v8\"}[await A.readReg(t)>>7&3]||\"\"}async getChipFeatures(A){const t=[\"Wi-Fi\",\"BLE\"],e=await this.getFlashCap(A),i=await this.getFlashVendor(A),s={0:null,1:\"Embedded Flash 8MB\",2:\"Embedded Flash 4MB\"}[e],a=void 0!==s?s:\"Unknown Embedded Flash\";null!==s&&t.push(`${a} (${i})`);const n=await this.getPsramCap(A),E=await this.getPsramVendor(A),h={0:null,1:\"Embedded PSRAM 8MB\",2:\"Embedded PSRAM 2MB\"}[n],r=void 0!==h?h:\"Unknown Embedded PSRAM\";return null!==h&&t.push(`${r} (${E})`),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async postConnect(A){const t=255&await A.readReg(this.UARTDEV_BUF_NO);A.debug(\"In _post_connect \"+t),t==this.UARTDEV_BUF_NO_USB&&(A.ESP_RAM_BLOCK=this.USB_RAM_BLOCK)}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}}),_i=1073907696,li=\"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\",di=1073905664,Mi=\"ZCv9PzaLAkDBiwJAhpACQEqMAkDjiwJASowCQKmMAkByjQJA5Y0CQI2NAkDAigJAC40CQGSNAkDMjAJACI4CQPaMAkAIjgJAr4sCQA6MAkBKjAJAqYwCQMeLAkACiwJAx44CQD2QAkDYiQJAZZACQNiJAkDYiQJA2IkCQNiJAkDYiQJA2IkCQNiJAkDYiQJAZI4CQNiJAkBZjwJAPZACQA==\",Di=1073622012;var Ri=Object.freeze({__proto__:null,ESP32S2ROM:class extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-S2\",this.IMAGE_CHIP_ID=2,this.MAC_EFUSE_REG=1061265476,this.EFUSE_BASE=1061265408,this.UART_CLKDIV_REG=1061158932,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612856,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=4096,this.FLASH_SIZES={\"1MB\":0,\"2MB\":16,\"4MB\":32,\"8MB\":48,\"16MB\":64},this.SPI_REG_BASE=1061167104,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_W0_OFFS=88,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.TEXT_START=di,this.ENTRY=_i,this.DATA_START=Di,this.ROM_DATA=Mi,this.ROM_TEXT=li}async getPkgVersion(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&15}async getChipDescription(A){const t=[\"ESP32-S2\",\"ESP32-S2FH16\",\"ESP32-S2FH32\"],e=await this.getPkgVersion(A);return e>=0&&e<=2?t[e]:\"unknown ESP32-S2\"}async getFlashCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&15}async getPsramCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>28&15}async getBlock2Version(A){const t=this.EFUSE_BASE+92+16;return await A.readReg(t)>>4&7}async getChipFeatures(A){const t=[\"Wi-Fi\"],e={0:\"No Embedded Flash\",1:\"Embedded Flash 2MB\",2:\"Embedded Flash 4MB\"}[await this.getFlashCap(A)]||\"Unknown Embedded Flash\";t.push(e);const i={0:\"No Embedded Flash\",1:\"Embedded PSRAM 2MB\",2:\"Embedded PSRAM 4MB\"}[await this.getPsramCap(A)]||\"Unknown Embedded PSRAM\";t.push(i);const s={0:\"No calibration in BLK2 of efuse\",1:\"ADC and temperature sensor calibration in BLK2 of efuse V1\",2:\"ADC and temperature sensor calibration in BLK2 of efuse V2\"}[await this.getBlock2Version(A)]||\"Unknown Calibration in BLK2\";return t.push(s),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}getEraseSize(A,t){return t}}}),Si=1074843652,Qi=\"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\",fi=1074843648,Fi=\"CIH+PwUFBAACAwcAAwMLALnXEEDv1xBAHdgQQLrYEEBo5xBAHtkQQHTZEEDA2RBAaOcQQILaEED/2hBAwNsQQGjnEEBo5xBAWNwQQGjnEEA33xBAAOAQQDvgEEBo5xBAaOcQQNfgEEBo5xBAv+EQQGXiEECj4xBAY+QQQDTlEEBo5xBAaOcQQGjnEEBo5xBAYuYQQGjnEEBX5xBAkN0QQI/YEECm5RBAq9oQQPzZEEBo5xBA7OYQQDHnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQCLaEEBf2hBAvuUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA\",Ti=1073720488;var ui=Object.freeze({__proto__:null,ESP8266ROM:class extends fe{constructor(){super(...arguments),this.CHIP_NAME=\"ESP8266\",this.CHIP_DETECT_MAGIC_VALUE=[4293968129],this.EFUSE_RD_REG_BASE=1072693328,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.XTAL_CLK_DIVIDER=2,this.FLASH_WRITE_SIZE=16384,this.BOOTLOADER_FLASH_OFFSET=0,this.UART_DATE_REG_ADDR=0,this.FLASH_SIZES={\"512KB\":0,\"256KB\":16,\"1MB\":32,\"2MB\":48,\"4MB\":64,\"2MB-c1\":80,\"4MB-c1\":96,\"8MB\":128,\"16MB\":144},this.SPI_REG_BASE=1610613248,this.SPI_USR_OFFS=28,this.SPI_USR1_OFFS=32,this.SPI_USR2_OFFS=36,this.SPI_MOSI_DLEN_OFFS=0,this.SPI_MISO_DLEN_OFFS=0,this.SPI_W0_OFFS=64,this.TEXT_START=fi,this.ENTRY=Si,this.DATA_START=Ti,this.ROM_DATA=Fi,this.ROM_TEXT=Qi,this.getChipFeatures=async A=>{const t=[\"WiFi\"];return\"ESP8285\"==await this.getChipDescription(A)&&t.push(\"Embedded Flash\"),t}}async readEfuse(A,t){const e=this.EFUSE_RD_REG_BASE+4*t;return A.debug(\"Read efuse \"+e),await A.readReg(e)}async getChipDescription(A){const t=await this.readEfuse(A,2);return 0!=(16&await this.readEfuse(A,0)|65536&t)?\"ESP8285\":\"ESP8266EX\"}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info(\"WARNING: Detected crystal freq \"+e+\"MHz is quite different to normalized freq \"+i+\"MHz. Unsupported crystal in use?\"),i}_d2h(A){const t=(+A).toString(16);return 1===t.length?\"0\"+t:t}async readMac(A){let t=await this.readEfuse(A,0);t>>>=0;let e=await this.readEfuse(A,1);e>>>=0;let i=await this.readEfuse(A,3);i>>>=0;const s=new Uint8Array(6);return 0!=i?(s[0]=i>>16&255,s[1]=i>>8&255,s[2]=255&i):0==(e>>16&255)?(s[0]=24,s[1]=254,s[2]=52):1==(e>>16&255)?(s[0]=172,s[1]=208,s[2]=116):A.error(\"Unknown OUI\"),s[3]=e>>8&255,s[4]=255&e,s[5]=t>>24&255,this._d2h(s[0])+\":\"+this._d2h(s[1])+\":\"+this._d2h(s[2])+\":\"+this._d2h(s[3])+\":\"+this._d2h(s[4])+\":\"+this._d2h(s[5])}getEraseSize(A,t){return t}}}),pi=1341195918,yi=\"QREixCbCBsa3Jw1QEUc3BPVP2Mu3JA1QEwQEANxAkYuR57JAIkSSREEBgoCIQBxAE3X1D4KX3bcBEbenDFBOxoOphwBKyDcJ9U8mylLEBs4izLekDFB9WhMJCQDATBN09D8N4PJAYkQjqDQBQknSRLJJIkoFYYKAiECDJwkAE3X1D4KXfRTjGUT/yb8TBwAMlEGqh2MY5QCFR4XGI6AFAHlVgoAFR2OH5gAJRmONxgB9VYKAQgUTB7ANQYVjlecCiUecwfW3kwbADWMW1QCYwRMFAAyCgJMG0A19VWOV1wCYwRMFsA2CgLc19k9BEZOFRboGxmE/Y0UFBrc39k+Th8exA6cHCAPWRwgTdfUPkwYWAMIGwYIjktcIMpcjAKcAA9dHCJFnk4cHBGMe9wI3t/VPEwfHsaFnupcDpgcIt/b1T7c39k+Th8exk4bGtWMf5gAjpscII6DXCCOSBwghoPlX4wb1/LJAQQGCgCOm1wgjoOcI3bc31whQfEudi/X/N8cIUHxLnYv1/4KAQREGxt03t9cIUCOmBwI3BwAImMOYQ33/yFeyQBNF9f8FiUEBgoBBEQbG2T993TcHAEC31whQmMM31whQHEP9/7JAQQGCgEERIsQ3hPVPkwcEAUrAA6kHAQbGJsJjCgkERTc5xb1HEwQEAYFEY9YnAQREvYiTtBQAfTeFPxxENwaAABOXxwCZ4DcGAAG39v8AdY+31ghQ2MKQwphCff9BR5HgBUczCelAupcjKCQBHMSyQCJEkkQCSUEBgoABEQbOIswlNzcE9E9sABMFxP6XAM//54Ag86qHBUWV57JHk/cHID7GiTc31whQHEe3BkAAEwXE/tWPHMeyRZcAz//ngKDwMzWgAPJAYkQFYYKAQRG3h/VPBsaThwcBBUcjgOcAE9fFAJjHBWd9F8zDyMf5jTqVqpWxgYzLI6oHAEE3GcETBVAMskBBAYKAAREizDeE9U+TBwQBJsrER07GBs5KyKqJEwQEAWPzlQCuhKnAAylEACaZE1nJABxIY1XwABxEY175ArU9fd1IQCaGzoWXAM//54Cg4xN19Q8BxZMHQAxcyFxAppdcwFxEhY9cxPJAYkTSREJJskkFYYKAaTVtv0ERBsaXAM//54BA1gNFhQGyQGkVEzUVAEEBgoBBEQbGxTcRwRlFskBBARcDz/9nAOPPQREGxibCIsSqhJcAz//ngADNdT8NyTcH9U+TBgcAg9dGABMEBwCFB8IHwYMjkvYAkwYADGOG1AATB+ADY3X3AG03IxIEALJAIkSSREEBgoBBEQbGEwcADGMa5QATBbANRTcTBcANskBBAVm/EwewDeMb5f5xNxMF0A31t0ERIsQmwgbGKoSzBLUAYxeUALJAIkSSREEBgoADRQQABQRNP+23NXEmy07H/XKFaf10Is1KyVLFVsMGz5OEhPoWkZOHCQemlxgIs4TnACqJJoUuhJcAz//ngOAZk4cJBxgIBWq6l7OKR0Ex5AVnfXWTBYX6kwcHBxMFhfkUCKqXM4XXAJMHBweul7OF1wAqxpcAz//ngKAWMkXBRZU3AUWFYhaR+kBqRNpESkm6SSpKmkoNYYKAooljc4oAhWlOhtaFSoWXAM//54CgyRN19Q8B7U6G1oUmhZcAz//ngOARTpkzBDRBUbcTBTAGVb8TBQAMSb0xcf1yBWdO11LVVtNezwbfIt0m20rZWtFizWbLaslux/13FpETBwcHPpccCLqXPsYjqgf4qokuirKKtosNNZMHAAIZwbcHAgA+hZcAz//ngIAKhWdj5VcTBWR9eRMJifqTBwQHypcYCDOJ5wBKhZcAz//ngAAJfXsTDDv5kwyL+RMHBAeTBwQHFAhil+aXgUQzDNcAs4zXAFJNY3xNCWPxpANBqJk/ooUIAY01uTcihgwBSoWXAM//54DgBKKZopRj9UQDs4ekQWPxdwMzBJpAY/OKAFaEIoYMAU6FlwDP/+eA4LgTdfUPVd0CzAFEeV2NTaMJAQBihZcAz//ngKCnffkDRTEB5oVZPGNPBQDj4o3+hWeThwcHopcYCLqX2pcjiqf4BQTxt+MVpf2RR+MF9PYFZ311kwcHB5MFhfoTBYX5FAiqlzOF1wCTBwcHrpezhdcAKsaXAM//54AA+3E9MkXBRWUzUT3dObcHAgAZ4ZMHAAI+hZcAz//ngAD4hWIWkfpQalTaVEpZulkqWppaClv6S2pM2kxKTbpNKWGCgLdXQUkZcZOH94QBRYbeotym2srYztbS1NbS2tDezuLM5srqyO7GPs6XAM//54DgoHkxBcU3R9hQt2cRUBMHF6qYzyOgBwAjrAcAmNPYT7cGBABVj9jPI6AHArcH9U83N/ZPk4cHABMHx7ohoCOgBwCRB+Pt5/7VM5FFaAjFOfE7t7f1T5OHx7EhZz6XIyD3CLcH8U83CfVPk4eHDiMg+QC3OfZPKTmTicmxEwkJAGMFBRC3Zw1QEwcQArjPhUVFRZcAz//ngKDmtwXxTwFGk4UFAEVFlwDP/+eAoOe3Jw1QEUeYyzcFAgCXAM//54Dg5rcHDlCIX4FFt4T1T3GJYRUTNRUAlwDP/+eAYKXBZ/0XEwcAEIVmQWa3BQABAUWThAQBtwr1Tw1qlwDP/+eAIJsTiwoBJpqDp8kI9d+Dq8kIhUcjpgkIIwLxAoPHGwAJRyMT4QKjAvECAtRNR2OB5whRR2OP5wYpR2Of5wCDxzsAA8crAKIH2Y8RR2OW5wCDp4sAnEM+1NE5oUVIEMU2g8c7AAPHKwCiB9mPEWdBB2N09wQTBbANqTYTBcANkTYTBeAOPT5dMUG3twXxTwFGk4WFAxVFlwDP/+eAoNg3pwxQXEcTBQACk+cXEFzHMbfJRyMT8QJNtwPHGwDRRmPn5gKFRmPm5gABTBME8A+FqHkXE3f3D8lG4+jm/rc29k8KB5OGBrs2lxhDAoeTBgcDk/b2DxFG42nW/BMH9wITd/cPjUZj6+YItzb2TwoHk4bGvzaXGEMChxMHQAJjl+cQAtQdRAFFcTwBReU0ATH9PqFFSBB9FCE2dfQBTAFEE3X0D8E8E3X8D+k0zTbjHgTqg8cbAElHY2v3MAlH43b36vUXk/f3Dz1H42D36jc39k+KBxMHx8C6l5xDgocFRJ3rcBCBRQFFl/DO/+eAoHcd4dFFaBBtNAFEMagFRIHvl/DO/+eAIH0zNKAAKaAhR2OF5wAFRAFMYbcDrIsAA6TLALNnjADSB/X30TBl9cFsIpz9HH19MwWMQF3cs3eVAZXjwWwzBYxAY+aMAv18MwWMQF3QMYGX8M7/54DAeV35ZpT1tzGBl/DO/+eAwHhd8WqU0bdBgZfwzv/ngAB4WfkzBJRBwbchR+OK5/ABTBMEAAw5t0FHzb9BRwVE453n9oOlywADpYsAOTy5v0FHBUTjk+f2A6cLAZFnY+7nHoOlSwEDpYsA7/C/hz2/QUcFROOT5/SDpwsBEWdjbvccA6fLAIOlSwEDpYsAM4TnAu/wP4UjrAQAIySKsDm3A8cEAGMHBxQDp4sAwRcTBAAMYxP3AMBIAUeTBvAOY0b3AoPHWwADx0sAAUyiB9mPA8drAEIHXY+Dx3sA4gfZj+OC9uYTBBAMsb0zhusAA0aGAQUHsY7ht4PHBAD9y9xEY5EHFsBII4AEAEW9YUdjlucCg6fLAQOniwGDpksBA6YLAYOlywADpYsAl/DO/+eAgGgqjDM0oAAxtQFMBUQZtRFHBUTjm+fmtxcOUPRfZXd9FwVm+Y7RjgOliwCThQcI9N+UQfmO0Y6UwZOFRwiUQfmO0Y6UwbRfgUV1j1GPuN+X8M7/54AgaxG9E/f3AOMRB+qT3EcAE4SLAAFMfV3jcZzbSESX8M7/54AgThhEVEAQQPmOYwenARxCE0f3/32P2Y4UwgUMQQTZvxFHhbVBRwVE45Tn3oOniwADp0sBIyb5ACMk6QBdu4MliQDBF5Hlic8BTBMEYAyxswMnyQBjZvcGE/c3AOMVB+IDKMkAAUYBRzMF6ECzhuUAY2n3AOMBBtIjJqkAIyTZABm7M4brABBOEQeQwgVG6b8hRwVE457n1gMkyQAZwBMEgAwjJgkAIyQJADM0gACNswFMEwQgDNWxAUwTBIAM8bkBTBMEkAzRuRMHIA1jg+cMEwdADeOY57gDxDsAg8crACIEXYyX8M7/54AATgOsxABBFGNzhAEijOMGDLbAQGKUMYCcSGNV8ACcRGNb9Arv8O/Rdd3IQGKGk4WLAZfwzv/ngABKAcWTB0AM3MjcQOKX3MDcRLOHh0HcxJfwzv/ngOBIDbYJZRMFBXEDrMsAA6SLAJfwzv/ngKA4t6cMUNhLtwYAAcEWk1dHARIHdY+9i9mPs4eHAwFFs9WHApfwzv/ngAA6EwWAPpfwzv/ngEA10byDpksBA6YLAYOlywADpYsA7/DP/n28g8U7AIPHKwAThYsBogXdjcEV7/DP21207/Avyz2/A8Q7AIPHKwATjIsBIgRdjNxEQRTN45FHhUtj/4cIkweQDNzIrbwDpw0AItAFSLOH7EA+1oMnirBjc/QADUhCxjrE7/CvxiJHMkg3hfVP4oV8EJOGCgEQEBMFhQKX8M7/54BgNze39U+TCAcBglcDp4iwg6UNAB2MHY8+nLJXI6TosKqLvpUjoL0Ak4cKAZ2NAcWhZ2OX9QBahe/wb9EjoG0BCcTcRJnD409w92PfCwCTB3AMvbeFS7c99k+3jPVPk43NupOMDAHpv+OaC5zcROOHB5yTB4AMqbeDp4sA45AHnO/wD9YJZRMFBXGX8M7/54CgIpfwzv/ngKAnTbIDpMsA4w4EmO/wz9MTBYA+l/DO/+eAgCAClFmy9lBmVNZURlm2WSZalloGW/ZLZkzWTEZNtk0JYYKAAAA=\",ki=1341194240,Hi=\"EAD1TwYK8U9WCvFPrgrxT4QL8U/wC/FPngvxT9QI8U9AC/FPgAvxT8IK8U+ECPFP9grxT4QI8U/gCfFPJgrxT1YK8U+uCvFP8gnxTzgJ8U9oCfFP7gnxT0AO8U9WCvFPCA3xTwAO8U/EB/FPJA7xT8QH8U/EB/FPxAfxT8QH8U/EB/FPxAfxT8QH8U/EB/FPpAzxT8QH8U8mDfFPAA7xTw==\",Pi=1341533100;var Oi=Object.freeze({__proto__:null,ESP32P4ROM:class extends ke{constructor(){super(...arguments),this.CHIP_NAME=\"ESP32-P4\",this.IMAGE_CHIP_ID=18,this.IROM_MAP_START=1073741824,this.IROM_MAP_END=1275068416,this.DROM_MAP_START=1073741824,this.DROM_MAP_END=1275068416,this.BOOTLOADER_FLASH_OFFSET=8192,this.CHIP_DETECT_MAGIC_VALUE=[0,182303440],this.UART_DATE_REG_ADDR=1343004812,this.EFUSE_BASE=1343410176,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.SPI_REG_BASE=1342754816,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=24,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=28,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY2_SHIFT=0,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY3_SHIFT=4,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY4_SHIFT=8,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY5_SHIFT=12,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<20,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+52,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<18,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+56,this.EFUSE_SECURE_BOOT_EN_MASK=1<<20,this.PURPOSE_VAL_XTS_AES256_KEY_1=2,this.PURPOSE_VAL_XTS_AES256_KEY_2=3,this.PURPOSE_VAL_XTS_AES128_KEY=4,this.SUPPORTS_ENCRYPTED_FLASH=!0,this.FLASH_ENCRYPTED_WRITE_ALIGN=16,this.MEMORY_MAP=[[0,65536,\"PADDING\"],[1073741824,1275068416,\"DROM\"],[1341128704,1341784064,\"DRAM\"],[1341128704,1341784064,\"BYTE_ACCESSIBLE\"],[1337982976,1338114048,\"DROM_MASK\"],[1337982976,1338114048,\"IROM_MASK\"],[1073741824,1275068416,\"IROM\"],[1341128704,1341784064,\"IRAM\"],[1343258624,1343291392,\"RTC_IRAM\"],[1343258624,1343291392,\"RTC_DRAM\"],[1611653120,1611661312,\"MEM_INTERNAL2\"]],this.UF2_FAMILY_ID=1026592404,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:\"USER/EMPTY\",1:\"ECDSA_KEY\",2:\"XTS_AES_256_KEY_1\",3:\"XTS_AES_256_KEY_2\",4:\"XTS_AES_128_KEY\",5:\"HMAC_DOWN_ALL\",6:\"HMAC_DOWN_JTAG\",7:\"HMAC_DOWN_DIGITAL_SIGNATURE\",8:\"HMAC_UP\",9:\"SECURE_BOOT_DIGEST0\",10:\"SECURE_BOOT_DIGEST1\",11:\"SECURE_BOOT_DIGEST2\",12:\"KM_INIT_KEY\"},this.TEXT_START=ki,this.ENTRY=pi,this.DATA_START=Pi,this.ROM_DATA=Hi,this.ROM_TEXT=yi}async getPkgVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return await A.readReg(t)>>27&7}async getMinorChipVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return await A.readReg(t)>>0&15}async getMajorChipVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return await A.readReg(t)>>4&3}async getChipDescription(A){return`${0===await this.getPkgVersion(A)?\"ESP32-P4\":\"unknown ESP32-P4\"} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getChipFeatures(A){return[\"High-Performance MCU\"]}async getCrystalFreq(A){return 40}async getFlashVoltage(A){}async overrideVddsdio(A){A.debug(\"VDD_SDIO overrides are not supported for ESP32-P4\")}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+\":\"+this._d2h(i[1])+\":\"+this._d2h(i[2])+\":\"+this._d2h(i[3])+\":\"+this._d2h(i[4])+\":\"+this._d2h(i[5])}async getFlashCryptConfig(A){}async getSecureBootEnabled(A){return await A.readReg(this.EFUSE_SECURE_BOOT_EN_REG)&this.EFUSE_SECURE_BOOT_EN_MASK}async getKeyBlockPurpose(A,t){if(t<0||t>this.EFUSE_MAX_KEY)return void A.debug(`Valid key block numbers must be in range 0-${this.EFUSE_MAX_KEY}`);const e=[[this.EFUSE_PURPOSE_KEY0_REG,this.EFUSE_PURPOSE_KEY0_SHIFT],[this.EFUSE_PURPOSE_KEY1_REG,this.EFUSE_PURPOSE_KEY1_SHIFT],[this.EFUSE_PURPOSE_KEY2_REG,this.EFUSE_PURPOSE_KEY2_SHIFT],[this.EFUSE_PURPOSE_KEY3_REG,this.EFUSE_PURPOSE_KEY3_SHIFT],[this.EFUSE_PURPOSE_KEY4_REG,this.EFUSE_PURPOSE_KEY4_SHIFT],[this.EFUSE_PURPOSE_KEY5_REG,this.EFUSE_PURPOSE_KEY5_SHIFT]],[i,s]=e[t];return await A.readReg(i)>>s&15}async isFlashEncryptionKeyValid(A){const t=[];for(let e=0;e<=this.EFUSE_MAX_KEY;e++){const i=await this.getKeyBlockPurpose(A,e);t.push(i)}if(void 0!==typeof t.find((A=>A===this.PURPOSE_VAL_XTS_AES128_KEY)))return!0;const e=t.find((A=>A===this.PURPOSE_VAL_XTS_AES256_KEY_1)),i=t.find((A=>A===this.PURPOSE_VAL_XTS_AES256_KEY_2));return void 0!==typeof e&&void 0!==typeof i}}});export{Qe as ESPLoader,fe as ROM,Ie as Transport,le as classicReset,Re as customReset,Me as hardReset,de as usbJTAGSerialReset,De as validateCustomResetStringSequence};\n","/*\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in\n * compliance with the License. You may obtain a copy of\n * the License at\n *\n *    https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in\n * writing, software distributed under the License is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES\n * OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing\n * permissions and limitations under the License.\n */\n'use strict';\nexport var SerialPolyfillProtocol;\n(function (SerialPolyfillProtocol) {\n    SerialPolyfillProtocol[SerialPolyfillProtocol[\"UsbCdcAcm\"] = 0] = \"UsbCdcAcm\";\n})(SerialPolyfillProtocol || (SerialPolyfillProtocol = {}));\nconst kSetLineCoding = 0x20;\nconst kSetControlLineState = 0x22;\nconst kSendBreak = 0x23;\nconst kDefaultBufferSize = 255;\nconst kDefaultDataBits = 8;\nconst kDefaultParity = 'none';\nconst kDefaultStopBits = 1;\nconst kAcceptableDataBits = [16, 8, 7, 6, 5];\nconst kAcceptableStopBits = [1, 2];\nconst kAcceptableParity = ['none', 'even', 'odd'];\nconst kParityIndexMapping = ['none', 'odd', 'even'];\nconst kStopBitsIndexMapping = [1, 1.5, 2];\nconst kDefaultPolyfillOptions = {\n    protocol: SerialPolyfillProtocol.UsbCdcAcm,\n    usbControlInterfaceClass: 2,\n    usbTransferInterfaceClass: 10,\n};\n/**\n * Utility function to get the interface implementing a desired class.\n * @param {USBDevice} device The USB device.\n * @param {number} classCode The desired interface class.\n * @return {USBInterface} The first interface found that implements the desired\n * class.\n * @throws TypeError if no interface is found.\n */\nfunction findInterface(device, classCode) {\n    const configuration = device.configurations[0];\n    for (const iface of configuration.interfaces) {\n        const alternate = iface.alternates[0];\n        if (alternate.interfaceClass === classCode) {\n            return iface;\n        }\n    }\n    throw new TypeError(`Unable to find interface with class ${classCode}.`);\n}\n/**\n * Utility function to get an endpoint with a particular direction.\n * @param {USBInterface} iface The interface to search.\n * @param {USBDirection} direction The desired transfer direction.\n * @return {USBEndpoint} The first endpoint with the desired transfer direction.\n * @throws TypeError if no endpoint is found.\n */\nfunction findEndpoint(iface, direction) {\n    const alternate = iface.alternates[0];\n    for (const endpoint of alternate.endpoints) {\n        if (endpoint.direction == direction) {\n            return endpoint;\n        }\n    }\n    throw new TypeError(`Interface ${iface.interfaceNumber} does not have an ` +\n        `${direction} endpoint.`);\n}\n/**\n * Implementation of the underlying source API[1] which reads data from a USB\n * endpoint. This can be used to construct a ReadableStream.\n *\n * [1]: https://streams.spec.whatwg.org/#underlying-source-api\n */\nclass UsbEndpointUnderlyingSource {\n    /**\n     * Constructs a new UnderlyingSource that will pull data from the specified\n     * endpoint on the given USB device.\n     *\n     * @param {USBDevice} device\n     * @param {USBEndpoint} endpoint\n     * @param {function} onError function to be called on error\n     */\n    constructor(device, endpoint, onError) {\n        this.type = 'bytes';\n        this.device_ = device;\n        this.endpoint_ = endpoint;\n        this.onError_ = onError;\n    }\n    /**\n     * Reads a chunk of data from the device.\n     *\n     * @param {ReadableByteStreamController} controller\n     */\n    pull(controller) {\n        (async () => {\n            var _a;\n            let chunkSize;\n            if (controller.desiredSize) {\n                const d = controller.desiredSize / this.endpoint_.packetSize;\n                chunkSize = Math.ceil(d) * this.endpoint_.packetSize;\n            }\n            else {\n                chunkSize = this.endpoint_.packetSize;\n            }\n            try {\n                const result = await this.device_.transferIn(this.endpoint_.endpointNumber, chunkSize);\n                if (result.status != 'ok') {\n                    controller.error(`USB error: ${result.status}`);\n                    this.onError_();\n                }\n                if ((_a = result.data) === null || _a === void 0 ? void 0 : _a.buffer) {\n                    const chunk = new Uint8Array(result.data.buffer, result.data.byteOffset, result.data.byteLength);\n                    controller.enqueue(chunk);\n                }\n            }\n            catch (error) {\n                controller.error(error.toString());\n                this.onError_();\n            }\n        })();\n    }\n}\n/**\n * Implementation of the underlying sink API[2] which writes data to a USB\n * endpoint. This can be used to construct a WritableStream.\n *\n * [2]: https://streams.spec.whatwg.org/#underlying-sink-api\n */\nclass UsbEndpointUnderlyingSink {\n    /**\n     * Constructs a new UnderlyingSink that will write data to the specified\n     * endpoint on the given USB device.\n     *\n     * @param {USBDevice} device\n     * @param {USBEndpoint} endpoint\n     * @param {function} onError function to be called on error\n     */\n    constructor(device, endpoint, onError) {\n        this.device_ = device;\n        this.endpoint_ = endpoint;\n        this.onError_ = onError;\n    }\n    /**\n     * Writes a chunk to the device.\n     *\n     * @param {Uint8Array} chunk\n     * @param {WritableStreamDefaultController} controller\n     */\n    async write(chunk, controller) {\n        try {\n            const result = await this.device_.transferOut(this.endpoint_.endpointNumber, chunk);\n            if (result.status != 'ok') {\n                controller.error(result.status);\n                this.onError_();\n            }\n        }\n        catch (error) {\n            controller.error(error.toString());\n            this.onError_();\n        }\n    }\n}\n/** a class used to control serial devices over WebUSB */\nexport class SerialPort {\n    /**\n     * constructor taking a WebUSB device that creates a SerialPort instance.\n     * @param {USBDevice} device A device acquired from the WebUSB API\n     * @param {SerialPolyfillOptions} polyfillOptions Optional options to\n     * configure the polyfill.\n     */\n    constructor(device, polyfillOptions) {\n        this.polyfillOptions_ = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);\n        this.outputSignals_ = {\n            dataTerminalReady: false,\n            requestToSend: false,\n            break: false,\n        };\n        this.device_ = device;\n        this.controlInterface_ = findInterface(this.device_, this.polyfillOptions_.usbControlInterfaceClass);\n        this.transferInterface_ = findInterface(this.device_, this.polyfillOptions_.usbTransferInterfaceClass);\n        this.inEndpoint_ = findEndpoint(this.transferInterface_, 'in');\n        this.outEndpoint_ = findEndpoint(this.transferInterface_, 'out');\n    }\n    /**\n     * Getter for the readable attribute. Constructs a new ReadableStream as\n     * necessary.\n     * @return {ReadableStream} the current readable stream\n     */\n    get readable() {\n        var _a;\n        if (!this.readable_ && this.device_.opened) {\n            this.readable_ = new ReadableStream(new UsbEndpointUnderlyingSource(this.device_, this.inEndpoint_, () => {\n                this.readable_ = null;\n            }), {\n                highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : kDefaultBufferSize,\n            });\n        }\n        return this.readable_;\n    }\n    /**\n     * Getter for the writable attribute. Constructs a new WritableStream as\n     * necessary.\n     * @return {WritableStream} the current writable stream\n     */\n    get writable() {\n        var _a;\n        if (!this.writable_ && this.device_.opened) {\n            this.writable_ = new WritableStream(new UsbEndpointUnderlyingSink(this.device_, this.outEndpoint_, () => {\n                this.writable_ = null;\n            }), new ByteLengthQueuingStrategy({\n                highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : kDefaultBufferSize,\n            }));\n        }\n        return this.writable_;\n    }\n    /**\n     * a function that opens the device and claims all interfaces needed to\n     * control and communicate to and from the serial device\n     * @param {SerialOptions} options Object containing serial options\n     * @return {Promise<void>} A promise that will resolve when device is ready\n     * for communication\n     */\n    async open(options) {\n        this.serialOptions_ = options;\n        this.validateOptions();\n        try {\n            await this.device_.open();\n            if (this.device_.configuration === null) {\n                await this.device_.selectConfiguration(1);\n            }\n            await this.device_.claimInterface(this.controlInterface_.interfaceNumber);\n            if (this.controlInterface_ !== this.transferInterface_) {\n                await this.device_.claimInterface(this.transferInterface_.interfaceNumber);\n            }\n            await this.setLineCoding();\n            await this.setSignals({ dataTerminalReady: true });\n        }\n        catch (error) {\n            if (this.device_.opened) {\n                await this.device_.close();\n            }\n            throw new Error('Error setting up device: ' + error.toString());\n        }\n    }\n    /**\n     * Closes the port.\n     *\n     * @return {Promise<void>} A promise that will resolve when the port is\n     * closed.\n     */\n    async close() {\n        const promises = [];\n        if (this.readable_) {\n            promises.push(this.readable_.cancel());\n        }\n        if (this.writable_) {\n            promises.push(this.writable_.abort());\n        }\n        await Promise.all(promises);\n        this.readable_ = null;\n        this.writable_ = null;\n        if (this.device_.opened) {\n            await this.setSignals({ dataTerminalReady: false, requestToSend: false });\n            await this.device_.close();\n        }\n    }\n    /**\n     * Forgets the port.\n     *\n     * @return {Promise<void>} A promise that will resolve when the port is\n     * forgotten.\n     */\n    async forget() {\n        return this.device_.forget();\n    }\n    /**\n     * A function that returns properties of the device.\n     * @return {SerialPortInfo} Device properties.\n     */\n    getInfo() {\n        return {\n            usbVendorId: this.device_.vendorId,\n            usbProductId: this.device_.productId,\n        };\n    }\n    /**\n     * A function used to change the serial settings of the device\n     * @param {object} options the object which carries serial settings data\n     * @return {Promise<void>} A promise that will resolve when the options are\n     * set\n     */\n    reconfigure(options) {\n        this.serialOptions_ = Object.assign(Object.assign({}, this.serialOptions_), options);\n        this.validateOptions();\n        return this.setLineCoding();\n    }\n    /**\n     * Sets control signal state for the port.\n     * @param {SerialOutputSignals} signals The signals to enable or disable.\n     * @return {Promise<void>} a promise that is resolved when the signal state\n     * has been changed.\n     */\n    async setSignals(signals) {\n        this.outputSignals_ = Object.assign(Object.assign({}, this.outputSignals_), signals);\n        if (signals.dataTerminalReady !== undefined ||\n            signals.requestToSend !== undefined) {\n            // The Set_Control_Line_State command expects a bitmap containing the\n            // values of all output signals that should be enabled or disabled.\n            //\n            // Ref: USB CDC specification version 1.1 §6.2.14.\n            const value = (this.outputSignals_.dataTerminalReady ? 1 << 0 : 0) |\n                (this.outputSignals_.requestToSend ? 1 << 1 : 0);\n            await this.device_.controlTransferOut({\n                'requestType': 'class',\n                'recipient': 'interface',\n                'request': kSetControlLineState,\n                'value': value,\n                'index': this.controlInterface_.interfaceNumber,\n            });\n        }\n        if (signals.break !== undefined) {\n            // The SendBreak command expects to be given a duration for how long the\n            // break signal should be asserted. Passing 0xFFFF enables the signal\n            // until 0x0000 is send.\n            //\n            // Ref: USB CDC specification version 1.1 §6.2.15.\n            const value = this.outputSignals_.break ? 0xFFFF : 0x0000;\n            await this.device_.controlTransferOut({\n                'requestType': 'class',\n                'recipient': 'interface',\n                'request': kSendBreak,\n                'value': value,\n                'index': this.controlInterface_.interfaceNumber,\n            });\n        }\n    }\n    /**\n     * Checks the serial options for validity and throws an error if it is\n     * not valid\n     */\n    validateOptions() {\n        if (!this.isValidBaudRate(this.serialOptions_.baudRate)) {\n            throw new RangeError('invalid Baud Rate ' + this.serialOptions_.baudRate);\n        }\n        if (!this.isValidDataBits(this.serialOptions_.dataBits)) {\n            throw new RangeError('invalid dataBits ' + this.serialOptions_.dataBits);\n        }\n        if (!this.isValidStopBits(this.serialOptions_.stopBits)) {\n            throw new RangeError('invalid stopBits ' + this.serialOptions_.stopBits);\n        }\n        if (!this.isValidParity(this.serialOptions_.parity)) {\n            throw new RangeError('invalid parity ' + this.serialOptions_.parity);\n        }\n    }\n    /**\n     * Checks the baud rate for validity\n     * @param {number} baudRate the baud rate to check\n     * @return {boolean} A boolean that reflects whether the baud rate is valid\n     */\n    isValidBaudRate(baudRate) {\n        return baudRate % 1 === 0;\n    }\n    /**\n     * Checks the data bits for validity\n     * @param {number} dataBits the data bits to check\n     * @return {boolean} A boolean that reflects whether the data bits setting is\n     * valid\n     */\n    isValidDataBits(dataBits) {\n        if (typeof dataBits === 'undefined') {\n            return true;\n        }\n        return kAcceptableDataBits.includes(dataBits);\n    }\n    /**\n     * Checks the stop bits for validity\n     * @param {number} stopBits the stop bits to check\n     * @return {boolean} A boolean that reflects whether the stop bits setting is\n     * valid\n     */\n    isValidStopBits(stopBits) {\n        if (typeof stopBits === 'undefined') {\n            return true;\n        }\n        return kAcceptableStopBits.includes(stopBits);\n    }\n    /**\n     * Checks the parity for validity\n     * @param {string} parity the parity to check\n     * @return {boolean} A boolean that reflects whether the parity is valid\n     */\n    isValidParity(parity) {\n        if (typeof parity === 'undefined') {\n            return true;\n        }\n        return kAcceptableParity.includes(parity);\n    }\n    /**\n     * sends the options alog the control interface to set them on the device\n     * @return {Promise} a promise that will resolve when the options are set\n     */\n    async setLineCoding() {\n        var _a, _b, _c;\n        // Ref: USB CDC specification version 1.1 §6.2.12.\n        const buffer = new ArrayBuffer(7);\n        const view = new DataView(buffer);\n        view.setUint32(0, this.serialOptions_.baudRate, true);\n        view.setUint8(4, kStopBitsIndexMapping.indexOf((_a = this.serialOptions_.stopBits) !== null && _a !== void 0 ? _a : kDefaultStopBits));\n        view.setUint8(5, kParityIndexMapping.indexOf((_b = this.serialOptions_.parity) !== null && _b !== void 0 ? _b : kDefaultParity));\n        view.setUint8(6, (_c = this.serialOptions_.dataBits) !== null && _c !== void 0 ? _c : kDefaultDataBits);\n        const result = await this.device_.controlTransferOut({\n            'requestType': 'class',\n            'recipient': 'interface',\n            'request': kSetLineCoding,\n            'value': 0x00,\n            'index': this.controlInterface_.interfaceNumber,\n        }, buffer);\n        if (result.status != 'ok') {\n            throw new DOMException('NetworkError', 'Failed to set line coding.');\n        }\n    }\n}\n/** implementation of the global navigator.serial object */\nclass Serial {\n    /**\n     * Requests permission to access a new port.\n     *\n     * @param {SerialPortRequestOptions} options\n     * @param {SerialPolyfillOptions} polyfillOptions\n     * @return {Promise<SerialPort>}\n     */\n    async requestPort(options, polyfillOptions) {\n        polyfillOptions = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);\n        const usbFilters = [];\n        if (options && options.filters) {\n            for (const filter of options.filters) {\n                const usbFilter = {\n                    classCode: polyfillOptions.usbControlInterfaceClass,\n                };\n                if (filter.usbVendorId !== undefined) {\n                    usbFilter.vendorId = filter.usbVendorId;\n                }\n                if (filter.usbProductId !== undefined) {\n                    usbFilter.productId = filter.usbProductId;\n                }\n                usbFilters.push(usbFilter);\n            }\n        }\n        if (usbFilters.length === 0) {\n            usbFilters.push({\n                classCode: polyfillOptions.usbControlInterfaceClass,\n            });\n        }\n        const device = await navigator.usb.requestDevice({ 'filters': usbFilters });\n        const port = new SerialPort(device, polyfillOptions);\n        return port;\n    }\n    /**\n     * Get the set of currently available ports.\n     *\n     * @param {SerialPolyfillOptions} polyfillOptions Polyfill configuration that\n     * should be applied to these ports.\n     * @return {Promise<SerialPort[]>} a promise that is resolved with a list of\n     * ports.\n     */\n    async getPorts(polyfillOptions) {\n        polyfillOptions = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);\n        const devices = await navigator.usb.getDevices();\n        const ports = [];\n        devices.forEach((device) => {\n            try {\n                const port = new SerialPort(device, polyfillOptions);\n                ports.push(port);\n            }\n            catch (e) {\n                // Skip unrecognized port.\n            }\n        });\n        return ports;\n    }\n}\n/* an object to be used for starting the serial workflow */\nexport const serial = new Serial();\n//# sourceMappingURL=serial.js.map","/*\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in\n * compliance with the License. You may obtain a copy of\n * the License at\n *\n *    https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in\n * writing, software distributed under the License is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES\n * OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing\n * permissions and limitations under the License.\n */\n'use strict';\n\nexport enum SerialPolyfillProtocol {\n  UsbCdcAcm, // eslint-disable-line no-unused-vars\n}\n\nexport interface SerialPolyfillOptions {\n  protocol?: SerialPolyfillProtocol;\n  usbControlInterfaceClass?: number;\n  usbTransferInterfaceClass?: number;\n}\n\nconst kSetLineCoding = 0x20;\nconst kSetControlLineState = 0x22;\nconst kSendBreak = 0x23;\n\nconst kDefaultBufferSize = 255;\nconst kDefaultDataBits = 8;\nconst kDefaultParity = 'none';\nconst kDefaultStopBits = 1;\n\nconst kAcceptableDataBits = [16, 8, 7, 6, 5];\nconst kAcceptableStopBits = [1, 2];\nconst kAcceptableParity = ['none', 'even', 'odd'];\n\nconst kParityIndexMapping: ParityType[] =\n    ['none', 'odd', 'even'];\nconst kStopBitsIndexMapping = [1, 1.5, 2];\n\nconst kDefaultPolyfillOptions = {\n  protocol: SerialPolyfillProtocol.UsbCdcAcm,\n  usbControlInterfaceClass: 2,\n  usbTransferInterfaceClass: 10,\n};\n\n/**\n * Utility function to get the interface implementing a desired class.\n * @param {USBDevice} device The USB device.\n * @param {number} classCode The desired interface class.\n * @return {USBInterface} The first interface found that implements the desired\n * class.\n * @throws TypeError if no interface is found.\n */\nfunction findInterface(device: USBDevice, classCode: number): USBInterface {\n  const configuration = device.configurations[0];\n  for (const iface of configuration.interfaces) {\n    const alternate = iface.alternates[0];\n    if (alternate.interfaceClass === classCode) {\n      return iface;\n    }\n  }\n  throw new TypeError(`Unable to find interface with class ${classCode}.`);\n}\n\n/**\n * Utility function to get an endpoint with a particular direction.\n * @param {USBInterface} iface The interface to search.\n * @param {USBDirection} direction The desired transfer direction.\n * @return {USBEndpoint} The first endpoint with the desired transfer direction.\n * @throws TypeError if no endpoint is found.\n */\nfunction findEndpoint(iface: USBInterface, direction: USBDirection):\n    USBEndpoint {\n  const alternate = iface.alternates[0];\n  for (const endpoint of alternate.endpoints) {\n    if (endpoint.direction == direction) {\n      return endpoint;\n    }\n  }\n  throw new TypeError(`Interface ${iface.interfaceNumber} does not have an ` +\n                      `${direction} endpoint.`);\n}\n\n/**\n * Implementation of the underlying source API[1] which reads data from a USB\n * endpoint. This can be used to construct a ReadableStream.\n *\n * [1]: https://streams.spec.whatwg.org/#underlying-source-api\n */\nclass UsbEndpointUnderlyingSource implements UnderlyingByteSource {\n  private device_: USBDevice;\n  private endpoint_: USBEndpoint;\n  private onError_: () => void;\n\n  type: 'bytes';\n\n  /**\n   * Constructs a new UnderlyingSource that will pull data from the specified\n   * endpoint on the given USB device.\n   *\n   * @param {USBDevice} device\n   * @param {USBEndpoint} endpoint\n   * @param {function} onError function to be called on error\n   */\n  constructor(device: USBDevice, endpoint: USBEndpoint, onError: () => void) {\n    this.type = 'bytes';\n    this.device_ = device;\n    this.endpoint_ = endpoint;\n    this.onError_ = onError;\n  }\n\n  /**\n   * Reads a chunk of data from the device.\n   *\n   * @param {ReadableByteStreamController} controller\n   */\n  pull(controller: ReadableByteStreamController): void {\n    (async (): Promise<void> => {\n      let chunkSize;\n      if (controller.desiredSize) {\n        const d = controller.desiredSize / this.endpoint_.packetSize;\n        chunkSize = Math.ceil(d) * this.endpoint_.packetSize;\n      } else {\n        chunkSize = this.endpoint_.packetSize;\n      }\n\n      try {\n        const result = await this.device_.transferIn(\n            this.endpoint_.endpointNumber, chunkSize);\n        if (result.status != 'ok') {\n          controller.error(`USB error: ${result.status}`);\n          this.onError_();\n        }\n        if (result.data?.buffer) {\n          const chunk = new Uint8Array(\n              result.data.buffer, result.data.byteOffset,\n              result.data.byteLength);\n          controller.enqueue(chunk);\n        }\n      } catch (error) {\n        controller.error(error.toString());\n        this.onError_();\n      }\n    })();\n  }\n}\n\n/**\n * Implementation of the underlying sink API[2] which writes data to a USB\n * endpoint. This can be used to construct a WritableStream.\n *\n * [2]: https://streams.spec.whatwg.org/#underlying-sink-api\n */\nclass UsbEndpointUnderlyingSink implements UnderlyingSink<Uint8Array> {\n  private device_: USBDevice;\n  private endpoint_: USBEndpoint;\n  private onError_: () => void;\n\n  /**\n   * Constructs a new UnderlyingSink that will write data to the specified\n   * endpoint on the given USB device.\n   *\n   * @param {USBDevice} device\n   * @param {USBEndpoint} endpoint\n   * @param {function} onError function to be called on error\n   */\n  constructor(device: USBDevice, endpoint: USBEndpoint, onError: () => void) {\n    this.device_ = device;\n    this.endpoint_ = endpoint;\n    this.onError_ = onError;\n  }\n\n  /**\n   * Writes a chunk to the device.\n   *\n   * @param {Uint8Array} chunk\n   * @param {WritableStreamDefaultController} controller\n   */\n  async write(\n      chunk: Uint8Array,\n      controller: WritableStreamDefaultController): Promise<void> {\n    try {\n      const result =\n          await this.device_.transferOut(this.endpoint_.endpointNumber, chunk);\n      if (result.status != 'ok') {\n        controller.error(result.status);\n        this.onError_();\n      }\n    } catch (error) {\n      controller.error(error.toString());\n      this.onError_();\n    }\n  }\n}\n\n/** a class used to control serial devices over WebUSB */\nexport class SerialPort {\n  private polyfillOptions_: SerialPolyfillOptions;\n  private device_: USBDevice;\n  private controlInterface_: USBInterface;\n  private transferInterface_: USBInterface;\n  private inEndpoint_: USBEndpoint;\n  private outEndpoint_: USBEndpoint;\n\n  private serialOptions_: SerialOptions;\n  private readable_: ReadableStream<Uint8Array> | null;\n  private writable_: WritableStream<Uint8Array> | null;\n  private outputSignals_: SerialOutputSignals;\n\n  /**\n   * constructor taking a WebUSB device that creates a SerialPort instance.\n   * @param {USBDevice} device A device acquired from the WebUSB API\n   * @param {SerialPolyfillOptions} polyfillOptions Optional options to\n   * configure the polyfill.\n   */\n  public constructor(\n      device: USBDevice,\n      polyfillOptions?: SerialPolyfillOptions) {\n    this.polyfillOptions_ = {...kDefaultPolyfillOptions, ...polyfillOptions};\n    this.outputSignals_ = {\n      dataTerminalReady: false,\n      requestToSend: false,\n      break: false,\n    };\n\n    this.device_ = device;\n    this.controlInterface_ = findInterface(\n        this.device_,\n        this.polyfillOptions_.usbControlInterfaceClass as number);\n    this.transferInterface_ = findInterface(\n        this.device_,\n        this.polyfillOptions_.usbTransferInterfaceClass as number);\n    this.inEndpoint_ = findEndpoint(this.transferInterface_, 'in');\n    this.outEndpoint_ = findEndpoint(this.transferInterface_, 'out');\n  }\n\n  /**\n   * Getter for the readable attribute. Constructs a new ReadableStream as\n   * necessary.\n   * @return {ReadableStream} the current readable stream\n   */\n  public get readable(): ReadableStream<Uint8Array> | null {\n    if (!this.readable_ && this.device_.opened) {\n      this.readable_ = new ReadableStream<Uint8Array>(\n          new UsbEndpointUnderlyingSource(\n              this.device_, this.inEndpoint_, () => {\n                this.readable_ = null;\n              }),\n          {\n            highWaterMark: this.serialOptions_.bufferSize ?? kDefaultBufferSize,\n          });\n    }\n    return this.readable_;\n  }\n\n  /**\n   * Getter for the writable attribute. Constructs a new WritableStream as\n   * necessary.\n   * @return {WritableStream} the current writable stream\n   */\n  public get writable(): WritableStream<Uint8Array> | null {\n    if (!this.writable_ && this.device_.opened) {\n      this.writable_ = new WritableStream(\n          new UsbEndpointUnderlyingSink(\n              this.device_, this.outEndpoint_, () => {\n                this.writable_ = null;\n              }),\n          new ByteLengthQueuingStrategy({\n            highWaterMark: this.serialOptions_.bufferSize ?? kDefaultBufferSize,\n          }));\n    }\n    return this.writable_;\n  }\n\n  /**\n   * a function that opens the device and claims all interfaces needed to\n   * control and communicate to and from the serial device\n   * @param {SerialOptions} options Object containing serial options\n   * @return {Promise<void>} A promise that will resolve when device is ready\n   * for communication\n   */\n  public async open(options: SerialOptions): Promise<void> {\n    this.serialOptions_ = options;\n    this.validateOptions();\n\n    try {\n      await this.device_.open();\n      if (this.device_.configuration === null) {\n        await this.device_.selectConfiguration(1);\n      }\n\n      await this.device_.claimInterface(this.controlInterface_.interfaceNumber);\n      if (this.controlInterface_ !== this.transferInterface_) {\n        await this.device_.claimInterface(\n            this.transferInterface_.interfaceNumber);\n      }\n\n      await this.setLineCoding();\n      await this.setSignals({dataTerminalReady: true});\n    } catch (error) {\n      if (this.device_.opened) {\n        await this.device_.close();\n      }\n      throw new Error('Error setting up device: ' + error.toString());\n    }\n  }\n\n  /**\n   * Closes the port.\n   *\n   * @return {Promise<void>} A promise that will resolve when the port is\n   * closed.\n   */\n  public async close(): Promise<void> {\n    const promises = [];\n    if (this.readable_) {\n      promises.push(this.readable_.cancel());\n    }\n    if (this.writable_) {\n      promises.push(this.writable_.abort());\n    }\n    await Promise.all(promises);\n    this.readable_ = null;\n    this.writable_ = null;\n    if (this.device_.opened) {\n      await this.setSignals({dataTerminalReady: false, requestToSend: false});\n      await this.device_.close();\n    }\n  }\n\n  /**\n   * Forgets the port.\n   *\n   * @return {Promise<void>} A promise that will resolve when the port is\n   * forgotten.\n   */\n  public async forget(): Promise<void> {\n    return this.device_.forget();\n  }\n\n  /**\n   * A function that returns properties of the device.\n   * @return {SerialPortInfo} Device properties.\n   */\n  public getInfo(): SerialPortInfo {\n    return {\n      usbVendorId: this.device_.vendorId,\n      usbProductId: this.device_.productId,\n    };\n  }\n\n  /**\n   * A function used to change the serial settings of the device\n   * @param {object} options the object which carries serial settings data\n   * @return {Promise<void>} A promise that will resolve when the options are\n   * set\n   */\n  public reconfigure(options: SerialOptions): Promise<void> {\n    this.serialOptions_ = {...this.serialOptions_, ...options};\n    this.validateOptions();\n    return this.setLineCoding();\n  }\n\n  /**\n   * Sets control signal state for the port.\n   * @param {SerialOutputSignals} signals The signals to enable or disable.\n   * @return {Promise<void>} a promise that is resolved when the signal state\n   * has been changed.\n   */\n  public async setSignals(signals: SerialOutputSignals): Promise<void> {\n    this.outputSignals_ = {...this.outputSignals_, ...signals};\n\n    if (signals.dataTerminalReady !== undefined ||\n        signals.requestToSend !== undefined) {\n      // The Set_Control_Line_State command expects a bitmap containing the\n      // values of all output signals that should be enabled or disabled.\n      //\n      // Ref: USB CDC specification version 1.1 §6.2.14.\n      const value = (this.outputSignals_.dataTerminalReady ? 1 << 0 : 0) |\n                    (this.outputSignals_.requestToSend ? 1 << 1 : 0);\n\n      await this.device_.controlTransferOut({\n        'requestType': 'class',\n        'recipient': 'interface',\n        'request': kSetControlLineState,\n        'value': value,\n        'index': this.controlInterface_.interfaceNumber,\n      });\n    }\n\n    if (signals.break !== undefined) {\n      // The SendBreak command expects to be given a duration for how long the\n      // break signal should be asserted. Passing 0xFFFF enables the signal\n      // until 0x0000 is send.\n      //\n      // Ref: USB CDC specification version 1.1 §6.2.15.\n      const value = this.outputSignals_.break ? 0xFFFF : 0x0000;\n\n      await this.device_.controlTransferOut({\n        'requestType': 'class',\n        'recipient': 'interface',\n        'request': kSendBreak,\n        'value': value,\n        'index': this.controlInterface_.interfaceNumber,\n      });\n    }\n  }\n\n  /**\n   * Checks the serial options for validity and throws an error if it is\n   * not valid\n   */\n  private validateOptions(): void {\n    if (!this.isValidBaudRate(this.serialOptions_.baudRate)) {\n      throw new RangeError('invalid Baud Rate ' + this.serialOptions_.baudRate);\n    }\n\n    if (!this.isValidDataBits(this.serialOptions_.dataBits)) {\n      throw new RangeError('invalid dataBits ' + this.serialOptions_.dataBits);\n    }\n\n    if (!this.isValidStopBits(this.serialOptions_.stopBits)) {\n      throw new RangeError('invalid stopBits ' + this.serialOptions_.stopBits);\n    }\n\n    if (!this.isValidParity(this.serialOptions_.parity)) {\n      throw new RangeError('invalid parity ' + this.serialOptions_.parity);\n    }\n  }\n\n  /**\n   * Checks the baud rate for validity\n   * @param {number} baudRate the baud rate to check\n   * @return {boolean} A boolean that reflects whether the baud rate is valid\n   */\n  private isValidBaudRate(baudRate: number): boolean {\n    return baudRate % 1 === 0;\n  }\n\n  /**\n   * Checks the data bits for validity\n   * @param {number} dataBits the data bits to check\n   * @return {boolean} A boolean that reflects whether the data bits setting is\n   * valid\n   */\n  private isValidDataBits(dataBits: number | undefined): boolean {\n    if (typeof dataBits === 'undefined') {\n      return true;\n    }\n    return kAcceptableDataBits.includes(dataBits);\n  }\n\n  /**\n   * Checks the stop bits for validity\n   * @param {number} stopBits the stop bits to check\n   * @return {boolean} A boolean that reflects whether the stop bits setting is\n   * valid\n   */\n  private isValidStopBits(stopBits: number | undefined): boolean {\n    if (typeof stopBits === 'undefined') {\n      return true;\n    }\n    return kAcceptableStopBits.includes(stopBits);\n  }\n\n  /**\n   * Checks the parity for validity\n   * @param {string} parity the parity to check\n   * @return {boolean} A boolean that reflects whether the parity is valid\n   */\n  private isValidParity(parity: ParityType | undefined): boolean {\n    if (typeof parity === 'undefined') {\n      return true;\n    }\n    return kAcceptableParity.includes(parity);\n  }\n\n  /**\n   * sends the options alog the control interface to set them on the device\n   * @return {Promise} a promise that will resolve when the options are set\n   */\n  private async setLineCoding(): Promise<void> {\n    // Ref: USB CDC specification version 1.1 §6.2.12.\n    const buffer = new ArrayBuffer(7);\n    const view = new DataView(buffer);\n    view.setUint32(0, this.serialOptions_.baudRate, true);\n    view.setUint8(\n        4, kStopBitsIndexMapping.indexOf(\n            this.serialOptions_.stopBits ?? kDefaultStopBits));\n    view.setUint8(\n        5, kParityIndexMapping.indexOf(\n            this.serialOptions_.parity ?? kDefaultParity));\n    view.setUint8(6, this.serialOptions_.dataBits ?? kDefaultDataBits);\n\n    const result = await this.device_.controlTransferOut({\n      'requestType': 'class',\n      'recipient': 'interface',\n      'request': kSetLineCoding,\n      'value': 0x00,\n      'index': this.controlInterface_.interfaceNumber,\n    }, buffer);\n    if (result.status != 'ok') {\n      throw new DOMException('NetworkError', 'Failed to set line coding.');\n    }\n  }\n}\n\n/** implementation of the global navigator.serial object */\nclass Serial {\n  /**\n   * Requests permission to access a new port.\n   *\n   * @param {SerialPortRequestOptions} options\n   * @param {SerialPolyfillOptions} polyfillOptions\n   * @return {Promise<SerialPort>}\n   */\n  async requestPort(\n      options?: SerialPortRequestOptions,\n      polyfillOptions?: SerialPolyfillOptions): Promise<SerialPort> {\n    polyfillOptions = {...kDefaultPolyfillOptions, ...polyfillOptions};\n\n    const usbFilters: USBDeviceFilter[] = [];\n    if (options && options.filters) {\n      for (const filter of options.filters) {\n        const usbFilter: USBDeviceFilter = {\n          classCode: polyfillOptions.usbControlInterfaceClass,\n        };\n        if (filter.usbVendorId !== undefined) {\n          usbFilter.vendorId = filter.usbVendorId;\n        }\n        if (filter.usbProductId !== undefined) {\n          usbFilter.productId = filter.usbProductId;\n        }\n        usbFilters.push(usbFilter);\n      }\n    }\n\n    if (usbFilters.length === 0) {\n      usbFilters.push({\n        classCode: polyfillOptions.usbControlInterfaceClass,\n      });\n    }\n\n    const device = await navigator.usb.requestDevice({'filters': usbFilters});\n    const port = new SerialPort(device, polyfillOptions);\n    return port;\n  }\n\n  /**\n   * Get the set of currently available ports.\n   *\n   * @param {SerialPolyfillOptions} polyfillOptions Polyfill configuration that\n   * should be applied to these ports.\n   * @return {Promise<SerialPort[]>} a promise that is resolved with a list of\n   * ports.\n   */\n  async getPorts(polyfillOptions?: SerialPolyfillOptions):\n      Promise<SerialPort[]> {\n    polyfillOptions = {...kDefaultPolyfillOptions, ...polyfillOptions};\n\n    const devices = await navigator.usb.getDevices();\n    const ports: SerialPort[] = [];\n    devices.forEach((device) => {\n      try {\n        const port = new SerialPort(device, polyfillOptions);\n        ports.push(port);\n      } catch (e) {\n        // Skip unrecognized port.\n      }\n    });\n    return ports;\n  }\n}\n\n/* an object to be used for starting the serial workflow */\nexport const serial = new Serial();\n"],"names":[],"version":3,"file":"index.82fa246c.js.map"}
\ No newline at end of file
diff --git a/c6-hosted/index.html b/c6-hosted/index.html
new file mode 100644
index 00000000000..0e0357dd9f3
--- /dev/null
+++ b/c6-hosted/index.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>ESP32-C6 SDIO-Hosted</title>
+        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
+        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@4.19.0/css/xterm.css">
+        <link href="https://fonts.googleapis.com/css?family=Orbitron" rel="stylesheet">
+        <link rel="icon" href="favicon.ee2246ac.ico">
+         <script src="https://cdn.jsdelivr.net/npm/xterm@4.19.0/lib/xterm.min.js"></script>
+         <script src="https://cdn.jsdelivr.net/npm/crypto-js@4.1.1/crypto-js.js"></script>
+         <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
+         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
+    </head>
+    <body>
+        <h1 align="center"><p><img src="esp-logo.e558125a.png" width="42" height="42" style="vertical-align: middle" crossorigin=""> ESP Tool</p></h1>
+        <h4 align="center">A Serial Flasher utility for Espressif chips</h4>
+        <div id="safariErr" style="display: none"><p align="center" style="color: red">This tool is not supported on Safari browser!</p>
+        </div>
+        <div class="container" id="main">
+            <hr>
+            <div id="program">
+
+                <h3> Program ESP32-C6 as SDIO ESP-Hosted adapter </h3>
+                <input class="btn btn-success" type="button" id="connectButton" value="Connect">
+                <input class="btn btn-primary" type="button" id="copyTraceButton" value="Copy Trace">
+                <input class="btn btn-danger" type="button" id="disconnectButton" value="Disconnect">
+                <input class="btn btn-warning" type="button" id="eraseButton" value="Erase Flash">
+                <input class="btn btn-warning" type="button" id="resetButton" value="Reset">
+                <label for="baudrates" id="lblBaudrate">Baudrate:</label>
+                <select name="baudrates" id="baudrates">
+                    <option value="921600">921600</option>
+                    <option value="460800">460800</option>
+                    <option value="230400">230400</option>
+                    <option value="115200">115200</option>
+                </select>
+                <br>
+                <label style="display: none" id="lblConnTo">Connected to device: </label>
+
+                <div id="files">
+                    <table class="table table-striped" id="fileTable">
+                        <thead class="thead-light">
+                            <tr>
+                                <th width="12%">Flash Address</th>
+                                <th width="30%">File</th>
+                                <th width="8%">Size</th>
+                                <th width="50%">Progress</th>
+                            </tr>
+                        </thead>
+                        <tbody id="tableBody">
+                        </tbody>
+                    </table>
+                    <input class="btn btn-success" type="button" id="programButton" value="Program">
+                </div>
+
+                <output id="list"></output>
+
+            </div>
+            <div id="terminal"></div>
+        </div>
+        <script src="index.82fa246c.js" type="module"></script>
+        <script>var isSafari = /constructor/i.test(window.HTMLElement) || function(p) {
+    return p.toString() === "[object SafariRemoteNotification]";
+}(!window["safari"] || typeof safari !== "undefined" && window["safari"].pushNotification);
+if (isSafari) {
+    document.getElementById("safariErr").style.display = "inline";
+    document.getElementById("main").style.display = "none";
+}
+
+</script>
+    </body>
+</html>
diff --git a/c6-hosted/network_adapter.bin b/c6-hosted/network_adapter.bin
new file mode 100644
index 00000000000..86bd5784e8e
Binary files /dev/null and b/c6-hosted/network_adapter.bin differ
diff --git a/c6-hosted/ota_data_initial.bin b/c6-hosted/ota_data_initial.bin
new file mode 100644
index 00000000000..b4033a70859
--- /dev/null
+++ b/c6-hosted/ota_data_initial.bin
@@ -0,0 +1 @@
+��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
diff --git a/c6-hosted/partition-table.bin b/c6-hosted/partition-table.bin
new file mode 100644
index 00000000000..e5d55905ad6
Binary files /dev/null and b/c6-hosted/partition-table.bin differ
diff --git a/index.md b/index.md
index 72496f2d170..f40315c03cc 100644
--- a/index.md
+++ b/index.md
@@ -1,8 +1,13 @@
-# Arduino core for the ESP32, ESP32-S2, ESP32-S3 and ESP32-C3
+# Arduino core for the ESP32, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 and ESP32-S3.
 
-![Build Status](https://github.com/espressif/arduino-esp32/workflows/ESP32%20Arduino%20CI/badge.svg) [![Documentation Status](https://readthedocs.com/projects/espressif-arduino-esp32/badge/?version=latest)](https://docs.espressif.com/projects/arduino-esp32/en/latest/?badge=latest)
+[![Build Status](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/push.yml?branch=master&event=push&label=Compilation%20Tests)](https://github.com/espressif/arduino-esp32/actions/workflows/push.yml?query=branch%3Amaster+event%3Apush)
+[![Verbose Build Status](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/push.yml?branch=master&event=schedule&label=Compilation%20Tests%20(Verbose))](https://github.com/espressif/arduino-esp32/actions/workflows/push.yml?query=branch%3Amaster+event%3Aschedule)
+[![External Libraries Test](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/lib.yml?branch=master&event=schedule&label=External%20Libraries%20Test)](https://github.com/espressif/arduino-esp32/blob/gh-pages/LIBRARIES_TEST.md)
+[![Runtime Tests](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-tests-results/badge.svg)](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-tests-results/RUNTIME_TESTS_REPORT.md)
 
-### Need help or have a question? Join the chat at [Gitter](https://gitter.im/espressif/arduino-esp32) or [open a new Discussion](https://github.com/espressif/arduino-esp32/discussions)
+### Need help or have a question? Join the chat at [Discord](https://discord.gg/8xY6e9crwv) or [open a new Discussion](https://github.com/espressif/arduino-esp32/discussions)
+
+[![Discord invite](https://img.shields.io/discord/1327272229427216425?logo=discord&logoColor=white&logoSize=auto&label=Discord)](https://discord.gg/8xY6e9crwv)
 
 ## Contents
 
@@ -16,20 +21,38 @@
 
 ### Development Status
 
-Latest Stable Release  [![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Release Date](https://img.shields.io/github/release-date/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Downloads](https://img.shields.io/github/downloads/espressif/arduino-esp32/latest/total.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/)
+#### Latest Stable Release
+
+[![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32.svg)](https://github.com/espressif/arduino-esp32/releases/latest/)
+[![Release Date](https://img.shields.io/github/release-date/espressif/arduino-esp32.svg)](https://github.com/espressif/arduino-esp32/releases/latest/)
+[![Downloads](https://img.shields.io/github/downloads/espressif/arduino-esp32/latest/total.svg)](https://github.com/espressif/arduino-esp32/releases/latest/)
 
-Latest Development Release  [![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32/all.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/) [![Release Date](https://img.shields.io/github/release-date-pre/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/) [![Downloads](https://img.shields.io/github/downloads-pre/espressif/arduino-esp32/latest/total.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/)
+#### Latest Development Release
+
+[![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32/all.svg)](https://github.com/espressif/arduino-esp32/releases/)
+[![Release Date](https://img.shields.io/github/release-date-pre/espressif/arduino-esp32.svg)](https://github.com/espressif/arduino-esp32/releases/)
+[![Downloads](https://img.shields.io/github/downloads-pre/espressif/arduino-esp32/latest/total.svg)](https://github.com/espressif/arduino-esp32/releases/)
 
 ### Development Planning
 
-Our Development is fully tracked on this public **[Roadmap 🎉](https://github.com/orgs/espressif/projects/3)** 
+Our Development is fully tracked on this public **[Roadmap 🎉](https://github.com/orgs/espressif/projects/3)**
 
-For even more information you can take a look at [Sprint Meeting notes](https://github.com/espressif/arduino-esp32/discussions/categories/sprints-meeting-notes) or join [Monthly Community Meetings 🔔](https://github.com/espressif/arduino-esp32/discussions/categories/monthly-community-meetings)
+For even more information you can join our **[Monthly Community Meetings 🔔](https://github.com/espressif/arduino-esp32/discussions/categories/monthly-community-meetings).**
 
 ### Documentation
 
 You can use the [Arduino-ESP32 Online Documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/) to get all information about this project.
 
+---
+
+**Migration guide from version 2.x to 3.x is available [here](https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html).**
+
+---
+
+**APIs compatibility with ESP8266 and Arduino-CORE (Arduino.cc) is explained [here](https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html#apis).**
+
+---
+
 * [Getting Started](https://docs.espressif.com/projects/arduino-esp32/en/latest/getting_started.html)
 * [Installing (Windows, Linux and macOS)](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html)
 * [Libraries](https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html)
@@ -39,7 +62,24 @@ You can use the [Arduino-ESP32 Online Documentation](https://docs.espressif.com/
 
 ### Supported Chips
 
-Visit the [supported chips](https://docs.espressif.com/projects/arduino-esp32/en/latest/getting_started.html#supported-soc-s) documentation to see the list of current supported ESP32 SoCs.
+Here are the ESP32 series supported by the Arduino-ESP32 project:
+
+| **SoC**  | **Stable** | **Development** |                                           **Datasheet**                                           |
+|----------|:----------:|:---------------:|:-------------------------------------------------------------------------------------------------:|
+| ESP32    |     Yes    |       Yes       |    [ESP32](https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf)    |
+| ESP32-C3 |     Yes    |       Yes       | [ESP32-C3](https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf) |
+| ESP32-C6 |     Yes    |       Yes       | [ESP32-C6](https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf) |
+| ESP32-H2 |     Yes    |       Yes       | [ESP32-H2](https://www.espressif.com/sites/default/files/documentation/esp32-h2_datasheet_en.pdf) |
+| ESP32-P4 |     Yes    |       Yes       | [ESP32-P4](https://www.espressif.com/sites/default/files/documentation/esp32-p4_datasheet_en.pdf) |
+| ESP32-S2 |     Yes    |       Yes       | [ESP32-S2](https://www.espressif.com/sites/default/files/documentation/esp32-s2_datasheet_en.pdf) |
+| ESP32-S3 |     Yes    |       Yes       | [ESP32-S3](https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf) |
+
+> [!NOTE]
+> ESP32-C2 is also supported by Arduino-ESP32 but requires using Arduino as an ESP-IDF component or rebuilding the static libraries.
+> For more information, see the [Arduino as an ESP-IDF component documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/esp-idf_component.html) or the
+> [Lib Builder documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/lib_builder.html), respectively.
+
+For more details visit the [supported chips](https://docs.espressif.com/projects/arduino-esp32/en/latest/getting_started.html#supported-soc-s) documentation page.
 
 ### Decoding exceptions
 
@@ -47,10 +87,15 @@ You can use [EspExceptionDecoder](https://github.com/me-no-dev/EspExceptionDecod
 
 ### Issue/Bug report template
 
-Before reporting an issue, make sure you've searched for similar one that was already created. Also make sure to go through all the issues labelled as [Type: For reference](https://github.com/espressif/arduino-esp32/issues?q=is%3Aissue+label%3A%22Type%3A+For+reference%22+).
+Before reporting an issue, make sure you've searched for similar one that was already created. Also make sure to go through all the issues labeled as [Type: For reference](https://github.com/espressif/arduino-esp32/issues?q=is%3Aissue+label%3A%22Type%3A+For+reference%22+).
 
 Finally, if you are sure no one else had the issue, follow the **Issue template** or **Feature request template** while reporting any [new Issue](https://github.com/espressif/arduino-esp32/issues/new/choose).
 
+### External libraries compilation test
+
+We have set-up CI testing for external libraries for ESP32 Arduino core. You can check test results in the file [LIBRARIES_TEST](https://github.com/espressif/arduino-esp32/blob/gh-pages/LIBRARIES_TEST.md).
+For more information and how to add your library to the test see [external library testing](https://docs.espressif.com/projects/arduino-esp32/en/latest/external_libraries_test.html) in the documentation.
+
 ### Contributing
 
 We welcome contributions to the Arduino ESP32 project!
diff --git a/master_cli_compile/cli_compile_0.json b/master_cli_compile/cli_compile_0.json
new file mode 100644
index 00000000000..b5ae9a20d8b
--- /dev/null
+++ b/master_cli_compile/cli_compile_0.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 730063,
+                            "flash_percentage": 55,
+                            "ram_bytes": 33124,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 651863,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27248,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 652121,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27248,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 651793,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27248,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 709037,
+                            "flash_percentage": 54,
+                            "ram_bytes": 28852,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 333141,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21600,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 336187,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21552,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 331695,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21560,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 334913,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21680,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 312727,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21676,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 312785,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21676,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 308131,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21520,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 933174,
+                            "flash_percentage": 71,
+                            "ram_bytes": 50412,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 856922,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 857202,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 856890,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 884898,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47356,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 885726,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47732,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 885486,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47476,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 885426,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47372,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 891002,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47356,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Client",
+                    "sizes": [{
+                            "flash_bytes": 903090,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47404,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 895826,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47452,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 896114,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47540,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Notify",
+                    "sizes": [{
+                            "flash_bytes": 897226,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47372,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Scan",
+                    "sizes": [{
+                            "flash_bytes": 887166,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47356,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Server",
+                    "sizes": [{
+                            "flash_bytes": 893046,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47356,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 896634,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47372,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 895721,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44996,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 826157,
+                            "flash_percentage": 63,
+                            "ram_bytes": 38912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 826457,
+                            "flash_percentage": 63,
+                            "ram_bytes": 38912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 826133,
+                            "flash_percentage": 63,
+                            "ram_bytes": 38912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 873373,
+                            "flash_percentage": 66,
+                            "ram_bytes": 40576,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 277909,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15444,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 280021,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15388,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 276381,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15388,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 279413,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15520,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 262141,
+                            "flash_percentage": 19,
+                            "ram_bytes": 15504,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 262221,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15504,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 258341,
+                            "flash_percentage": 19,
+                            "ram_bytes": 15356,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 264165,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15496,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 276033,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15528,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 1006980,
+                            "flash_percentage": 76,
+                            "ram_bytes": 41768,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 923592,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35016,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 923972,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35016,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 923524,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35016,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 952166,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37552,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 953298,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 953096,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37648,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 952666,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37560,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 960378,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37552,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Client",
+                    "sizes": [{
+                            "flash_bytes": 973374,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37584,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 962542,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37696,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 963086,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37776,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Notify",
+                    "sizes": [{
+                            "flash_bytes": 967828,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37560,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Scan",
+                    "sizes": [{
+                            "flash_bytes": 955090,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37552,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 1015155,
+                            "flash_percentage": 77,
+                            "ram_bytes": 47844,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 931619,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41092,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 932001,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41092,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 931553,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41092,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 1039735,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 1040905,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38680,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 1040701,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38416,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 1040231,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38312,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 1047979,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Client",
+                    "sizes": [{
+                            "flash_bytes": 1060955,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38344,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1052751,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38536,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1053295,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38616,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Notify",
+                    "sizes": [{
+                            "flash_bytes": 1055389,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Scan",
+                    "sizes": [{
+                            "flash_bytes": 1042667,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Server",
+                    "sizes": [{
+                            "flash_bytes": 1050081,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38288,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 1054731,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38304,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 1098383,
+                            "flash_percentage": 34,
+                            "ram_bytes": 37280,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 1099533,
+                            "flash_percentage": 34,
+                            "ram_bytes": 37672,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 1099329,
+                            "flash_percentage": 34,
+                            "ram_bytes": 37408,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 1098899,
+                            "flash_percentage": 34,
+                            "ram_bytes": 37304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 1106603,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37280,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Client",
+                    "sizes": [{
+                            "flash_bytes": 1119607,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37328,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1110591,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37488,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1111143,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37568,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 956146,
+                            "flash_percentage": 72,
+                            "ram_bytes": 50444,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 899762,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 900058,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 899718,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 1098942,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40084,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Client",
+                    "sizes": [{
+                            "flash_bytes": 1110954,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40140,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1101862,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40232,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1101862,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40212,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Notify",
+                    "sizes": [{
+                            "flash_bytes": 1105158,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40108,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Scan",
+                    "sizes": [{
+                            "flash_bytes": 1094914,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40084,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Server",
+                    "sizes": [{
+                            "flash_bytes": 1100846,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40084,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 1104546,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40100,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/UART",
+                    "sizes": [{
+                            "flash_bytes": 1104910,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40100,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/Write",
+                    "sizes": [{
+                            "flash_bytes": 1101282,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40092,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 1107058,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40100,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_1.json b/master_cli_compile/cli_compile_1.json
new file mode 100644
index 00000000000..3689865b14b
--- /dev/null
+++ b/master_cli_compile/cli_compile_1.json
@@ -0,0 +1,805 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 315023,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21668,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 330173,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21696,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 337341,
+                            "flash_percentage": 25,
+                            "ram_bytes": 22036,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 344065,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22040,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 321235,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 356785,
+                            "flash_percentage": 27,
+                            "ram_bytes": 23468,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 323711,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21548,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 333071,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21716,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 348165,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22072,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 335681,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21972,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 322039,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21524,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 322175,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "BLE/examples/UART",
+                    "sizes": [{
+                            "flash_bytes": 896990,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47372,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/Write",
+                    "sizes": [{
+                            "flash_bytes": 893478,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47356,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "BLE/examples/iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 899026,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47372,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 903818,
+                            "flash_percentage": 68,
+                            "ram_bytes": 45924,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 313018,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20424,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 315118,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20368,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 311158,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20384,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 314498,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 297322,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20464,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 297402,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20464,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 293554,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 299170,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20456,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 310978,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20488,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 316758,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 324598,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 303834,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 280329,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15524,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 288513,
+                            "flash_percentage": 22,
+                            "ram_bytes": 15572,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 268777,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 314501,
+                            "flash_percentage": 23,
+                            "ram_bytes": 17416,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 972629,
+                            "flash_percentage": 5,
+                            "ram_bytes": 57616,
+                            "ram_percentage": 17
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 976377,
+                            "flash_percentage": 5,
+                            "ram_bytes": 57652,
+                            "ram_percentage": 17
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 271725,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15396,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 275813,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15420,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 275713,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15420,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 283545,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16060,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 300365,
+                            "flash_percentage": 22,
+                            "ram_bytes": 16128,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 269785,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15372,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 269517,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 268873,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 273977,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15936,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "BLE/examples/Server",
+                    "sizes": [{
+                            "flash_bytes": 962520,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37544,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 967170,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37560,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/UART",
+                    "sizes": [{
+                            "flash_bytes": 967710,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37560,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Write",
+                    "sizes": [{
+                            "flash_bytes": 963074,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37544,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 970128,
+                            "flash_percentage": 30,
+                            "ram_bytes": 37560,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 973732,
+                            "flash_percentage": 74,
+                            "ram_bytes": 36680,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 295264,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11712,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 298332,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11664,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 293808,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11664,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 295912,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11732,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 276232,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11732,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 276288,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11732,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 271872,
+                            "flash_percentage": 20,
+                            "ram_bytes": 11624,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 278166,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11732,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "BLE/examples/UART",
+                    "sizes": [{
+                            "flash_bytes": 1055269,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Write",
+                    "sizes": [{
+                            "flash_bytes": 1050633,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38288,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 1057697,
+                            "flash_percentage": 33,
+                            "ram_bytes": 38304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 982139,
+                            "flash_percentage": 74,
+                            "ram_bytes": 42756,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 253515,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12892,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 256581,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12828,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 252011,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12828,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 254839,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12968,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 233841,
+                            "flash_percentage": 17,
+                            "ram_bytes": 12968,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 233899,
+                            "flash_percentage": 17,
+                            "ram_bytes": 12968,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 229321,
+                            "flash_percentage": 17,
+                            "ram_bytes": 12804,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 236001,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12960,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 250229,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12976,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 257141,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13108,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 262815,
+                            "flash_percentage": 20,
+                            "ram_bytes": 13124,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 241535,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "BLE/examples/Notify",
+                    "sizes": [{
+                            "flash_bytes": 1114061,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Scan",
+                    "sizes": [{
+                            "flash_bytes": 1101315,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37280,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Server",
+                    "sizes": [{
+                            "flash_bytes": 1108753,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37280,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 1113395,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/UART",
+                    "sizes": [{
+                            "flash_bytes": 1113943,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/Write",
+                    "sizes": [{
+                            "flash_bytes": 1109307,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37288,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 1116361,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 295877,
+                            "flash_percentage": 9,
+                            "ram_bytes": 12864,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "BluetoothSerial/examples/DiscoverConnect",
+                    "sizes": [{
+                            "flash_bytes": 1077746,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40796,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/GetLocalMAC",
+                    "sizes": [{
+                            "flash_bytes": 1075922,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40796,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBT",
+                    "sizes": [{
+                            "flash_bytes": 1074606,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40796,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBTM",
+                    "sizes": [{
+                            "flash_bytes": 1075782,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40812,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBT_Legacy",
+                    "sizes": [{
+                            "flash_bytes": 1075438,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40796,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBT_SSP",
+                    "sizes": [{
+                            "flash_bytes": 1077510,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40796,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/bt_classic_device_discovery",
+                    "sizes": [{
+                            "flash_bytes": 1075986,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40780,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/bt_remove_paired_devices",
+                    "sizes": [{
+                            "flash_bytes": 1075910,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40780,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 947746,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46292,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 314650,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20688,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 316906,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20624,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 313146,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20748,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 316590,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20800,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 299342,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20800,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 299422,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20800,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_10.json b/master_cli_compile/cli_compile_10.json
new file mode 100644
index 00000000000..48c8e498f83
--- /dev/null
+++ b/master_cli_compile/cli_compile_10.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "USB/examples/MIDI/ReceiveMidi",
+                    "sizes": [{
+                            "flash_bytes": 363945,
+                            "flash_percentage": 27,
+                            "ram_bytes": 49276,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Mouse/ButtonMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 350915,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49304,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/SystemControl",
+                    "sizes": [{
+                            "flash_bytes": 350429,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49296,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 370805,
+                            "flash_percentage": 28,
+                            "ram_bytes": 57428,
+                            "ram_percentage": 17
+                            }]
+                    },
+{"name": "USB/examples/USBSerial",
+                    "sizes": [{
+                            "flash_bytes": 365073,
+                            "flash_percentage": 27,
+                            "ram_bytes": 49148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "USB/examples/USBVendor",
+                    "sizes": [{
+                            "flash_bytes": 371153,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49308,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 686433,
+                            "flash_percentage": 52,
+                            "ram_bytes": 28856,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 877231,
+                            "flash_percentage": 66,
+                            "ram_bytes": 29680,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 730643,
+                            "flash_percentage": 55,
+                            "ram_bytes": 28932,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 769067,
+                            "flash_percentage": 58,
+                            "ram_bytes": 31604,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 752279,
+                            "flash_percentage": 57,
+                            "ram_bytes": 31444,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 401845,
+                            "flash_percentage": 30,
+                            "ram_bytes": 22404,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "USB/examples/HIDVendor",
+                    "sizes": [{
+                            "flash_bytes": 378454,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40524,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardLogout",
+                    "sizes": [{
+                            "flash_bytes": 364342,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40460,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardMessage",
+                    "sizes": [{
+                            "flash_bytes": 364498,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40460,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardReprogram",
+                    "sizes": [{
+                            "flash_bytes": 364694,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40452,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardSerial",
+                    "sizes": [{
+                            "flash_bytes": 376542,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40460,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/KeyboardAndMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 377306,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40492,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiController",
+                    "sizes": [{
+                            "flash_bytes": 384926,
+                            "flash_percentage": 29,
+                            "ram_bytes": 40716,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiInterface",
+                    "sizes": [{
+                            "flash_bytes": 375362,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40420,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiMusicBox",
+                    "sizes": [{
+                            "flash_bytes": 375482,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40436,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/MIDI/ReceiveMidi",
+                    "sizes": [{
+                            "flash_bytes": 376358,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40420,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Mouse/ButtonMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 363562,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40468,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/SystemControl",
+                    "sizes": [{
+                            "flash_bytes": 363182,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40428,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 379654,
+                            "flash_percentage": 28,
+                            "ram_bytes": 48588,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "USB/examples/USBSerial",
+                    "sizes": [{
+                            "flash_bytes": 374118,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40316,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/USBVendor",
+                    "sizes": [{
+                            "flash_bytes": 378562,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40460,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 900026,
+                            "flash_percentage": 68,
+                            "ram_bytes": 46116,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "USB/examples/Keyboard/KeyboardMessage",
+                    "sizes": [{
+                            "flash_bytes": 304821,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35180,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardReprogram",
+                    "sizes": [{
+                            "flash_bytes": 305009,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35172,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardSerial",
+                    "sizes": [{
+                            "flash_bytes": 312549,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34796,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/KeyboardAndMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 317837,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35204,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiController",
+                    "sizes": [{
+                            "flash_bytes": 325625,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35284,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiInterface",
+                    "sizes": [{
+                            "flash_bytes": 311385,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34756,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiMusicBox",
+                    "sizes": [{
+                            "flash_bytes": 316049,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35148,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/MIDI/ReceiveMidi",
+                    "sizes": [{
+                            "flash_bytes": 312393,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34756,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/Mouse/ButtonMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 303869,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35172,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/SystemControl",
+                    "sizes": [{
+                            "flash_bytes": 303497,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35148,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 315765,
+                            "flash_percentage": 24,
+                            "ram_bytes": 42924,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "USB/examples/USBSerial",
+                    "sizes": [{
+                            "flash_bytes": 310237,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34636,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/USBVendor",
+                    "sizes": [{
+                            "flash_bytes": 319221,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35156,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 862405,
+                            "flash_percentage": 65,
+                            "ram_bytes": 40724,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 928592,
+                            "flash_percentage": 70,
+                            "ram_bytes": 37552,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 307236,
+                            "flash_percentage": 23,
+                            "ram_bytes": 13912,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 294758,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12916,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 294530,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12876,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 294400,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12908,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 967040,
+                            "flash_percentage": 73,
+                            "ram_bytes": 37456,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1059442,
+                            "flash_percentage": 80,
+                            "ram_bytes": 37144,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1011252,
+                            "flash_percentage": 77,
+                            "ram_bytes": 37512,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1047166,
+                            "flash_percentage": 79,
+                            "ram_bytes": 40200,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 1030164,
+                            "flash_percentage": 78,
+                            "ram_bytes": 40088,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 380436,
+                            "flash_percentage": 29,
+                            "ram_bytes": 13460,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1021398,
+                            "flash_percentage": 77,
+                            "ram_bytes": 39848,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 1055124,
+                            "flash_percentage": 80,
+                            "ram_bytes": 39080,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 1022422,
+                            "flash_percentage": 78,
+                            "ram_bytes": 39856,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1029835,
+                            "flash_percentage": 78,
+                            "ram_bytes": 45908,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 1066783,
+                            "flash_percentage": 81,
+                            "ram_bytes": 45340,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 1030837,
+                            "flash_percentage": 78,
+                            "ram_bytes": 45916,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 1028611,
+                            "flash_percentage": 78,
+                            "ram_bytes": 45908,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 1048683,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48236,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 1049367,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48372,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 1048681,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48260,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 1048733,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48220,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 1057997,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48236,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 1058539,
+                            "flash_percentage": 80,
+                            "ram_bytes": 48252,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/Middleware",
+                    "sizes": [{
+                            "flash_bytes": 1000487,
+                            "flash_percentage": 76,
+                            "ram_bytes": 42836,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 1031607,
+                            "flash_percentage": 78,
+                            "ram_bytes": 45572,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1298093,
+                            "flash_percentage": 41,
+                            "ram_bytes": 50332,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1086751,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46204,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 979133,
+                            "flash_percentage": 74,
+                            "ram_bytes": 42660,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1333207,
+                            "flash_percentage": 42,
+                            "ram_bytes": 49060,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "OpenThread/examples/onReceive",
+                    "sizes": [{
+                            "flash_bytes": 1099501,
+                            "flash_percentage": 83,
+                            "ram_bytes": 45736,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 553937,
+                            "flash_percentage": 42,
+                            "ram_bytes": 18700,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 293471,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12784,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 293213,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12792,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 375509,
+                            "flash_percentage": 28,
+                            "ram_bytes": 14780,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 298311,
+                            "flash_percentage": 22,
+                            "ram_bytes": 14084,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 326987,
+                            "flash_percentage": 24,
+                            "ram_bytes": 13304,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 1075245,
+                            "flash_percentage": 82,
+                            "ram_bytes": 37320,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 1067482,
+                            "flash_percentage": 81,
+                            "ram_bytes": 39764,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 327778,
+                            "flash_percentage": 25,
+                            "ram_bytes": 22928,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 296902,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20664,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 296706,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20624,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 296646,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20664,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 922802,
+                            "flash_percentage": 70,
+                            "ram_bytes": 46132,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1022070,
+                            "flash_percentage": 77,
+                            "ram_bytes": 46716,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 966242,
+                            "flash_percentage": 73,
+                            "ram_bytes": 47548,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 995394,
+                            "flash_percentage": 75,
+                            "ram_bytes": 48860,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 981886,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48880,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 374134,
+                            "flash_percentage": 28,
+                            "ram_bytes": 21388,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 975810,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48632,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 1019438,
+                            "flash_percentage": 77,
+                            "ram_bytes": 48692,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 976050,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48524,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 974250,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48524,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_11.json b/master_cli_compile/cli_compile_11.json
new file mode 100644
index 00000000000..4fee1337355
--- /dev/null
+++ b/master_cli_compile/cli_compile_11.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 737511,
+                            "flash_percentage": 56,
+                            "ram_bytes": 31120,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 792473,
+                            "flash_percentage": 60,
+                            "ram_bytes": 31616,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 738525,
+                            "flash_percentage": 56,
+                            "ram_bytes": 31120,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 736301,
+                            "flash_percentage": 56,
+                            "ram_bytes": 31120,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 763581,
+                            "flash_percentage": 58,
+                            "ram_bytes": 33572,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 764201,
+                            "flash_percentage": 58,
+                            "ram_bytes": 33652,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 763535,
+                            "flash_percentage": 58,
+                            "ram_bytes": 33556,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 763559,
+                            "flash_percentage": 58,
+                            "ram_bytes": 33492,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 772879,
+                            "flash_percentage": 58,
+                            "ram_bytes": 33556,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 773369,
+                            "flash_percentage": 59,
+                            "ram_bytes": 33524,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 739275,
+                            "flash_percentage": 56,
+                            "ram_bytes": 30760,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1029479,
+                            "flash_percentage": 32,
+                            "ram_bytes": 36472,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 980394,
+                            "flash_percentage": 74,
+                            "ram_bytes": 46380,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 943866,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46204,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 972278,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48828,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 958566,
+                            "flash_percentage": 73,
+                            "ram_bytes": 48732,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 398386,
+                            "flash_percentage": 30,
+                            "ram_bytes": 21644,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 951470,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48532,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 975946,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48524,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 952034,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48532,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 950266,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48532,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 968830,
+                            "flash_percentage": 73,
+                            "ram_bytes": 50796,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 969430,
+                            "flash_percentage": 73,
+                            "ram_bytes": 50940,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 968882,
+                            "flash_percentage": 73,
+                            "ram_bytes": 50828,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 968878,
+                            "flash_percentage": 73,
+                            "ram_bytes": 50780,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 975998,
+                            "flash_percentage": 74,
+                            "ram_bytes": 50796,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 976574,
+                            "flash_percentage": 74,
+                            "ram_bytes": 50812,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/Middleware",
+                    "sizes": [{
+                            "flash_bytes": 918466,
+                            "flash_percentage": 70,
+                            "ram_bytes": 46012,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 950113,
+                            "flash_percentage": 72,
+                            "ram_bytes": 41016,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 906217,
+                            "flash_percentage": 69,
+                            "ram_bytes": 40804,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 935485,
+                            "flash_percentage": 71,
+                            "ram_bytes": 43428,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 921737,
+                            "flash_percentage": 70,
+                            "ram_bytes": 43316,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 355453,
+                            "flash_percentage": 27,
+                            "ram_bytes": 16624,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 914937,
+                            "flash_percentage": 69,
+                            "ram_bytes": 43124,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 942913,
+                            "flash_percentage": 71,
+                            "ram_bytes": 43008,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/Filters",
+                    "sizes": [{
+                            "flash_bytes": 915157,
+                            "flash_percentage": 69,
+                            "ram_bytes": 43124,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 913429,
+                            "flash_percentage": 69,
+                            "ram_bytes": 43124,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 932093,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45396,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 932681,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45524,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 932113,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45412,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 932141,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45380,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 939541,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45396,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 1020180,
+                            "flash_percentage": 77,
+                            "ram_bytes": 39848,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 1040560,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42160,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 1041238,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42296,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 1040602,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42184,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 1040620,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42144,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 1049890,
+                            "flash_percentage": 80,
+                            "ram_bytes": 42160,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 1050424,
+                            "flash_percentage": 80,
+                            "ram_bytes": 42176,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/Middleware",
+                    "sizes": [{
+                            "flash_bytes": 992050,
+                            "flash_percentage": 75,
+                            "ram_bytes": 36760,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 1023152,
+                            "flash_percentage": 78,
+                            "ram_bytes": 39496,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1292864,
+                            "flash_percentage": 41,
+                            "ram_bytes": 44256,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1088746,
+                            "flash_percentage": 83,
+                            "ram_bytes": 40128,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 970716,
+                            "flash_percentage": 74,
+                            "ram_bytes": 36584,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1328058,
+                            "flash_percentage": 42,
+                            "ram_bytes": 42984,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 1080452,
+                            "flash_percentage": 82,
+                            "ram_bytes": 37048,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 1078445,
+                            "flash_percentage": 82,
+                            "ram_bytes": 43124,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 1033245,
+                            "flash_percentage": 78,
+                            "ram_bytes": 46140,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 928683,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41044,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 926339,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41036,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 968509,
+                            "flash_percentage": 73,
+                            "ram_bytes": 43260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 950941,
+                            "flash_percentage": 72,
+                            "ram_bytes": 41084,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 969137,
+                            "flash_percentage": 73,
+                            "ram_bytes": 43260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1166989,
+                            "flash_percentage": 89,
+                            "ram_bytes": 42048,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 945703,
+                            "flash_percentage": 72,
+                            "ram_bytes": 42356,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 947521,
+                            "flash_percentage": 72,
+                            "ram_bytes": 42348,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 930029,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41052,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1050039,
+                            "flash_percentage": 80,
+                            "ram_bytes": 42972,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 930087,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41036,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 945743,
+                            "flash_percentage": 72,
+                            "ram_bytes": 42444,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 929207,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41148,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 943523,
+                            "flash_percentage": 71,
+                            "ram_bytes": 42716,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 308971,
+                            "flash_percentage": 23,
+                            "ram_bytes": 15096,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 295117,
+                            "flash_percentage": 22,
+                            "ram_bytes": 14076,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 294909,
+                            "flash_percentage": 22,
+                            "ram_bytes": 14052,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 294781,
+                            "flash_percentage": 22,
+                            "ram_bytes": 14076,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 381263,
+                            "flash_percentage": 29,
+                            "ram_bytes": 14636,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 312487,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14140,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 312239,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14132,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 312481,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14140,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 992094,
+                            "flash_percentage": 75,
+                            "ram_bytes": 50820,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallback",
+                    "sizes": [{
+                            "flash_bytes": 992678,
+                            "flash_percentage": 75,
+                            "ram_bytes": 50964,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAuthCallbackInline",
+                    "sizes": [{
+                            "flash_bytes": 992126,
+                            "flash_percentage": 75,
+                            "ram_bytes": 50852,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 992146,
+                            "flash_percentage": 75,
+                            "ram_bytes": 50804,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1",
+                    "sizes": [{
+                            "flash_bytes": 999398,
+                            "flash_percentage": 76,
+                            "ram_bytes": 50820,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 999962,
+                            "flash_percentage": 76,
+                            "ram_bytes": 50844,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/Middleware",
+                    "sizes": [{
+                            "flash_bytes": 962642,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46364,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 976950,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48172,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1258454,
+                            "flash_percentage": 40,
+                            "ram_bytes": 54872,
+                            "ram_percentage": 16
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1035002,
+                            "flash_percentage": 78,
+                            "ram_bytes": 49128,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 944946,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46196,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1274810,
+                            "flash_percentage": 40,
+                            "ram_bytes": 52816,
+                            "ram_percentage": 16
+                            }]
+                    },
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 1040182,
+                            "flash_percentage": 79,
+                            "ram_bytes": 46928,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 977278,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48732,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 895454,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44596,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_12.json b/master_cli_compile/cli_compile_12.json
new file mode 100644
index 00000000000..7dfa8f3ff86
--- /dev/null
+++ b/master_cli_compile/cli_compile_12.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 805115,
+                            "flash_percentage": 61,
+                            "ram_bytes": 31464,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 707187,
+                            "flash_percentage": 53,
+                            "ram_bytes": 28828,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1044485,
+                            "flash_percentage": 33,
+                            "ram_bytes": 34296,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 817061,
+                            "flash_percentage": 62,
+                            "ram_bytes": 29236,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 748063,
+                            "flash_percentage": 57,
+                            "ram_bytes": 31428,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 647625,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27208,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 645941,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27208,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 676189,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28508,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 676005,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28508,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 672533,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28508,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 674595,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28500,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 647535,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27216,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 952954,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48180,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1213410,
+                            "flash_percentage": 38,
+                            "ram_bytes": 53332,
+                            "ram_percentage": 16
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1011542,
+                            "flash_percentage": 77,
+                            "ram_bytes": 48836,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 901194,
+                            "flash_percentage": 68,
+                            "ram_bytes": 45836,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1250842,
+                            "flash_percentage": 39,
+                            "ram_bytes": 51524,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 995414,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46300,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 954374,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 854006,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44220,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 851842,
+                            "flash_percentage": 64,
+                            "ram_bytes": 44220,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 893494,
+                            "flash_percentage": 68,
+                            "ram_bytes": 45868,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 873210,
+                            "flash_percentage": 66,
+                            "ram_bytes": 44284,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 893882,
+                            "flash_percentage": 68,
+                            "ram_bytes": 45868,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 953842,
+                            "flash_percentage": 72,
+                            "ram_bytes": 45552,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 867010,
+                            "flash_percentage": 66,
+                            "ram_bytes": 45540,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 868270,
+                            "flash_percentage": 66,
+                            "ram_bytes": 45516,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 855238,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44252,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WebServer/examples/HttpBasicAuthSHA1orBearerToken",
+                    "sizes": [{
+                            "flash_bytes": 940101,
+                            "flash_percentage": 71,
+                            "ram_bytes": 45412,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/Middleware",
+                    "sizes": [{
+                            "flash_bytes": 888129,
+                            "flash_percentage": 67,
+                            "ram_bytes": 40664,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 916041,
+                            "flash_percentage": 69,
+                            "ram_bytes": 42772,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1182005,
+                            "flash_percentage": 37,
+                            "ram_bytes": 47976,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 973757,
+                            "flash_percentage": 74,
+                            "ram_bytes": 43428,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 870769,
+                            "flash_percentage": 66,
+                            "ram_bytes": 40488,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1213029,
+                            "flash_percentage": 38,
+                            "ram_bytes": 46108,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/WebServer",
+                    "sizes": [{
+                            "flash_bytes": 964341,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40960,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 917313,
+                            "flash_percentage": 69,
+                            "ram_bytes": 43308,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 823205,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38872,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 821033,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38872,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 855813,
+                            "flash_percentage": 65,
+                            "ram_bytes": 40468,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 842373,
+                            "flash_percentage": 64,
+                            "ram_bytes": 38928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 856225,
+                            "flash_percentage": 65,
+                            "ram_bytes": 40468,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 1025132,
+                            "flash_percentage": 78,
+                            "ram_bytes": 40064,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 920650,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34984,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 918316,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34976,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 960022,
+                            "flash_percentage": 73,
+                            "ram_bytes": 37184,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 942434,
+                            "flash_percentage": 71,
+                            "ram_bytes": 35024,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 960644,
+                            "flash_percentage": 73,
+                            "ram_bytes": 37184,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1032448,
+                            "flash_percentage": 78,
+                            "ram_bytes": 36296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 937228,
+                            "flash_percentage": 71,
+                            "ram_bytes": 36296,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 939052,
+                            "flash_percentage": 71,
+                            "ram_bytes": 36272,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 921676,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34984,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1041272,
+                            "flash_percentage": 79,
+                            "ram_bytes": 36912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 922058,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34976,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 937274,
+                            "flash_percentage": 71,
+                            "ram_bytes": 36368,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 921178,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35088,
+                            "ram_percentage": 10
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 929521,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41092,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 1070491,
+                            "flash_percentage": 81,
+                            "ram_bytes": 43004,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 927727,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41044,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 928089,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41044,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 931077,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41052,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 927817,
+                            "flash_percentage": 70,
+                            "ram_bytes": 41044,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 966947,
+                            "flash_percentage": 73,
+                            "ram_bytes": 41364,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 952341,
+                            "flash_percentage": 72,
+                            "ram_bytes": 42452,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 939615,
+                            "flash_percentage": 71,
+                            "ram_bytes": 42716,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1737465,
+                            "flash_percentage": 55,
+                            "ram_bytes": 62520,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 270995,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14080,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 270735,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14072,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 270989,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14080,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Analog_Input_Output",
+                    "sizes": [{
+                            "flash_bytes": 569183,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29284,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_CarbonDioxide_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 564191,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29004,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmable_Light",
+                    "sizes": [{
+                            "flash_bytes": 607511,
+                            "flash_percentage": 46,
+                            "ram_bytes": 30208,
+                            "ram_percentage": 9
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Analog_Input_Output",
+                    "sizes": [{
+                            "flash_bytes": 583447,
+                            "flash_percentage": 44,
+                            "ram_bytes": 28224,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_CarbonDioxide_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 578713,
+                            "flash_percentage": 44,
+                            "ram_bytes": 28000,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmable_Light",
+                    "sizes": [{
+                            "flash_bytes": 621751,
+                            "flash_percentage": 47,
+                            "ram_bytes": 29192,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 712521,
+                            "flash_percentage": 54,
+                            "ram_bytes": 31496,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Contact_Switch",
+                    "sizes": [{
+                            "flash_bytes": 574943,
+                            "flash_percentage": 43,
+                            "ram_bytes": 28016,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Dimmable_Light",
+                    "sizes": [{
+                            "flash_bytes": 600947,
+                            "flash_percentage": 45,
+                            "ram_bytes": 29176,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Illuminance_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 595623,
+                            "flash_percentage": 45,
+                            "ram_bytes": 28240,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_OTA_Client",
+                    "sizes": [{
+                            "flash_bytes": 615137,
+                            "flash_percentage": 46,
+                            "ram_bytes": 29240,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 894566,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44572,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 916374,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45876,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 916794,
+                            "flash_percentage": 69,
+                            "ram_bytes": 44644,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 916794,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45876,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1037614,
+                            "flash_percentage": 79,
+                            "ram_bytes": 48792,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 910222,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45900,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 911590,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45876,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 898702,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44580,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1007182,
+                            "flash_percentage": 76,
+                            "ram_bytes": 46516,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 897406,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44572,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 910358,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45988,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 896730,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44684,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 907994,
+                            "flash_percentage": 69,
+                            "ram_bytes": 46268,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 896978,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 1035062,
+                            "flash_percentage": 78,
+                            "ram_bytes": 47892,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_13.json b/master_cli_compile/cli_compile_13.json
new file mode 100644
index 00000000000..c2db11322fc
--- /dev/null
+++ b/master_cli_compile/cli_compile_13.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 650533,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27208,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 672591,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28604,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 649589,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27260,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 670353,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28828,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 650199,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27248,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 888801,
+                            "flash_percentage": 67,
+                            "ram_bytes": 29428,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 647499,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27216,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 647857,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27216,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 646913,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27216,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 647591,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27216,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 680589,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28596,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 666497,
+                            "flash_percentage": 50,
+                            "ram_bytes": 28876,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 961786,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 854638,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44220,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 867082,
+                            "flash_percentage": 66,
+                            "ram_bytes": 45612,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 853914,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44316,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 864754,
+                            "flash_percentage": 65,
+                            "ram_bytes": 45892,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 854178,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 990602,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 852714,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44228,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 852966,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44228,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 855950,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44268,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 852810,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44228,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 886890,
+                            "flash_percentage": 67,
+                            "ram_bytes": 44548,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 873262,
+                            "flash_percentage": 66,
+                            "ram_bytes": 45612,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 862050,
+                            "flash_percentage": 65,
+                            "ram_bytes": 45892,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1465458,
+                            "flash_percentage": 46,
+                            "ram_bytes": 66028,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 330050,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21712,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 836337,
+                            "flash_percentage": 63,
+                            "ram_bytes": 40176,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 837637,
+                            "flash_percentage": 63,
+                            "ram_bytes": 40168,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 824581,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38920,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 932465,
+                            "flash_percentage": 71,
+                            "ram_bytes": 40808,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 823833,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38872,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 836481,
+                            "flash_percentage": 63,
+                            "ram_bytes": 40264,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiExtender",
+                    "sizes": [{
+                            "flash_bytes": 823137,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38968,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 834149,
+                            "flash_percentage": 63,
+                            "ram_bytes": 40544,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 823421,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38912,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 960737,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40832,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 821953,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38880,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 822205,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38880,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 825277,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38904,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 822049,
+                            "flash_percentage": 62,
+                            "ram_bytes": 38880,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 935238,
+                            "flash_percentage": 71,
+                            "ram_bytes": 36656,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 921500,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35016,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMultiAdvanced",
+                    "sizes": [{
+                            "flash_bytes": 1070990,
+                            "flash_percentage": 81,
+                            "ram_bytes": 36928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 919696,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34984,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 920050,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34984,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 922726,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34992,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 919784,
+                            "flash_percentage": 70,
+                            "ram_bytes": 34984,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 958812,
+                            "flash_percentage": 73,
+                            "ram_bytes": 35304,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 943898,
+                            "flash_percentage": 72,
+                            "ram_bytes": 36376,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 931330,
+                            "flash_percentage": 71,
+                            "ram_bytes": 36640,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1629752,
+                            "flash_percentage": 51,
+                            "ram_bytes": 56792,
+                            "ram_percentage": 17
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 311004,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12284,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 310754,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12284,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 311004,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12284,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 698139,
+                            "flash_percentage": 53,
+                            "ram_bytes": 32508,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Contact_Switch",
+                    "sizes": [{
+                            "flash_bytes": 560655,
+                            "flash_percentage": 42,
+                            "ram_bytes": 29012,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Dimmable_Light",
+                    "sizes": [{
+                            "flash_bytes": 586673,
+                            "flash_percentage": 44,
+                            "ram_bytes": 30176,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Illuminance_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 581719,
+                            "flash_percentage": 44,
+                            "ram_bytes": 29292,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_OTA_Client",
+                    "sizes": [{
+                            "flash_bytes": 600813,
+                            "flash_percentage": 45,
+                            "ram_bytes": 30248,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Occupancy_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 559739,
+                            "flash_percentage": 42,
+                            "ram_bytes": 28988,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Light",
+                    "sizes": [{
+                            "flash_bytes": 586071,
+                            "flash_percentage": 44,
+                            "ram_bytes": 30160,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 687539,
+                            "flash_percentage": 52,
+                            "ram_bytes": 33084,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_PM25_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 564167,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29004,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Pressure_Flow_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 566407,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29068,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 693119,
+                            "flash_percentage": 52,
+                            "ram_bytes": 33384,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Scan_Networks",
+                    "sizes": [{
+                            "flash_bytes": 521989,
+                            "flash_percentage": 39,
+                            "ram_bytes": 28204,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy",
+                    "sizes": [{
+                            "flash_bytes": 575919,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29228,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Temperature_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 576481,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29180,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 685711,
+                            "flash_percentage": 52,
+                            "ram_bytes": 32700,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Vibration_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 560557,
+                            "flash_percentage": 42,
+                            "ram_bytes": 29012,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Occupancy_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 574029,
+                            "flash_percentage": 43,
+                            "ram_bytes": 27976,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Light",
+                    "sizes": [{
+                            "flash_bytes": 600341,
+                            "flash_percentage": 45,
+                            "ram_bytes": 29160,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 701737,
+                            "flash_percentage": 53,
+                            "ram_bytes": 32032,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_PM25_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 578689,
+                            "flash_percentage": 44,
+                            "ram_bytes": 28000,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Pressure_Flow_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 580923,
+                            "flash_percentage": 44,
+                            "ram_bytes": 28080,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 707515,
+                            "flash_percentage": 53,
+                            "ram_bytes": 32360,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Scan_Networks",
+                    "sizes": [{
+                            "flash_bytes": 536009,
+                            "flash_percentage": 40,
+                            "ram_bytes": 27192,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy",
+                    "sizes": [{
+                            "flash_bytes": 589959,
+                            "flash_percentage": 45,
+                            "ram_bytes": 28160,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 895506,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44580,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanAsync",
+                    "sizes": [{
+                            "flash_bytes": 895738,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44580,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 899514,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44580,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanTime",
+                    "sizes": [{
+                            "flash_bytes": 895602,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44580,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 931962,
+                            "flash_percentage": 71,
+                            "ram_bytes": 44900,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 916826,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45988,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 905186,
+                            "flash_percentage": 69,
+                            "ram_bytes": 46260,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1701018,
+                            "flash_percentage": 54,
+                            "ram_bytes": 59012,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 330990,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21952,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 330746,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21944,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 331254,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21952,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 659110,
+                            "flash_percentage": 50,
+                            "ram_bytes": 36608,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Gateway",
+                    "sizes": [{
+                            "flash_bytes": 1254978,
+                            "flash_percentage": 36,
+                            "ram_bytes": 63264,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 652274,
+                            "flash_percentage": 49,
+                            "ram_bytes": 37304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 640134,
+                            "flash_percentage": 48,
+                            "ram_bytes": 36544,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_14.json b/master_cli_compile/cli_compile_14.json
new file mode 100644
index 00000000000..8c9a569b6d1
--- /dev/null
+++ b/master_cli_compile/cli_compile_14.json
@@ -0,0 +1,317 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 352667,
+                            "flash_percentage": 26,
+                            "ram_bytes": 23412,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 352447,
+                            "flash_percentage": 26,
+                            "ram_bytes": 23404,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 352691,
+                            "flash_percentage": 26,
+                            "ram_bytes": 23412,
+                            "ram_percentage": 7
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 329814,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21712,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 329998,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21712,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 654586,
+                            "flash_percentage": 49,
+                            "ram_bytes": 36712,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Gateway",
+                    "sizes": [{
+                            "flash_bytes": 1210006,
+                            "flash_percentage": 35,
+                            "ram_bytes": 61612,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 647890,
+                            "flash_percentage": 49,
+                            "ram_bytes": 37512,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 658958,
+                            "flash_percentage": 50,
+                            "ram_bytes": 36964,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 656330,
+                            "flash_percentage": 50,
+                            "ram_bytes": 36904,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 855793,
+                            "flash_percentage": 65,
+                            "ram_bytes": 39176,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 842489,
+                            "flash_percentage": 64,
+                            "ram_bytes": 40264,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 831401,
+                            "flash_percentage": 63,
+                            "ram_bytes": 40544,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 955017,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38944,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 293105,
+                            "flash_percentage": 22,
+                            "ram_bytes": 16740,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 292873,
+                            "flash_percentage": 22,
+                            "ram_bytes": 16732,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 293065,
+                            "flash_percentage": 22,
+                            "ram_bytes": 16740,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 621949,
+                            "flash_percentage": 47,
+                            "ram_bytes": 31732,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Gateway",
+                    "sizes": [{
+                            "flash_bytes": 1180593,
+                            "flash_percentage": 34,
+                            "ram_bytes": 56272,
+                            "ram_percentage": 17
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 615093,
+                            "flash_percentage": 46,
+                            "ram_bytes": 32508,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 619665,
+                            "flash_percentage": 47,
+                            "ram_bytes": 31928,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 623237,
+                            "flash_percentage": 47,
+                            "ram_bytes": 31916,
+                            "ram_percentage": 9
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Color_Dimmer_Switch",
+                    "sizes": [{
+                            "flash_bytes": 680426,
+                            "flash_percentage": 51,
+                            "ram_bytes": 27932,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Gateway",
+                    "sizes": [{
+                            "flash_bytes": 1317340,
+                            "flash_percentage": 38,
+                            "ram_bytes": 52360,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_On_Off_Switch",
+                    "sizes": [{
+                            "flash_bytes": 670248,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28396,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Range_Extender",
+                    "sizes": [{
+                            "flash_bytes": 675928,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28804,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 678416,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28132,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Wind_Speed_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 564113,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29004,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Window_Covering",
+                    "sizes": [{
+                            "flash_bytes": 570757,
+                            "flash_percentage": 43,
+                            "ram_bytes": 29268,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Temperature_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 601285,
+                            "flash_percentage": 45,
+                            "ram_bytes": 28192,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 710479,
+                            "flash_percentage": 54,
+                            "ram_bytes": 31688,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Vibration_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 574847,
+                            "flash_percentage": 43,
+                            "ram_bytes": 28016,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Wind_Speed_Sensor",
+                    "sizes": [{
+                            "flash_bytes": 578631,
+                            "flash_percentage": 44,
+                            "ram_bytes": 27984,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Zigbee/examples/Zigbee_Window_Covering",
+                    "sizes": [{
+                            "flash_bytes": 585025,
+                            "flash_percentage": 44,
+                            "ram_bytes": 28264,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "Zigbee/examples/Zigbee_Thermostat",
+                    "sizes": [{
+                            "flash_bytes": 660642,
+                            "flash_percentage": 50,
+                            "ram_bytes": 37060,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_2.json b/master_cli_compile/cli_compile_2.json
new file mode 100644
index 00000000000..0b027924483
--- /dev/null
+++ b/master_cli_compile/cli_compile_2.json
@@ -0,0 +1,821 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 321513,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 303683,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 329089,
+                            "flash_percentage": 25,
+                            "ram_bytes": 22204,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 327301,
+                            "flash_percentage": 24,
+                            "ram_bytes": 22212,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 328173,
+                            "flash_percentage": 25,
+                            "ram_bytes": 22212,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 303683,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 325197,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21580,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 324965,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21668,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 349541,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22788,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 351221,
+                            "flash_percentage": 26,
+                            "ram_bytes": 24212,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 350147,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22660,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 348085,
+                            "flash_percentage": 26,
+                            "ram_bytes": 25252,
+                            "ram_percentage": 7
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 358870,
+                            "flash_percentage": 27,
+                            "ram_bytes": 22436,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 997710,
+                            "flash_percentage": 5,
+                            "ram_bytes": 62512,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1000434,
+                            "flash_percentage": 5,
+                            "ram_bytes": 62640,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1002642,
+                            "flash_percentage": 5,
+                            "ram_bytes": 62956,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 306850,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20368,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 312262,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20448,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 312118,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20448,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 320242,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21064,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 342358,
+                            "flash_percentage": 26,
+                            "ram_bytes": 21316,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 304510,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 304594,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 304022,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 316154,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20980,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 311806,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21320,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 310426,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21312,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 311086,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21312,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 334666,
+                            "flash_percentage": 10,
+                            "ram_bytes": 20692,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 307566,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20440,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 276629,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16316,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 275269,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16308,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 275901,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16316,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 272573,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15436,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 271749,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15464,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 287169,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16752,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 288429,
+                            "flash_percentage": 22,
+                            "ram_bytes": 17984,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 287601,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16536,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 286205,
+                            "flash_percentage": 21,
+                            "ram_bytes": 19008,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 286969,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15944,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 286641,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16000,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 288593,
+                            "flash_percentage": 22,
+                            "ram_bytes": 16048,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 275857,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15412,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 268949,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 291628,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11748,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 297638,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11816,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 304250,
+                            "flash_percentage": 23,
+                            "ram_bytes": 11824,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 283340,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 335814,
+                            "flash_percentage": 25,
+                            "ram_bytes": 13572,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 285838,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11648,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 290640,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11764,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 317548,
+                            "flash_percentage": 24,
+                            "ram_bytes": 13044,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 284172,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11632,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 284300,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11616,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 283556,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11616,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 290768,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12844,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 291114,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12204,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 289562,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12212,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 295377,
+                            "flash_percentage": 22,
+                            "ram_bytes": 15368,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 244327,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12836,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 251223,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13028,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 276181,
+                            "flash_percentage": 21,
+                            "ram_bytes": 14320,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 242245,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12804,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 242505,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 241751,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 247541,
+                            "flash_percentage": 18,
+                            "ram_bytes": 14024,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 250047,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13504,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 248319,
+                            "flash_percentage": 18,
+                            "ram_bytes": 13496,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 249145,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13496,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 275517,
+                            "flash_percentage": 21,
+                            "ram_bytes": 14168,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 245879,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12948,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 245069,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12928,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 263221,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14652,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 264889,
+                            "flash_percentage": 20,
+                            "ram_bytes": 16076,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 298913,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12816,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 294419,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12824,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCFade",
+                    "sizes": [{
+                            "flash_bytes": 297147,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12948,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSingleChannel",
+                    "sizes": [{
+                            "flash_bytes": 276781,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12948,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 276839,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12948,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 272327,
+                            "flash_percentage": 20,
+                            "ram_bytes": 12784,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 279019,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12932,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 292529,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12956,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 294902,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20592,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 301254,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20792,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 313366,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20816,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 314462,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20688,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 321174,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20736,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 305378,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 335806,
+                            "flash_percentage": 25,
+                            "ram_bytes": 22040,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1039450,
+                            "flash_percentage": 6,
+                            "ram_bytes": 63292,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1051734,
+                            "flash_percentage": 6,
+                            "ram_bytes": 63376,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 309246,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 311910,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20632,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/SmoothBlink_ULP_Code",
+                    "sizes": [{
+                            "flash_bytes": 314618,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 311438,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20632,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 319798,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20808,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 316126,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20696,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 306406,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20724,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_3.json b/master_cli_compile/cli_compile_3.json
new file mode 100644
index 00000000000..b651d8e339e
--- /dev/null
+++ b/master_cli_compile/cli_compile_3.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 349015,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22164,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 348613,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22236,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 350885,
+                            "flash_percentage": 26,
+                            "ram_bytes": 22292,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 332919,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21708,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 321911,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 321413,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 324739,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21540,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 323235,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21516,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 322193,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 322645,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 322487,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 322219,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21524,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 307430,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 329650,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21596,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 330950,
+                            "flash_percentage": 25,
+                            "ram_bytes": 23020,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 330110,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21468,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 328338,
+                            "flash_percentage": 25,
+                            "ram_bytes": 24068,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 329110,
+                            "flash_percentage": 25,
+                            "ram_bytes": 20980,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 328762,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21052,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 330714,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21100,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 312266,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20448,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 303994,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20336,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 303870,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 306738,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20384,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 305466,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 304542,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 304802,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 304638,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 268825,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 271677,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15388,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 270413,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15356,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 269489,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 269741,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 269653,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15364,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 269409,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15380,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 270473,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 269797,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15364,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 273781,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15364,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 274181,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15372,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 254981,
+                            "flash_percentage": 19,
+                            "ram_bytes": 15340,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 847625,
+                            "flash_percentage": 64,
+                            "ram_bytes": 40304,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 279013,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15764,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 290200,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12220,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 317368,
+                            "flash_percentage": 24,
+                            "ram_bytes": 12980,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 287384,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11704,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 286940,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11756,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 305410,
+                            "flash_percentage": 23,
+                            "ram_bytes": 13472,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 307074,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14896,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 305998,
+                            "flash_percentage": 23,
+                            "ram_bytes": 13344,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 304488,
+                            "flash_percentage": 23,
+                            "ram_bytes": 15936,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 305410,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12840,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 305016,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12920,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 307278,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12976,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 290714,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11764,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 283584,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 283538,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 263819,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14508,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 262269,
+                            "flash_percentage": 20,
+                            "ram_bytes": 17124,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 263219,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14028,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 262823,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14100,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 265073,
+                            "flash_percentage": 20,
+                            "ram_bytes": 14156,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 251065,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13028,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 241799,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 241741,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 245039,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12820,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 243531,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12796,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 242479,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 242941,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 242781,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12796,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 242567,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12804,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 243267,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 242897,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12804,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 298047,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13056,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogReadContinuous",
+                    "sizes": [{
+                            "flash_bytes": 303681,
+                            "flash_percentage": 23,
+                            "ram_bytes": 13056,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 283911,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 336885,
+                            "flash_percentage": 25,
+                            "ram_bytes": 15420,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 285369,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12816,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 317415,
+                            "flash_percentage": 24,
+                            "ram_bytes": 14268,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 284763,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12784,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 284879,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 306122,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20592,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 305554,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20592,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 291438,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 312566,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21112,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 311194,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21104,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 311842,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21104,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 309854,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20720,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 308346,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20712,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 322958,
+                            "flash_percentage": 24,
+                            "ram_bytes": 22272,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 324310,
+                            "flash_percentage": 24,
+                            "ram_bytes": 23504,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 323434,
+                            "flash_percentage": 24,
+                            "ram_bytes": 22080,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 322102,
+                            "flash_percentage": 24,
+                            "ram_bytes": 24552,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 322858,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21464,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 322534,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21536,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 324490,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21584,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_4.json b/master_cli_compile/cli_compile_4.json
new file mode 100644
index 00000000000..201d120c148
--- /dev/null
+++ b/master_cli_compile/cli_compile_4.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 322987,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 322569,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21524,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 327019,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21524,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 327449,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21532,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 303683,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 674663,
+                            "flash_percentage": 51,
+                            "ram_bytes": 28584,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 331559,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21556,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 331279,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21532,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 333539,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21856,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 337331,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21880,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 323469,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 323733,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 304466,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20360,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 305230,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 304774,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20360,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 308838,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 309122,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 290126,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20336,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 879182,
+                            "flash_percentage": 67,
+                            "ram_bytes": 45652,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 313930,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20736,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 313722,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20728,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 311026,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20960,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 312090,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20960,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 305630,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 305950,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 310798,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20344,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 385570,
+                            "flash_percentage": 29,
+                            "ram_bytes": 22388,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Record_to_WAV",
+                    "sizes": [{
+                            "flash_bytes": 412482,
+                            "flash_percentage": 31,
+                            "ram_bytes": 20872,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 278817,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15748,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 275725,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15996,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 276717,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15988,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 270581,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 270901,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 275741,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15348,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 332477,
+                            "flash_percentage": 25,
+                            "ram_bytes": 17360,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 285513,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15476,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Master",
+                    "sizes": [{
+                            "flash_bytes": 833405,
+                            "flash_percentage": 63,
+                            "ram_bytes": 39088,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Slave",
+                    "sizes": [{
+                            "flash_bytes": 833601,
+                            "flash_percentage": 63,
+                            "ram_bytes": 39064,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Network",
+                    "sizes": [{
+                            "flash_bytes": 837113,
+                            "flash_percentage": 63,
+                            "ram_bytes": 39160,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Serial",
+                    "sizes": [{
+                            "flash_bytes": 834237,
+                            "flash_percentage": 63,
+                            "ram_bytes": 39152,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 850953,
+                            "flash_percentage": 64,
+                            "ram_bytes": 41200,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 869141,
+                            "flash_percentage": 66,
+                            "ram_bytes": 42504,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 286804,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11640,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 285312,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11616,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 284016,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 284726,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 284576,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11616,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 284338,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11632,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 285066,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 284676,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11632,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 288398,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11624,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 288632,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11624,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 268018,
+                            "flash_percentage": 20,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 946414,
+                            "flash_percentage": 72,
+                            "ram_bytes": 36392,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 293840,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11956,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 293690,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11940,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 246663,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12796,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 246891,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12804,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 225253,
+                            "flash_percentage": 17,
+                            "ram_bytes": 12780,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 944169,
+                            "flash_percentage": 72,
+                            "ram_bytes": 42452,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 252353,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13136,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 252157,
+                            "flash_percentage": 19,
+                            "ram_bytes": 13128,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 243661,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 243915,
+                            "flash_percentage": 18,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 250205,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12788,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 325931,
+                            "flash_percentage": 24,
+                            "ram_bytes": 15336,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 269491,
+                            "flash_percentage": 20,
+                            "ram_bytes": 12900,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Master",
+                    "sizes": [{
+                            "flash_bytes": 938621,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41268,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Slave",
+                    "sizes": [{
+                            "flash_bytes": 938827,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41236,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Network",
+                    "sizes": [{
+                            "flash_bytes": 942253,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41332,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Serial",
+                    "sizes": [{
+                            "flash_bytes": 941517,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41324,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 961307,
+                            "flash_percentage": 73,
+                            "ram_bytes": 43388,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 284123,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 290529,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13996,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 292259,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13460,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 290705,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13468,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 291349,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13468,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 318113,
+                            "flash_percentage": 24,
+                            "ram_bytes": 14164,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/MacAddress/GetMacAddress",
+                    "sizes": [{
+                            "flash_bytes": 287059,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12896,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/Legacy_RMT_Driver_Compatible",
+                    "sizes": [{
+                            "flash_bytes": 287445,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12908,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 311610,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20632,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 305542,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20592,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 305418,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 308334,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20624,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 307062,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20608,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 306078,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 306370,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20600,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 306290,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20600,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 306010,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 307150,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20708,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 306418,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20608,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 311090,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 311270,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 291438,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 921426,
+                            "flash_percentage": 70,
+                            "ram_bytes": 47192,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_5.json b/master_cli_compile/cli_compile_5.json
new file mode 100644
index 00000000000..2e7d598d40a
--- /dev/null
+++ b/master_cli_compile/cli_compile_5.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 330025,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21500,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 395319,
+                            "flash_percentage": 30,
+                            "ram_bytes": 23620,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Record_to_WAV",
+                    "sizes": [{
+                            "flash_bytes": 451021,
+                            "flash_percentage": 34,
+                            "ram_bytes": 22436,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 357709,
+                            "flash_percentage": 27,
+                            "ram_bytes": 21836,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 681735,
+                            "flash_percentage": 52,
+                            "ram_bytes": 29500,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 712177,
+                            "flash_percentage": 54,
+                            "ram_bytes": 30800,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_TLK110",
+                    "sizes": [{
+                            "flash_bytes": 560871,
+                            "flash_percentage": 42,
+                            "ram_bytes": 26744,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 607799,
+                            "flash_percentage": 46,
+                            "ram_bytes": 26856,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 606089,
+                            "flash_percentage": 46,
+                            "ram_bytes": 26856,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 746901,
+                            "flash_percentage": 56,
+                            "ram_bytes": 27624,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 386933,
+                            "flash_percentage": 29,
+                            "ram_bytes": 22304,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 720099,
+                            "flash_percentage": 54,
+                            "ram_bytes": 28776,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 332478,
+                            "flash_percentage": 25,
+                            "ram_bytes": 20472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Master",
+                    "sizes": [{
+                            "flash_bytes": 864218,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44428,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Slave",
+                    "sizes": [{
+                            "flash_bytes": 864414,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44404,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Network",
+                    "sizes": [{
+                            "flash_bytes": 867586,
+                            "flash_percentage": 66,
+                            "ram_bytes": 44500,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Serial",
+                    "sizes": [{
+                            "flash_bytes": 864782,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44492,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_SR/examples/Basic",
+                    "sizes": [{
+                            "flash_bytes": 677342,
+                            "flash_percentage": 21,
+                            "ram_bytes": 31220,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 881834,
+                            "flash_percentage": 67,
+                            "ram_bytes": 46556,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 899930,
+                            "flash_percentage": 68,
+                            "ram_bytes": 47860,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 575298,
+                            "flash_percentage": 43,
+                            "ram_bytes": 25996,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 573630,
+                            "flash_percentage": 43,
+                            "ram_bytes": 25996,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 966666,
+                            "flash_percentage": 73,
+                            "ram_bytes": 45028,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 360830,
+                            "flash_percentage": 27,
+                            "ram_bytes": 21128,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 916866,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45780,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 991426,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 991406,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 996078,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46228,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 536785,
+                            "flash_percentage": 40,
+                            "ram_bytes": 21016,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 535341,
+                            "flash_percentage": 40,
+                            "ram_bytes": 21016,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 929081,
+                            "flash_percentage": 70,
+                            "ram_bytes": 39628,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 324949,
+                            "flash_percentage": 24,
+                            "ram_bytes": 16132,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 885477,
+                            "flash_percentage": 67,
+                            "ram_bytes": 40440,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 961605,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40832,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 961585,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40832,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 966389,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40872,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1016441,
+                            "flash_percentage": 32,
+                            "ram_bytes": 42328,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 961193,
+                            "flash_percentage": 73,
+                            "ram_bytes": 41040,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 960917,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40832,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 906417,
+                            "flash_percentage": 69,
+                            "ram_bytes": 40988,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 905697,
+                            "flash_percentage": 69,
+                            "ram_bytes": 40988,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 998097,
+                            "flash_percentage": 31,
+                            "ram_bytes": 41548,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 285594,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 285852,
+                            "flash_percentage": 21,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 292144,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11608,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 366394,
+                            "flash_percentage": 27,
+                            "ram_bytes": 13540,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 311486,
+                            "flash_percentage": 23,
+                            "ram_bytes": 11736,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Master",
+                    "sizes": [{
+                            "flash_bytes": 930574,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35200,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Slave",
+                    "sizes": [{
+                            "flash_bytes": 930774,
+                            "flash_percentage": 71,
+                            "ram_bytes": 35168,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Network",
+                    "sizes": [{
+                            "flash_bytes": 934206,
+                            "flash_percentage": 71,
+                            "ram_bytes": 35264,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Serial",
+                    "sizes": [{
+                            "flash_bytes": 933488,
+                            "flash_percentage": 71,
+                            "ram_bytes": 35256,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 953276,
+                            "flash_percentage": 72,
+                            "ram_bytes": 37312,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 975650,
+                            "flash_percentage": 74,
+                            "ram_bytes": 38608,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 580850,
+                            "flash_percentage": 44,
+                            "ram_bytes": 17784,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 579166,
+                            "flash_percentage": 44,
+                            "ram_bytes": 17784,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 1037416,
+                            "flash_percentage": 79,
+                            "ram_bytes": 36312,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 984125,
+                            "flash_percentage": 75,
+                            "ram_bytes": 44668,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 540031,
+                            "flash_percentage": 41,
+                            "ram_bytes": 18964,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 538365,
+                            "flash_percentage": 41,
+                            "ram_bytes": 18964,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 1045915,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42388,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 296437,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13584,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 989387,
+                            "flash_percentage": 75,
+                            "ram_bytes": 42596,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 1071781,
+                            "flash_percentage": 81,
+                            "ram_bytes": 43004,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1071773,
+                            "flash_percentage": 81,
+                            "ram_bytes": 43004,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 1076511,
+                            "flash_percentage": 82,
+                            "ram_bytes": 43036,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1132405,
+                            "flash_percentage": 35,
+                            "ram_bytes": 44404,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 1071317,
+                            "flash_percentage": 81,
+                            "ram_bytes": 43212,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1070763,
+                            "flash_percentage": 81,
+                            "ram_bytes": 43004,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 1013075,
+                            "flash_percentage": 77,
+                            "ram_bytes": 43812,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 1012457,
+                            "flash_percentage": 77,
+                            "ram_bytes": 43812,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 1113169,
+                            "flash_percentage": 35,
+                            "ram_bytes": 44356,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 1053249,
+                            "flash_percentage": 80,
+                            "ram_bytes": 46228,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 305581,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14624,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 307245,
+                            "flash_percentage": 23,
+                            "ram_bytes": 16048,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 306179,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14496,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWrite_RGB_LED",
+                    "sizes": [{
+                            "flash_bytes": 304627,
+                            "flash_percentage": 23,
+                            "ram_bytes": 17088,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_CPUFreq_Test",
+                    "sizes": [{
+                            "flash_bytes": 305583,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14008,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_EndOfTransmissionState",
+                    "sizes": [{
+                            "flash_bytes": 305165,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14064,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMT_LED_Blink",
+                    "sizes": [{
+                            "flash_bytes": 307423,
+                            "flash_percentage": 23,
+                            "ram_bytes": 14120,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 285025,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 314682,
+                            "flash_percentage": 24,
+                            "ram_bytes": 20640,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 314470,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20632,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 312702,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20776,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 313454,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20768,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 307266,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 307510,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 312354,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 360998,
+                            "flash_percentage": 27,
+                            "ram_bytes": 22104,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Record_to_WAV",
+                    "sizes": [{
+                            "flash_bytes": 410030,
+                            "flash_percentage": 31,
+                            "ram_bytes": 21508,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 329610,
+                            "flash_percentage": 25,
+                            "ram_bytes": 20880,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Master",
+                    "sizes": [{
+                            "flash_bytes": 907318,
+                            "flash_percentage": 69,
+                            "ram_bytes": 44804,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Broadcast_Slave",
+                    "sizes": [{
+                            "flash_bytes": 907538,
+                            "flash_percentage": 69,
+                            "ram_bytes": 44772,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Network",
+                    "sizes": [{
+                            "flash_bytes": 911090,
+                            "flash_percentage": 69,
+                            "ram_bytes": 44976,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP_NOW/examples/ESP_NOW_Serial",
+                    "sizes": [{
+                            "flash_bytes": 908086,
+                            "flash_percentage": 69,
+                            "ram_bytes": 44868,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 925354,
+                            "flash_percentage": 70,
+                            "ram_bytes": 46908,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_6.json b/master_cli_compile/cli_compile_6.json
new file mode 100644
index 00000000000..6f9a8a3defc
--- /dev/null
+++ b/master_cli_compile/cli_compile_6.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 890091,
+                            "flash_percentage": 67,
+                            "ram_bytes": 29420,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 890075,
+                            "flash_percentage": 67,
+                            "ram_bytes": 29420,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 894771,
+                            "flash_percentage": 68,
+                            "ram_bytes": 29444,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 889623,
+                            "flash_percentage": 67,
+                            "ram_bytes": 29628,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 889069,
+                            "flash_percentage": 67,
+                            "ram_bytes": 29420,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 732807,
+                            "flash_percentage": 55,
+                            "ram_bytes": 29092,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 732193,
+                            "flash_percentage": 55,
+                            "ram_bytes": 29092,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 910595,
+                            "flash_percentage": 28,
+                            "ram_bytes": 29908,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 768059,
+                            "flash_percentage": 58,
+                            "ram_bytes": 31500,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 372231,
+                            "flash_percentage": 28,
+                            "ram_bytes": 22176,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 719045,
+                            "flash_percentage": 54,
+                            "ram_bytes": 28740,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 652253,
+                            "flash_percentage": 49,
+                            "ram_bytes": 27264,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1047338,
+                            "flash_percentage": 33,
+                            "ram_bytes": 47660,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 991054,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46396,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 990786,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 945126,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46428,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 944406,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46428,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 1035258,
+                            "flash_percentage": 32,
+                            "ram_bytes": 46988,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 971454,
+                            "flash_percentage": 74,
+                            "ram_bytes": 48788,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 992438,
+                            "flash_percentage": 75,
+                            "ram_bytes": 47732,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 991906,
+                            "flash_percentage": 75,
+                            "ram_bytes": 47604,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 346198,
+                            "flash_percentage": 26,
+                            "ram_bytes": 21008,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 916242,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45804,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Matter/examples/MatterColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1704326,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99636,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterCommissionTest",
+                    "sizes": [{
+                            "flash_bytes": 1656986,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99252,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterComposedLights",
+                    "sizes": [{
+                            "flash_bytes": 1681538,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99452,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterContactSensor",
+                    "sizes": [{
+                            "flash_bytes": 1675878,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99588,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterDimmableLight",
+                    "sizes": [{
+                            "flash_bytes": 1689690,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99636,
+                            "ram_percentage": 30
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 934661,
+                            "flash_percentage": 71,
+                            "ram_bytes": 43372,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 962309,
+                            "flash_percentage": 73,
+                            "ram_bytes": 42352,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 961801,
+                            "flash_percentage": 73,
+                            "ram_bytes": 42240,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 310865,
+                            "flash_percentage": 23,
+                            "ram_bytes": 16004,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 884817,
+                            "flash_percentage": 67,
+                            "ram_bytes": 40456,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Matter/examples/MatterColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1665753,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94220,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterCommissionTest",
+                    "sizes": [{
+                            "flash_bytes": 1625313,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93872,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterComposedLights",
+                    "sizes": [{
+                            "flash_bytes": 1649993,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94080,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterContactSensor",
+                    "sizes": [{
+                            "flash_bytes": 1637345,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94156,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterDimmableLight",
+                    "sizes": [{
+                            "flash_bytes": 1651173,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94220,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterEnhancedColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1673009,
+                            "flash_percentage": 53,
+                            "ram_bytes": 94260,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterFan",
+                    "sizes": [{
+                            "flash_bytes": 1650633,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94380,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterHumiditySensor",
+                    "sizes": [{
+                            "flash_bytes": 1622965,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93896,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterMinimum",
+                    "sizes": [{
+                            "flash_bytes": 1643097,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94180,
+                            "ram_percentage": 28
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 348660,
+                            "flash_percentage": 26,
+                            "ram_bytes": 12412,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 991258,
+                            "flash_percentage": 75,
+                            "ram_bytes": 36520,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 1072270,
+                            "flash_percentage": 81,
+                            "ram_bytes": 36928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1072262,
+                            "flash_percentage": 81,
+                            "ram_bytes": 36928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 1077092,
+                            "flash_percentage": 82,
+                            "ram_bytes": 36960,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1130900,
+                            "flash_percentage": 35,
+                            "ram_bytes": 37736,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 1071806,
+                            "flash_percentage": 81,
+                            "ram_bytes": 37136,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1071252,
+                            "flash_percentage": 81,
+                            "ram_bytes": 36928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 1012010,
+                            "flash_percentage": 77,
+                            "ram_bytes": 37704,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 1011390,
+                            "flash_percentage": 77,
+                            "ram_bytes": 37704,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 1112210,
+                            "flash_percentage": 35,
+                            "ram_bytes": 38272,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 1045092,
+                            "flash_percentage": 79,
+                            "ram_bytes": 40152,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 1074312,
+                            "flash_percentage": 81,
+                            "ram_bytes": 38456,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 1073686,
+                            "flash_percentage": 81,
+                            "ram_bytes": 38344,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 1109573,
+                            "flash_percentage": 84,
+                            "ram_bytes": 44540,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 1108923,
+                            "flash_percentage": 84,
+                            "ram_bytes": 44412,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 292359,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13452,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 988397,
+                            "flash_percentage": 75,
+                            "ram_bytes": 42604,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Matter/examples/MatterColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1691797,
+                            "flash_percentage": 53,
+                            "ram_bytes": 97044,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterCommissionTest",
+                    "sizes": [{
+                            "flash_bytes": 1637759,
+                            "flash_percentage": 52,
+                            "ram_bytes": 96076,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterComposedLights",
+                    "sizes": [{
+                            "flash_bytes": 1674491,
+                            "flash_percentage": 53,
+                            "ram_bytes": 96260,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterContactSensor",
+                    "sizes": [{
+                            "flash_bytes": 1648605,
+                            "flash_percentage": 52,
+                            "ram_bytes": 96988,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterDimmableLight",
+                    "sizes": [{
+                            "flash_bytes": 1668917,
+                            "flash_percentage": 53,
+                            "ram_bytes": 97044,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterEnhancedColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1702573,
+                            "flash_percentage": 54,
+                            "ram_bytes": 97092,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterFan",
+                    "sizes": [{
+                            "flash_bytes": 1667895,
+                            "flash_percentage": 53,
+                            "ram_bytes": 97404,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterHumiditySensor",
+                    "sizes": [{
+                            "flash_bytes": 1631265,
+                            "flash_percentage": 51,
+                            "ram_bytes": 96076,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterMinimum",
+                    "sizes": [{
+                            "flash_bytes": 1658523,
+                            "flash_percentage": 52,
+                            "ram_bytes": 97012,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterOccupancySensor",
+                    "sizes": [{
+                            "flash_bytes": 1633017,
+                            "flash_percentage": 51,
+                            "ram_bytes": 96076,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnIdentify",
+                    "sizes": [{
+                            "flash_bytes": 1660199,
+                            "flash_percentage": 52,
+                            "ram_bytes": 97012,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffLight",
+                    "sizes": [{
+                            "flash_bytes": 1661017,
+                            "flash_percentage": 52,
+                            "ram_bytes": 97020,
+                            "ram_percentage": 29
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/ResetReason/ResetReason2",
+                    "sizes": [{
+                            "flash_bytes": 284153,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/BaudRateDetect_Demo",
+                    "sizes": [{
+                            "flash_bytes": 284117,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 287413,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12808,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 285919,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12784,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RS485_Echo_Demo",
+                    "sizes": [{
+                            "flash_bytes": 284739,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 285325,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12776,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 285161,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12776,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 284931,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12792,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 944058,
+                            "flash_percentage": 72,
+                            "ram_bytes": 48204,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_LAN8720",
+                    "sizes": [{
+                            "flash_bytes": 523966,
+                            "flash_percentage": 39,
+                            "ram_bytes": 25672,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_TLK110",
+                    "sizes": [{
+                            "flash_bytes": 523966,
+                            "flash_percentage": 39,
+                            "ram_bytes": 25672,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 560782,
+                            "flash_percentage": 42,
+                            "ram_bytes": 25688,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 559270,
+                            "flash_percentage": 42,
+                            "ram_bytes": 25688,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 988446,
+                            "flash_percentage": 75,
+                            "ram_bytes": 45068,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 362810,
+                            "flash_percentage": 27,
+                            "ram_bytes": 21644,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 959874,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46524,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 1035870,
+                            "flash_percentage": 79,
+                            "ram_bytes": 47884,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1035846,
+                            "flash_percentage": 79,
+                            "ram_bytes": 47884,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 1040490,
+                            "flash_percentage": 79,
+                            "ram_bytes": 48100,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1091810,
+                            "flash_percentage": 34,
+                            "ram_bytes": 49332,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 1035478,
+                            "flash_percentage": 79,
+                            "ram_bytes": 48092,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 1035206,
+                            "flash_percentage": 78,
+                            "ram_bytes": 47884,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 967654,
+                            "flash_percentage": 73,
+                            "ram_bytes": 47772,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_7.json b/master_cli_compile/cli_compile_7.json
new file mode 100644
index 00000000000..ef5cb24b347
--- /dev/null
+++ b/master_cli_compile/cli_compile_7.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 849947,
+                            "flash_percentage": 64,
+                            "ram_bytes": 29376,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 849979,
+                            "flash_percentage": 64,
+                            "ram_bytes": 29408,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 851817,
+                            "flash_percentage": 27,
+                            "ram_bytes": 29376,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 850935,
+                            "flash_percentage": 64,
+                            "ram_bytes": 29376,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 892033,
+                            "flash_percentage": 68,
+                            "ram_bytes": 29388,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 869621,
+                            "flash_percentage": 66,
+                            "ram_bytes": 29444,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 579527,
+                            "flash_percentage": 44,
+                            "ram_bytes": 26516,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 727491,
+                            "flash_percentage": 55,
+                            "ram_bytes": 27412,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 330763,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21528,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 330495,
+                            "flash_percentage": 25,
+                            "ram_bytes": 21528,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 392505,
+                            "flash_percentage": 29,
+                            "ram_bytes": 22284,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 722185,
+                            "flash_percentage": 55,
+                            "ram_bytes": 28740,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "Matter/examples/MatterEnhancedColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1711354,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99676,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterFan",
+                    "sizes": [{
+                            "flash_bytes": 1691878,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99988,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterHumiditySensor",
+                    "sizes": [{
+                            "flash_bytes": 1654422,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99268,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterMinimum",
+                    "sizes": [{
+                            "flash_bytes": 1681630,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99612,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOccupancySensor",
+                    "sizes": [{
+                            "flash_bytes": 1655470,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99268,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnIdentify",
+                    "sizes": [{
+                            "flash_bytes": 1682958,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99612,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffLight",
+                    "sizes": [{
+                            "flash_bytes": 1684534,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99620,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffPlugin",
+                    "sizes": [{
+                            "flash_bytes": 1684458,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99620,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterPressureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1654430,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99268,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterSmartButon",
+                    "sizes": [{
+                            "flash_bytes": 1658014,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99292,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureLight",
+                    "sizes": [{
+                            "flash_bytes": 1709458,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99652,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1654446,
+                            "flash_percentage": 52,
+                            "ram_bytes": 99268,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterThermostat",
+                    "sizes": [{
+                            "flash_bytes": 1674250,
+                            "flash_percentage": 53,
+                            "ram_bytes": 99404,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/WiFiProvWithinMatter",
+                    "sizes": [{
+                            "flash_bytes": 2296626,
+                            "flash_percentage": 73,
+                            "ram_bytes": 121404,
+                            "ram_percentage": 37
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 857202,
+                            "flash_percentage": 65,
+                            "ram_bytes": 44276,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 953686,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46100,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "Matter/examples/MatterOccupancySensor",
+                    "sizes": [{
+                            "flash_bytes": 1624045,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93896,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnIdentify",
+                    "sizes": [{
+                            "flash_bytes": 1644445,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94180,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffLight",
+                    "sizes": [{
+                            "flash_bytes": 1646001,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94188,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffPlugin",
+                    "sizes": [{
+                            "flash_bytes": 1645929,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94188,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterPressureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1622985,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93896,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterSmartButon",
+                    "sizes": [{
+                            "flash_bytes": 1626501,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93920,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureLight",
+                    "sizes": [{
+                            "flash_bytes": 1670977,
+                            "flash_percentage": 53,
+                            "ram_bytes": 94236,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1622997,
+                            "flash_percentage": 51,
+                            "ram_bytes": 93896,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/MatterThermostat",
+                    "sizes": [{
+                            "flash_bytes": 1642629,
+                            "flash_percentage": 52,
+                            "ram_bytes": 94032,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "Matter/examples/WiFiProvWithinMatter",
+                    "sizes": [{
+                            "flash_bytes": 1776917,
+                            "flash_percentage": 56,
+                            "ram_bytes": 94268,
+                            "ram_percentage": 28
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 826449,
+                            "flash_percentage": 63,
+                            "ram_bytes": 38928,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 924433,
+                            "flash_percentage": 70,
+                            "ram_bytes": 40744,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 924461,
+                            "flash_percentage": 70,
+                            "ram_bytes": 40776,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 926265,
+                            "flash_percentage": 29,
+                            "ram_bytes": 40744,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 333978,
+                            "flash_percentage": 25,
+                            "ram_bytes": 12280,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 990374,
+                            "flash_percentage": 75,
+                            "ram_bytes": 36528,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Matter/examples/MatterColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1682506,
+                            "flash_percentage": 53,
+                            "ram_bytes": 90968,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterCommissionTest",
+                    "sizes": [{
+                            "flash_bytes": 1628412,
+                            "flash_percentage": 51,
+                            "ram_bytes": 90000,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterComposedLights",
+                    "sizes": [{
+                            "flash_bytes": 1664872,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90160,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterContactSensor",
+                    "sizes": [{
+                            "flash_bytes": 1639226,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90912,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterDimmableLight",
+                    "sizes": [{
+                            "flash_bytes": 1659596,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90968,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterEnhancedColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1693020,
+                            "flash_percentage": 53,
+                            "ram_bytes": 91000,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterFan",
+                    "sizes": [{
+                            "flash_bytes": 1655666,
+                            "flash_percentage": 52,
+                            "ram_bytes": 91128,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterHumiditySensor",
+                    "sizes": [{
+                            "flash_bytes": 1621608,
+                            "flash_percentage": 51,
+                            "ram_bytes": 89992,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterMinimum",
+                    "sizes": [{
+                            "flash_bytes": 1649156,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90936,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterOccupancySensor",
+                    "sizes": [{
+                            "flash_bytes": 1623354,
+                            "flash_percentage": 51,
+                            "ram_bytes": 89992,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnIdentify",
+                    "sizes": [{
+                            "flash_bytes": 1650842,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90936,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffLight",
+                    "sizes": [{
+                            "flash_bytes": 1651662,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90944,
+                            "ram_percentage": 27
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "Matter/examples/MatterOnOffPlugin",
+                    "sizes": [{
+                            "flash_bytes": 1660921,
+                            "flash_percentage": 52,
+                            "ram_bytes": 97020,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterPressureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1631241,
+                            "flash_percentage": 51,
+                            "ram_bytes": 96076,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterSmartButon",
+                    "sizes": [{
+                            "flash_bytes": 1637215,
+                            "flash_percentage": 52,
+                            "ram_bytes": 96092,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureLight",
+                    "sizes": [{
+                            "flash_bytes": 1699975,
+                            "flash_percentage": 54,
+                            "ram_bytes": 97060,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1631281,
+                            "flash_percentage": 51,
+                            "ram_bytes": 96076,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/MatterThermostat",
+                    "sizes": [{
+                            "flash_bytes": 1662117,
+                            "flash_percentage": 52,
+                            "ram_bytes": 96204,
+                            "ram_percentage": 29
+                            }]
+                    },
+{"name": "Matter/examples/WiFiProvWithinMatter",
+                    "sizes": [{
+                            "flash_bytes": 2472383,
+                            "flash_percentage": 78,
+                            "ram_bytes": 118496,
+                            "ram_percentage": 36
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 932009,
+                            "flash_percentage": 71,
+                            "ram_bytes": 41108,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 1040811,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42924,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 1040845,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42948,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 1042693,
+                            "flash_percentage": 33,
+                            "ram_bytes": 42932,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1105901,
+                            "flash_percentage": 35,
+                            "ram_bytes": 44388,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 1041831,
+                            "flash_percentage": 79,
+                            "ram_bytes": 42924,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 1074207,
+                            "flash_percentage": 81,
+                            "ram_bytes": 42940,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 1054997,
+                            "flash_percentage": 80,
+                            "ram_bytes": 42964,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/COAP/coap_lamp",
+                    "sizes": [{
+                            "flash_bytes": 1102145,
+                            "flash_percentage": 84,
+                            "ram_bytes": 48048,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 285665,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12776,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/onReceiveExample",
+                    "sizes": [{
+                            "flash_bytes": 285267,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12784,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 288923,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 289155,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12776,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 268249,
+                            "flash_percentage": 20,
+                            "ram_bytes": 12760,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 294991,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13140,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 294791,
+                            "flash_percentage": 22,
+                            "ram_bytes": 13132,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/HEXBuilder",
+                    "sizes": [{
+                            "flash_bytes": 286187,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 966914,
+                            "flash_percentage": 73,
+                            "ram_bytes": 47772,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 1059254,
+                            "flash_percentage": 33,
+                            "ram_bytes": 48492,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 994394,
+                            "flash_percentage": 75,
+                            "ram_bytes": 48820,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 1035166,
+                            "flash_percentage": 78,
+                            "ram_bytes": 48068,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 1034662,
+                            "flash_percentage": 78,
+                            "ram_bytes": 47956,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 348618,
+                            "flash_percentage": 26,
+                            "ram_bytes": 21256,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 959146,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46460,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Matter/examples/MatterColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1755534,
+                            "flash_percentage": 55,
+                            "ram_bytes": 99964,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterCommissionTest",
+                    "sizes": [{
+                            "flash_bytes": 1719894,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99712,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterComposedLights",
+                    "sizes": [{
+                            "flash_bytes": 1746278,
+                            "flash_percentage": 55,
+                            "ram_bytes": 99880,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterContactSensor",
+                    "sizes": [{
+                            "flash_bytes": 1718054,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99696,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterDimmableLight",
+                    "sizes": [{
+                            "flash_bytes": 1740254,
+                            "flash_percentage": 55,
+                            "ram_bytes": 99964,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterEnhancedColorLight",
+                    "sizes": [{
+                            "flash_bytes": 1762770,
+                            "flash_percentage": 56,
+                            "ram_bytes": 100004,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterFan",
+                    "sizes": [{
+                            "flash_bytes": 1741830,
+                            "flash_percentage": 55,
+                            "ram_bytes": 100124,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterHumiditySensor",
+                    "sizes": [{
+                            "flash_bytes": 1717974,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99696,
+                            "ram_percentage": 30
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_8.json b/master_cli_compile/cli_compile_8.json
new file mode 100644
index 00000000000..aa7bf6eb632
--- /dev/null
+++ b/master_cli_compile/cli_compile_8.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "SD_MMC/examples/SD2USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 454957,
+                            "flash_percentage": 34,
+                            "ram_bytes": 49972,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_Test",
+                    "sizes": [{
+                            "flash_bytes": 419583,
+                            "flash_percentage": 32,
+                            "ram_bytes": 22716,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_time",
+                    "sizes": [{
+                            "flash_bytes": 720305,
+                            "flash_percentage": 54,
+                            "ram_bytes": 28784,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 312385,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21576,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 364401,
+                            "flash_percentage": 27,
+                            "ram_bytes": 22044,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 712271,
+                            "flash_percentage": 54,
+                            "ram_bytes": 28608,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 344091,
+                            "flash_percentage": 26,
+                            "ram_bytes": 23836,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 311687,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 311477,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21592,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 311359,
+                            "flash_percentage": 23,
+                            "ram_bytes": 21616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "USB/examples/CompositeDevice",
+                    "sizes": [{
+                            "flash_bytes": 415083,
+                            "flash_percentage": 31,
+                            "ram_bytes": 49732,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/ConsumerControl",
+                    "sizes": [{
+                            "flash_bytes": 350421,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49296,
+                            "ram_percentage": 15
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 953734,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 955538,
+                            "flash_percentage": 30,
+                            "ram_bytes": 46116,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1013354,
+                            "flash_percentage": 32,
+                            "ram_bytes": 47636,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 954474,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46100,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 995654,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46124,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 967358,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46172,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 554110,
+                            "flash_percentage": 42,
+                            "ram_bytes": 25700,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 950030,
+                            "flash_percentage": 72,
+                            "ram_bytes": 44764,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 311510,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20368,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 312342,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1797914,
+                            "flash_percentage": 44,
+                            "ram_bytes": 70340,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1785554,
+                            "flash_percentage": 44,
+                            "ram_bytes": 70456,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1801342,
+                            "flash_percentage": 44,
+                            "ram_bytes": 70916,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1809342,
+                            "flash_percentage": 44,
+                            "ram_bytes": 70436,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 391706,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21796,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 944606,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46140,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "NetworkClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 982585,
+                            "flash_percentage": 31,
+                            "ram_bytes": 42288,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 925157,
+                            "flash_percentage": 70,
+                            "ram_bytes": 40744,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 965797,
+                            "flash_percentage": 73,
+                            "ram_bytes": 40768,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 938097,
+                            "flash_percentage": 71,
+                            "ram_bytes": 40832,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 513457,
+                            "flash_percentage": 39,
+                            "ram_bytes": 20656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 913005,
+                            "flash_percentage": 69,
+                            "ram_bytes": 39364,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 276441,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15372,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 277257,
+                            "flash_percentage": 21,
+                            "ram_bytes": 15372,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1278757,
+                            "flash_percentage": 31,
+                            "ram_bytes": 43196,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1267021,
+                            "flash_percentage": 31,
+                            "ram_bytes": 43340,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1281937,
+                            "flash_percentage": 31,
+                            "ram_bytes": 43764,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1289893,
+                            "flash_percentage": 31,
+                            "ram_bytes": 43292,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 348501,
+                            "flash_percentage": 8,
+                            "ram_bytes": 16776,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 906049,
+                            "flash_percentage": 69,
+                            "ram_bytes": 40740,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "Matter/examples/MatterOnOffPlugin",
+                    "sizes": [{
+                            "flash_bytes": 1651566,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90944,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterPressureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1621584,
+                            "flash_percentage": 51,
+                            "ram_bytes": 89992,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterSmartButon",
+                    "sizes": [{
+                            "flash_bytes": 1627556,
+                            "flash_percentage": 51,
+                            "ram_bytes": 90008,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureLight",
+                    "sizes": [{
+                            "flash_bytes": 1690494,
+                            "flash_percentage": 53,
+                            "ram_bytes": 90984,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1621624,
+                            "flash_percentage": 51,
+                            "ram_bytes": 89992,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/MatterThermostat",
+                    "sizes": [{
+                            "flash_bytes": 1648526,
+                            "flash_percentage": 52,
+                            "ram_bytes": 90128,
+                            "ram_percentage": 27
+                            }]
+                    },
+{"name": "Matter/examples/WiFiProvWithinMatter",
+                    "sizes": [{
+                            "flash_bytes": 2362340,
+                            "flash_percentage": 75,
+                            "ram_bytes": 112760,
+                            "ram_percentage": 34
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 923976,
+                            "flash_percentage": 70,
+                            "ram_bytes": 35032,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 1032320,
+                            "flash_percentage": 78,
+                            "ram_bytes": 36848,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 1032354,
+                            "flash_percentage": 78,
+                            "ram_bytes": 36888,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 1034202,
+                            "flash_percentage": 32,
+                            "ram_bytes": 36856,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1095426,
+                            "flash_percentage": 34,
+                            "ram_bytes": 37704,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 1033334,
+                            "flash_percentage": 78,
+                            "ram_bytes": 36848,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 1074440,
+                            "flash_percentage": 81,
+                            "ram_bytes": 36880,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "OpenThread/examples/COAP/coap_switch",
+                    "sizes": [{
+                            "flash_bytes": 1102185,
+                            "flash_percentage": 84,
+                            "ram_bytes": 48028,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleCLI",
+                    "sizes": [{
+                            "flash_bytes": 1079203,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleNode",
+                    "sizes": [{
+                            "flash_bytes": 1081163,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/ExtendedRouterNode",
+                    "sizes": [{
+                            "flash_bytes": 1082493,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/LeaderNode",
+                    "sizes": [{
+                            "flash_bytes": 1079807,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/RouterNode",
+                    "sizes": [{
+                            "flash_bytes": 1079871,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/ThreadScan",
+                    "sizes": [{
+                            "flash_bytes": 1079551,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/onReceive",
+                    "sizes": [{
+                            "flash_bytes": 1079093,
+                            "flash_percentage": 82,
+                            "ram_bytes": 46708,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 517003,
+                            "flash_percentage": 39,
+                            "ram_bytes": 18712,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 1028315,
+                            "flash_percentage": 78,
+                            "ram_bytes": 42164,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 251091,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12812,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 250851,
+                            "flash_percentage": 19,
+                            "ram_bytes": 12820,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 2126497,
+                            "flash_percentage": 52,
+                            "ram_bytes": 67400,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 2113513,
+                            "flash_percentage": 52,
+                            "ram_bytes": 67568,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 2128987,
+                            "flash_percentage": 52,
+                            "ram_bytes": 67800,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 2139847,
+                            "flash_percentage": 52,
+                            "ram_bytes": 67488,
+                            "ram_percentage": 20
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "ESP32/examples/Utilities/MD5Builder",
+                    "sizes": [{
+                            "flash_bytes": 286449,
+                            "flash_percentage": 21,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP32/examples/Utilities/SHA1Builder",
+                    "sizes": [{
+                            "flash_bytes": 292737,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12768,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "ESP_I2S/examples/ES8388_loopback",
+                    "sizes": [{
+                            "flash_bytes": 367469,
+                            "flash_percentage": 28,
+                            "ram_bytes": 15388,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP_I2S/examples/Simple_tone",
+                    "sizes": [{
+                            "flash_bytes": 311909,
+                            "flash_percentage": 23,
+                            "ram_bytes": 12904,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_Arduino_SPI",
+                    "sizes": [{
+                            "flash_bytes": 575927,
+                            "flash_percentage": 43,
+                            "ram_bytes": 18960,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_W5500_IDF_SPI",
+                    "sizes": [{
+                            "flash_bytes": 574261,
+                            "flash_percentage": 43,
+                            "ram_bytes": 18960,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 349359,
+                            "flash_percentage": 26,
+                            "ram_bytes": 13548,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 334727,
+                            "flash_percentage": 25,
+                            "ram_bytes": 13424,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "Matter/examples/MatterMinimum",
+                    "sizes": [{
+                            "flash_bytes": 1724086,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99720,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOccupancySensor",
+                    "sizes": [{
+                            "flash_bytes": 1719030,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99696,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnIdentify",
+                    "sizes": [{
+                            "flash_bytes": 1725494,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99720,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffLight",
+                    "sizes": [{
+                            "flash_bytes": 1727070,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99728,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterOnOffPlugin",
+                    "sizes": [{
+                            "flash_bytes": 1726994,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99728,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterPressureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1717982,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99696,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterSmartButon",
+                    "sizes": [{
+                            "flash_bytes": 1721626,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99720,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureLight",
+                    "sizes": [{
+                            "flash_bytes": 1754386,
+                            "flash_percentage": 55,
+                            "ram_bytes": 99980,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterTemperatureSensor",
+                    "sizes": [{
+                            "flash_bytes": 1717994,
+                            "flash_percentage": 54,
+                            "ram_bytes": 99696,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/MatterThermostat",
+                    "sizes": [{
+                            "flash_bytes": 1738310,
+                            "flash_percentage": 55,
+                            "ram_bytes": 99832,
+                            "ram_percentage": 30
+                            }]
+                    },
+{"name": "Matter/examples/WiFiProvWithinMatter",
+                    "sizes": [{
+                            "flash_bytes": 2530986,
+                            "flash_percentage": 80,
+                            "ram_bytes": 114128,
+                            "ram_percentage": 34
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 900086,
+                            "flash_percentage": 68,
+                            "ram_bytes": 44636,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 998630,
+                            "flash_percentage": 76,
+                            "ram_bytes": 46468,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 998658,
+                            "flash_percentage": 76,
+                            "ram_bytes": 46492,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 1000470,
+                            "flash_percentage": 31,
+                            "ram_bytes": 46468,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/master_cli_compile/cli_compile_9.json b/master_cli_compile/cli_compile_9.json
new file mode 100644
index 00000000000..8d5158781fa
--- /dev/null
+++ b/master_cli_compile/cli_compile_9.json
@@ -0,0 +1,797 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32p4",
+                "target": "esp32p4",
+                "sketches": [
+{"name": "USB/examples/CustomHIDDevice",
+                    "sizes": [{
+                            "flash_bytes": 367529,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49308,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/FirmwareMSC",
+                    "sizes": [{
+                            "flash_bytes": 393249,
+                            "flash_percentage": 30,
+                            "ram_bytes": 49292,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Gamepad",
+                    "sizes": [{
+                            "flash_bytes": 367867,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49316,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/HIDVendor",
+                    "sizes": [{
+                            "flash_bytes": 371331,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49372,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardLogout",
+                    "sizes": [{
+                            "flash_bytes": 352177,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49312,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardMessage",
+                    "sizes": [{
+                            "flash_bytes": 352529,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49320,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardReprogram",
+                    "sizes": [{
+                            "flash_bytes": 352713,
+                            "flash_percentage": 26,
+                            "ram_bytes": 49320,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardSerial",
+                    "sizes": [{
+                            "flash_bytes": 364669,
+                            "flash_percentage": 27,
+                            "ram_bytes": 49316,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/KeyboardAndMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 369269,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49332,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiController",
+                    "sizes": [{
+                            "flash_bytes": 376793,
+                            "flash_percentage": 28,
+                            "ram_bytes": 49740,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiInterface",
+                    "sizes": [{
+                            "flash_bytes": 362547,
+                            "flash_percentage": 27,
+                            "ram_bytes": 49276,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "USB/examples/MIDI/MidiMusicBox",
+                    "sizes": [{
+                            "flash_bytes": 366323,
+                            "flash_percentage": 27,
+                            "ram_bytes": 49292,
+                            "ram_percentage": 15
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s3",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "SD_MMC/examples/SD2USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 448694,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40892,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_Test",
+                    "sizes": [{
+                            "flash_bytes": 387462,
+                            "flash_percentage": 29,
+                            "ram_bytes": 21352,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_time",
+                    "sizes": [{
+                            "flash_bytes": 946950,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46124,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 323810,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21100,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 340134,
+                            "flash_percentage": 25,
+                            "ram_bytes": 20872,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 910838,
+                            "flash_percentage": 69,
+                            "ram_bytes": 45676,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 860022,
+                            "flash_percentage": 65,
+                            "ram_bytes": 47380,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 326054,
+                            "flash_percentage": 24,
+                            "ram_bytes": 22648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 320138,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21108,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 319946,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21052,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 319874,
+                            "flash_percentage": 24,
+                            "ram_bytes": 21084,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "USB/examples/CompositeDevice",
+                    "sizes": [{
+                            "flash_bytes": 417742,
+                            "flash_percentage": 31,
+                            "ram_bytes": 40892,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/ConsumerControl",
+                    "sizes": [{
+                            "flash_bytes": 363182,
+                            "flash_percentage": 27,
+                            "ram_bytes": 40428,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/CustomHIDDevice",
+                    "sizes": [{
+                            "flash_bytes": 376166,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40444,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/FirmwareMSC",
+                    "sizes": [{
+                            "flash_bytes": 401478,
+                            "flash_percentage": 30,
+                            "ram_bytes": 40444,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/Gamepad",
+                    "sizes": [{
+                            "flash_bytes": 376510,
+                            "flash_percentage": 28,
+                            "ram_bytes": 40452,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 281413,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16072,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 304949,
+                            "flash_percentage": 23,
+                            "ram_bytes": 15876,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 879357,
+                            "flash_percentage": 67,
+                            "ram_bytes": 40320,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 289593,
+                            "flash_percentage": 22,
+                            "ram_bytes": 17644,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 281073,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16096,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 280893,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16056,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 280837,
+                            "flash_percentage": 21,
+                            "ram_bytes": 16096,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "USB/examples/CompositeDevice",
+                    "sizes": [{
+                            "flash_bytes": 357705,
+                            "flash_percentage": 27,
+                            "ram_bytes": 35588,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/ConsumerControl",
+                    "sizes": [{
+                            "flash_bytes": 303497,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35148,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/CustomHIDDevice",
+                    "sizes": [{
+                            "flash_bytes": 316705,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35156,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/FirmwareMSC",
+                    "sizes": [{
+                            "flash_bytes": 337125,
+                            "flash_percentage": 25,
+                            "ram_bytes": 34780,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/Gamepad",
+                    "sizes": [{
+                            "flash_bytes": 317049,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35164,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/HIDVendor",
+                    "sizes": [{
+                            "flash_bytes": 319089,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35236,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardLogout",
+                    "sizes": [{
+                            "flash_bytes": 304665,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35180,
+                            "ram_percentage": 10
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 1045886,
+                            "flash_percentage": 79,
+                            "ram_bytes": 36880,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 558394,
+                            "flash_percentage": 42,
+                            "ram_bytes": 17524,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 1019932,
+                            "flash_percentage": 77,
+                            "ram_bytes": 36096,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 292896,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11640,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 292630,
+                            "flash_percentage": 22,
+                            "ram_bytes": 11640,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1985454,
+                            "flash_percentage": 49,
+                            "ram_bytes": 61680,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1972080,
+                            "flash_percentage": 48,
+                            "ram_bytes": 61792,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1987706,
+                            "flash_percentage": 49,
+                            "ram_bytes": 61944,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1998554,
+                            "flash_percentage": 49,
+                            "ram_bytes": 61768,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 374682,
+                            "flash_percentage": 9,
+                            "ram_bytes": 13612,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 1013760,
+                            "flash_percentage": 77,
+                            "ram_bytes": 37416,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 297954,
+                            "flash_percentage": 22,
+                            "ram_bytes": 12900,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 326268,
+                            "flash_percentage": 24,
+                            "ram_bytes": 12160,
+                            "ram_percentage": 3
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 983600,
+                            "flash_percentage": 75,
+                            "ram_bytes": 36400,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c6",
+                "target": "esp32c6",
+                "sketches": [
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 322311,
+                            "flash_percentage": 24,
+                            "ram_bytes": 14784,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 1011893,
+                            "flash_percentage": 77,
+                            "ram_bytes": 43500,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 255071,
+                            "flash_percentage": 19,
+                            "ram_bytes": 14080,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 284619,
+                            "flash_percentage": 21,
+                            "ram_bytes": 13324,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 981739,
+                            "flash_percentage": 74,
+                            "ram_bytes": 42476,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 1016387,
+                            "flash_percentage": 77,
+                            "ram_bytes": 38320,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "TFLiteMicro/examples/hello_world",
+                    "sizes": [{
+                            "flash_bytes": 266173,
+                            "flash_percentage": 20,
+                            "ram_bytes": 15108,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 251875,
+                            "flash_percentage": 19,
+                            "ram_bytes": 14096,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerBasic",
+                    "sizes": [{
+                            "flash_bytes": 251655,
+                            "flash_percentage": 19,
+                            "ram_bytes": 14048,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/TickerParameter",
+                    "sizes": [{
+                            "flash_bytes": 251533,
+                            "flash_percentage": 19,
+                            "ram_bytes": 14088,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 975573,
+                            "flash_percentage": 74,
+                            "ram_bytes": 43516,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1094669,
+                            "flash_percentage": 83,
+                            "ram_bytes": 43228,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Client_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1014317,
+                            "flash_percentage": 77,
+                            "ram_bytes": 43612,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/HTTP_Server_AES_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 1055293,
+                            "flash_percentage": 80,
+                            "ram_bytes": 46276,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 1038293,
+                            "flash_percentage": 79,
+                            "ram_bytes": 46148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 327943,
+                            "flash_percentage": 25,
+                            "ram_bytes": 14640,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32h2",
+                "target": "esp32h2",
+                "sketches": [
+{"name": "OpenThread/examples/COAP/coap_lamp",
+                    "sizes": [{
+                            "flash_bytes": 1122617,
+                            "flash_percentage": 85,
+                            "ram_bytes": 47096,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/COAP/coap_switch",
+                    "sizes": [{
+                            "flash_bytes": 1122655,
+                            "flash_percentage": 85,
+                            "ram_bytes": 47060,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleCLI",
+                    "sizes": [{
+                            "flash_bytes": 1099609,
+                            "flash_percentage": 83,
+                            "ram_bytes": 45736,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleNode",
+                    "sizes": [{
+                            "flash_bytes": 1101569,
+                            "flash_percentage": 84,
+                            "ram_bytes": 45736,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/ExtendedRouterNode",
+                    "sizes": [{
+                            "flash_bytes": 1102905,
+                            "flash_percentage": 84,
+                            "ram_bytes": 45744,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/LeaderNode",
+                    "sizes": [{
+                            "flash_bytes": 1100283,
+                            "flash_percentage": 83,
+                            "ram_bytes": 45744,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/SimpleThreadNetwork/RouterNode",
+                    "sizes": [{
+                            "flash_bytes": 1100347,
+                            "flash_percentage": 83,
+                            "ram_bytes": 45744,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "OpenThread/examples/ThreadScan",
+                    "sizes": [{
+                            "flash_bytes": 1099959,
+                            "flash_percentage": 83,
+                            "ram_bytes": 45736,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32",
+                "target": "esp32",
+                "sketches": [
+{"name": "NetworkClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 1058274,
+                            "flash_percentage": 33,
+                            "ram_bytes": 47956,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade",
+                    "sizes": [{
+                            "flash_bytes": 999370,
+                            "flash_percentage": 76,
+                            "ram_bytes": 46468,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 1039586,
+                            "flash_percentage": 79,
+                            "ram_bytes": 47828,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "NetworkClientSecure/examples/WiFiClientTrustOnFirstUse",
+                    "sizes": [{
+                            "flash_bytes": 1012554,
+                            "flash_percentage": 77,
+                            "ram_bytes": 46492,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "PPP/examples/PPP_Basic",
+                    "sizes": [{
+                            "flash_bytes": 544102,
+                            "flash_percentage": 41,
+                            "ram_bytes": 25376,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "PPP/examples/PPP_WIFI_BRIDGE",
+                    "sizes": [{
+                            "flash_bytes": 973930,
+                            "flash_percentage": 74,
+                            "ram_bytes": 44772,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 313158,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20608,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 314010,
+                            "flash_percentage": 23,
+                            "ram_bytes": 20616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 369614,
+                            "flash_percentage": 28,
+                            "ram_bytes": 21676,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 966634,
+                            "flash_percentage": 73,
+                            "ram_bytes": 46540,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_Test",
+                    "sizes": [{
+                            "flash_bytes": 389686,
+                            "flash_percentage": 29,
+                            "ram_bytes": 21844,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_time",
+                    "sizes": [{
+                            "flash_bytes": 990426,
+                            "flash_percentage": 75,
+                            "ram_bytes": 46812,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 300438,
+                            "flash_percentage": 22,
+                            "ram_bytes": 20704,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 342894,
+                            "flash_percentage": 26,
+                            "ram_bytes": 21128,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 953974,
+                            "flash_percentage": 72,
+                            "ram_bytes": 46324,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/package_esp32_dev_index.json b/package_esp32_dev_index.json
index edef8c5006d..ecaf489adb6 100644
--- a/package_esp32_dev_index.json
+++ b/package_esp32_dev_index.json
@@ -12,12 +12,12 @@
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.7",
+          "version": "3.3.0-alpha1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
-          "archiveFileName": "esp32-2.0.7.zip",
-          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
-          "size": "278966011",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.3.0-alpha1/esp32-3.3.0-alpha1.zip",
+          "archiveFileName": "esp32-3.3.0-alpha1.zip",
+          "checksum": "SHA-256:1ecaa232ccdf4d32211d55d203e1a655e75945c6326e8c27e8c059eca7946d37",
+          "size": "25494893",
           "help": {
             "online": ""
           },
@@ -25,6 +25,18 @@
             {
               "name": "ESP32 Dev Board"
             },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
             {
               "name": "ESP32-S2 Dev Board"
             },
@@ -32,39 +44,44 @@
               "name": "ESP32-S3 Dev Board"
             },
             {
-              "name": "ESP32-C3 Dev Board"
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-master-d930a386-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp-x32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "16.2_20250324"
             },
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp-rv32",
+              "version": "2411"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "16.2_20250324"
             },
             {
               "packager": "esp32",
               "name": "openocd-esp32",
-              "version": "v0.11.0-esp32-20221026"
+              "version": "v0.12.0-esp32-20250226"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "4.5"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -75,18 +92,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.6",
+          "version": "3.2.0",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
-          "archiveFileName": "esp32-2.0.6.zip",
-          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
-          "size": "264579419",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.2.0/esp32-3.2.0.zip",
+          "archiveFileName": "esp32-3.2.0.zip",
+          "checksum": "SHA-256:d38b16fef6e519fc0d19bc5af0b39cdbed7dfc2ce69214c1971ded0e61ecd911",
+          "size": "25447136",
           "help": {
             "online": ""
           },
@@ -94,6 +116,18 @@
             {
               "name": "ESP32 Dev Board"
             },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
             {
               "name": "ESP32-S2 Dev Board"
             },
@@ -101,39 +135,44 @@
               "name": "ESP32-S3 Dev Board"
             },
             {
-              "name": "ESP32-C3 Dev Board"
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-2f7dcd86-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp-x32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp-rv32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "4.2.1"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
               "name": "openocd-esp32",
-              "version": "v0.11.0-esp32-20220706"
+              "version": "v0.12.0-esp32-20241016"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -144,18 +183,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.5",
+          "version": "3.2.0-RC2",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
-          "archiveFileName": "esp32-2.0.5.zip",
-          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
-          "size": "260916106",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.2.0-RC2/esp32-3.2.0-RC2.zip",
+          "archiveFileName": "esp32-3.2.0-RC2.zip",
+          "checksum": "SHA-256:fe6aacce1704f0782062d7d3fde24b40bf2591903de3351c86a55fa254a19e64",
+          "size": "25450856",
           "help": {
             "online": ""
           },
@@ -171,33 +215,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-d4aa25a3-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2411"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "4.2.1"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -208,18 +265,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.4",
+          "version": "3.2.0-RC1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
-          "archiveFileName": "esp32-2.0.4.zip",
-          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
-          "size": "259715595",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.2.0-RC1/esp32-3.2.0-RC1.zip",
+          "archiveFileName": "esp32-3.2.0-RC1.zip",
+          "checksum": "SHA-256:dc70818eaeb8a596c6857953fbc59ed10fbedd28a5d3e5405e6bbd050e49e46b",
+          "size": "25443000",
           "help": {
             "online": ""
           },
@@ -235,33 +297,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-bcb3c32d-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2411"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.3.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -272,18 +347,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.3-RC1",
+          "version": "3.1.3",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.3-RC1/esp32-2.0.3-RC1.zip",
-          "archiveFileName": "esp32-2.0.3-RC1.zip",
-          "checksum": "SHA-256:2995a67715086056cbece36e0b142d5dc9a7062165473fdc4ca47d38843c30eb",
-          "size": "246117997",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.3/esp32-3.1.3.zip",
+          "archiveFileName": "esp32-3.1.3.zip",
+          "checksum": "SHA-256:747160dbc81c6634c7bff9e8a57213e9982d52fe90d2a8f75a93a9f7b527defb",
+          "size": "25396700",
           "help": {
             "online": ""
           },
@@ -294,35 +374,51 @@
             {
               "name": "ESP32-S2 Dev Board"
             },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.3.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -333,18 +429,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.3",
+          "version": "3.1.2",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
-          "archiveFileName": "esp32-2.0.3.zip",
-          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
-          "size": "246542267",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.2/esp32-3.1.2.zip",
+          "archiveFileName": "esp32-3.1.2.zip",
+          "checksum": "SHA-256:17214f51a7b9de547baa777419d2b041e1f09cfb17adb33c18617a756190f9f6",
+          "size": "25396684",
           "help": {
             "online": ""
           },
@@ -360,33 +461,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.3.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -397,18 +511,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.2",
+          "version": "3.1.1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
-          "archiveFileName": "esp32-2.0.2.zip",
-          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
-          "size": "151846438",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.1/esp32-3.1.1.zip",
+          "archiveFileName": "esp32-3.1.1.zip",
+          "checksum": "SHA-256:e20982b2860eab4900ce16a0f2b7f9fc3ffb205e490dc933f625d53a5c9e8129",
+          "size": "25253828",
           "help": {
             "online": ""
           },
@@ -419,30 +538,51 @@
             {
               "name": "ESP32-S2 Dev Board"
             },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-cfea4f7c-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -453,52 +593,78 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.1-RC1",
+          "version": "3.1.0",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.1-RC1/esp32-2.0.1-RC1.zip",
-          "archiveFileName": "esp32-2.0.1-RC1.zip",
-          "checksum": "SHA-256:0ec6f42b42eef2c8f64d0d46bfc33ae1053aa90b24d87cbd9cf4e9812501d652",
-          "size": "118638415",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0/esp32-3.1.0.zip",
+          "archiveFileName": "esp32-3.1.0.zip",
+          "checksum": "SHA-256:0db044159e3fc737435b3f1d547bf85c60a33a175342c317d2a5c08c42977f80",
+          "size": "25225607",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-083aad99-v2"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -509,18 +675,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.1",
+          "version": "3.1.0-RC3",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
-          "archiveFileName": "esp32-2.0.1.zip",
-          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
-          "size": "148976301",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esp32-3.1.0-RC3.zip",
+          "archiveFileName": "esp32-3.1.0-RC3.zip",
+          "checksum": "SHA-256:60c8a9a0a4fba8533ce278ca1315425a55e2abf0c83c94d9fc0b8cafb50f6d3f",
+          "size": "24652789",
           "help": {
             "online": ""
           },
@@ -531,30 +702,51 @@
             {
               "name": "ESP32-S2 Dev Board"
             },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-a0f798cf"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.9.dev1"
             },
             {
               "packager": "esp32",
@@ -565,52 +757,78 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.0",
+          "version": "3.1.0-RC2",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
-          "archiveFileName": "esp32-2.0.0.zip",
-          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
-          "size": "139313137",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esp32-3.1.0-RC2.zip",
+          "archiveFileName": "esp32-3.1.0-RC2.zip",
+          "checksum": "SHA-256:374c3cd330d0dad1e1c39c00951c51c51cb5dd6964d9e92c84a2fe732061390d",
+          "size": "24606170",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-a0f798cf"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.8.1"
             },
             {
               "packager": "esp32",
@@ -621,52 +839,78 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.0-rc2",
+          "version": "3.1.0-RC1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc2/esp32-2.0.0-rc2.zip",
-          "archiveFileName": "esp32-2.0.0-rc2.zip",
-          "checksum": "SHA-256:f544d8aeecff3f841a92ef5a4c821b34174b676e4d23af27dc3d0697483d3275",
-          "size": "139373175",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esp32-3.1.0-RC1.zip",
+          "archiveFileName": "esp32-3.1.0-RC1.zip",
+          "checksum": "SHA-256:2b386cbd6e761b728864aa4c36fc435f6c5d3e52a5c12bfaeb0132e0dc354a6c",
+          "size": "24118034",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-466a392a"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
@@ -677,52 +921,88 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.0-rc1",
+          "version": "3.0.7",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/esp32-2.0.0-rc1.zip",
-          "archiveFileName": "esp32-2.0.0-rc1.zip",
-          "checksum": "SHA-256:5be36a7c9af6ff97f93e74d14e72a62459c89f5af75fa13c46a612aee757e22a",
-          "size": "139197301",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.7/esp32-3.0.7.zip",
+          "archiveFileName": "esp32-3.0.7.zip",
+          "checksum": "SHA-256:6b48f5bd889e55d7b93b95849dff77c6a5e4b9ee58c7298d7872d558a4d04931",
+          "size": "24546342",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
@@ -733,2997 +1013,7223 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.0-alpha1",
+          "version": "3.0.6",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esp32-2.0.0-alpha1.zip",
-          "archiveFileName": "esp32-2.0.0-alpha1.zip",
-          "checksum": "SHA-256:95e9e6b7ab6d245710f2deb9c911ab2f17c0ed0c6a6b20363ca8eae3f3006749",
-          "size": "136986408",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.6/esp32-3.0.6.zip",
+          "archiveFileName": "esp32-3.0.6.zip",
+          "checksum": "SHA-256:7b4d87d0a18e69cba81e7aa7e69f088dc7c4f6cc89a20adc256bf77c86992dc5",
+          "size": "24546256",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2020r3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2020r3"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff"
+              "name": "esp-xs2",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "3.0.0"
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "name": "mkfatfs",
-              "version": "0.3.6"
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.6",
+          "version": "3.0.5",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
-          "archiveFileName": "esp32-1.0.6.zip",
-          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
-          "size": "51126662",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.5/esp32-3.0.5.zip",
+          "archiveFileName": "esp32-3.0.5.zip",
+          "checksum": "SHA-256:6ead4c452e69146b8eb08bee5a77898acc75a0637e9fccb5bbf665385ddc28db",
+          "size": "24481707",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-33fbade6"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "3.0.0"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
-            }
-          ]
-        },
-        {
-          "name": "esp32",
-          "architecture": "esp32",
-          "version": "1.0.5",
-          "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
-          "archiveFileName": "esp32-1.0.5.zip",
-          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
-          "size": "49552769",
-          "help": {
-            "online": ""
-          },
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.5-rc7",
+          "version": "3.0.4",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc7/esp32-1.0.5-rc7.zip",
-          "archiveFileName": "esp32-1.0.5-rc7.zip",
-          "checksum": "SHA-256:f9866d188d6523dd24ca20edd41b6ebfc10e2e8670833d8f7fa793a3445a8bec",
-          "size": "47542392",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-3.0.4.zip",
+          "archiveFileName": "esp32-3.0.4.zip",
+          "checksum": "SHA-256:58fcd9b033be0358afbcbcf9a1d8eb216217f65f6b28f2e2cd739c7d016dda4f",
+          "size": "23937821",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-b6b4727c58"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "3.0.0"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
-            }
-          ]
-        },
-        {
-          "name": "esp32",
-          "architecture": "esp32",
-          "version": "1.0.5-rc6",
-          "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc6/esp32-1.0.5-rc6.zip",
-          "archiveFileName": "esp32-1.0.5-rc6.zip",
-          "checksum": "SHA-256:0fbeebd94fa3fce480398e6023c1e2f1228527ce628927c37bf32395d3ef5201",
-          "size": "47493370",
-          "help": {
-            "online": ""
-          },
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.5-rc5",
+          "version": "3.0.3",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esp32-1.0.5-rc5.zip",
-          "archiveFileName": "esp32-1.0.5-rc5.zip",
-          "checksum": "SHA-256:0921837f2b2a6a2b230ba0f1fd3cb9ae0833976e62cc5f41a0e8b6c4202b0b76",
-          "size": "47493370",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-3.0.3.zip",
+          "archiveFileName": "esp32-3.0.3.zip",
+          "checksum": "SHA-256:b4aa70711293955a9835ad641279dc7cd524aeb405f7d294afa05c2ece7ded45",
+          "size": "23920341",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-96-g2852398-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-dc859c1e67"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "3.0.0"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
-            }
-          ]
-        },
-        {
-          "name": "esp32",
-          "architecture": "esp32",
-          "version": "1.0.5-rc4",
-          "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc4/esp32-1.0.5-rc4.zip",
-          "archiveFileName": "esp32-1.0.5-rc4.zip",
-          "checksum": "SHA-256:007a6639a8d77e682575fb55c89f9600cbe0efe69b0b865c67004761c3754fe3",
-          "size": "47454089",
-          "help": {
-            "online": ""
-          },
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-96-g2852398-5.2.0"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.5-rc3",
+          "version": "3.0.2",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc3/esp32-1.0.5-rc3.zip",
-          "archiveFileName": "esp32-1.0.5-rc3.zip",
-          "checksum": "SHA-256:bb82ab4727c26e18503a8c02ad8e2dc1ba62113cee54e3f605b95e2de1053b65",
-          "size": "47478086",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-3.0.2.zip",
+          "archiveFileName": "esp32-3.0.2.zip",
+          "checksum": "SHA-256:bd90630fbe9e99f3bb3340c25a87574d5551dd2823849adbf285f8430b6884cf",
+          "size": "23893902",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-96-g2852398-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-bd2b9390ef"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "3.0.0"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
-            }
-          ]
-        },
-        {
-          "name": "esp32",
-          "architecture": "esp32",
-          "version": "1.0.5-rc2",
-          "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc2/esp32-1.0.5-rc2.zip",
-          "archiveFileName": "esp32-1.0.5-rc2.zip",
-          "checksum": "SHA-256:f89e8296b868f78dfed89c35ee59b5b78d34d369b94cf030c4e3ba5aa7b9d666",
-          "size": "47475953",
-          "help": {
-            "online": ""
-          },
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-96-g2852398-5.2.0"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.5-rc1",
+          "version": "3.0.1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc1/esp32-1.0.5-rc1.zip",
-          "archiveFileName": "esp32-1.0.5-rc1.zip",
-          "checksum": "SHA-256:e1c2c85943a9d1b6851488f07474c3016f516a9294d5b7c5b747e443fc52b91f",
-          "size": "47470210",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-3.0.1.zip",
+          "archiveFileName": "esp32-3.0.1.zip",
+          "checksum": "SHA-256:b7169d0dd51b64e450a7c09fafb7a4782820a9bc745f7b1e4618316440db0930",
+          "size": "23895257",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-96-g2852398-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "2.6.1"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "mkspiffs",
-              "version": "0.2.3"
-            }
-          ]
-        },
-        {
-          "category": "ESP32",
-          "name": "esp32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
-          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
-          "help": {
-            "online": ""
-          },
-          "version": "1.0.4",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.4.zip",
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
-          ],
-          "size": "36853332"
+          ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-3.0.0.zip",
+          "archiveFileName": "esp32-3.0.0.zip",
+          "checksum": "SHA-256:0960cf786992e0e3770d8c1e1979eaf01bd0ac9209b24fb00948cf93d43cf95c",
+          "size": "23891610",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.4-rc1/esp32-1.0.4-rc1.zip",
-          "checksum": "SHA-256:42d4c03869575bcb875a081a0c9ddd9365aaef63715551946635b00a4be80860",
-          "version": "1.0.4-rc1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.4-rc1.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "36867561",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
-          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
-          "version": "1.0.3",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.3.zip",
-          "boards": [
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "size": "36811826",
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
-          ],
-          "name": "esp32"
+          ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc3",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc3/esp32-3.0.0-rc3.zip",
+          "archiveFileName": "esp32-3.0.0-rc3.zip",
+          "checksum": "SHA-256:87ff8e3499c8c2112c3d6faf0017998e64135c0f3553088d76be6f8b6a5af1ef",
+          "size": "23906520",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3-rc3/esp32-1.0.3-rc3.zip",
-          "checksum": "SHA-256:4db3cb87369ce2e5d81320451fc2c18b182a35ffb79a4e89f2b5eb6600e5a261",
-          "version": "1.0.3-rc3",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.3-rc3.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "36833259",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3-rc2/esp32-1.0.3-rc2.zip",
-          "checksum": "SHA-256:ab9385ab70cc4e7d1636cd99a273608fbb2584592be35999f7206e77506acb30",
-          "name": "esp32",
-          "version": "1.0.3-rc2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.3-rc2.zip",
-          "size": "36827206",
-          "toolsDependencies": [
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc2",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc2/esp32-3.0.0-rc2.zip",
+          "archiveFileName": "esp32-3.0.0-rc2.zip",
+          "checksum": "SHA-256:a5953dbc8ce425ce44fde6d66d23b056bc2569d96e177e2fa8d5c3161f87eb40",
+          "size": "23887041",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3-rc1/esp32-1.0.3-rc1.zip",
-          "checksum": "SHA-256:eb2461109db6fe8d5d6a13a8b27fb601ee9fa59b3b0a48a587f3b0c13ca9604e",
-          "version": "1.0.3-rc1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.3-rc1.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "31167549",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
-          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
-          "name": "esp32",
-          "version": "1.0.2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.2.zip",
-          "size": "31174160",
-          "toolsDependencies": [
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc1",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-3.0.0-rc1.zip",
+          "archiveFileName": "esp32-3.0.0-rc1.zip",
+          "checksum": "SHA-256:d4d96e1dc0ca687d2bcdde9836bcc3664cfa868cb324b7b737005efe0b050f3a",
+          "size": "23944015",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2-rc2/esp32-1.0.2-rc2.zip",
-          "checksum": "SHA-256:3e61611d206849cd00fc325c4ec6b2bf5111013a09961f4d000a026fac7d6f87",
-          "version": "1.0.2-rc2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.2-rc2.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
-            }
-          ],
-          "size": "31193529",
-          "toolsDependencies": [
+              "name": "ESP32-S2 Dev Board"
+            },
             {
-              "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2-rc1/esp32-1.0.2-rc1.zip",
-          "checksum": "SHA-256:b03bb22da11c8380ac47915fc2589f8a15ae16daa3065c8cd2a3265e9a12405d",
-          "name": "esp32",
-          "version": "1.0.2-rc1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.2-rc1.zip",
-          "size": "31337487",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-3662303f312"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
-            {
-              "name": "ESP32 Dev Module"
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
-              "name": "WEMOS LoLin32"
-            }
-          ]
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
-          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
-          "version": "1.0.1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1.zip",
-          "boards": [
-            {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
-            {
-              "name": "WEMOS LoLin32"
-            }
-          ],
-          "size": "31273425",
-          "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "2.6.0",
-              "name": "esptool_py"
+              "name": "esp-rv32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1-rc4/esp32-1.0.1-rc4.zip",
-          "checksum": "SHA-256:d103d6167ce7f6f70635f2fc3549edc00f08f3e4c8633e3a3f2fa48c759c3304",
-          "name": "esp32",
-          "version": "1.0.1-rc4",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1-rc4.zip",
-          "size": "31293432",
-          "toolsDependencies": [
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
               "packager": "esp32",
-              "version": "2.6.0",
-              "name": "esptool_py"
+              "name": "esptool_py",
+              "version": "4.6"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-alpha3",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-3.0.0-alpha3.zip",
+          "archiveFileName": "esp32-3.0.0-alpha3.zip",
+          "checksum": "SHA-256:02b94c17f065ed5dfef765af7ed7e11f2c7fafa2bd82b00fb7d07cdb2ad78509",
+          "size": "21114660",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1-rc3/esp32-1.0.1-rc3.zip",
-          "checksum": "SHA-256:7b3ff66a4a8de4f183ba429bc4f3436f62b07787f86a0c07b1e058a0877262ab",
-          "version": "1.0.1-rc3",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1-rc3.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "31291832",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-3662303f31"
             },
             {
               "packager": "esp32",
-              "version": "2.6.0",
-              "name": "esptool_py"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1-rc2/esp32-1.0.1-rc2.zip",
-          "checksum": "SHA-256:c5c27d82f56c8126494b603e5cc3ac05aee43f930f3429641587804598fc0b78",
-          "name": "esp32",
-          "version": "1.0.1-rc2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1-rc2.zip",
-          "size": "29455599",
-          "toolsDependencies": [
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
               "packager": "esp32",
-              "version": "2.6.0",
-              "name": "esptool_py"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20221002"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20221002"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.17",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.17/esp32-2.0.17.zip",
+          "archiveFileName": "esp32-2.0.17.zip",
+          "checksum": "SHA-256:1f8658d4b18a8001ce782142ad08164af2991d70b83a147c3437a6ee30a9b225",
+          "size": "254658377",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1-rc1/esp32-1.0.1-rc1.zip",
-          "checksum": "SHA-256:619e30fd3ec8cf2bc3051ee4e6d07db42942bfa5c0b04456834ad49154d38c55",
-          "version": "1.0.1-rc1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1-rc1.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "29219094",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "2.5.0",
-              "name": "esptool"
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
-          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
-          "name": "esp32",
-          "version": "1.0.0",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0.zip",
-          "size": "26381887",
-          "toolsDependencies": [
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
               "packager": "esp32",
-              "version": "2.3.1",
-              "name": "esptool"
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.16",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.16/esp32-2.0.16.zip",
+          "archiveFileName": "esp32-2.0.16.zip",
+          "checksum": "SHA-256:6615fd16fd6d3ee2fa7ca2dd40a4f65220eddf094a88b7cee2141a0c077987bc",
+          "size": "254657760",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0-rc4/esp32-1.0.0-rc4.zip",
-          "checksum": "SHA-256:db455356a07b84ab6b5de33e9836e866863c0cc7c8e4c770cf112e6705c392e5",
-          "version": "1.0.0-rc4",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0-rc4.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "26394170",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "2.3.1",
-              "name": "esptool"
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0-rc3/esp32-1.0.0-rc3.zip",
-          "checksum": "SHA-256:58bd0314e41841b6e8163a18c69f9f0c97dfe79cdbef1e16466dff42a81199de",
-          "name": "esp32",
-          "version": "1.0.0-rc3",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0-rc3.zip",
-          "size": "26387466",
-          "toolsDependencies": [
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
               "packager": "esp32",
-              "version": "2.3.1",
-              "name": "esptool"
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.15",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip",
+          "archiveFileName": "esp32-2.0.15.zip",
+          "checksum": "SHA-256:2219c1636264f55e19b2a5e7f41c81b669b1355017b15ee31773c85674b3e9bb",
+          "size": "254657764",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0-rc2/esp32-1.0.0-rc2.zip",
-          "checksum": "SHA-256:87e7d4ed3b4cc0f07d5808f4ae0fd06f93892ef4cbb828f695d29f9df13876c4",
-          "version": "1.0.0-rc2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0-rc2.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "26383609",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "2.3.1",
-              "name": "esptool"
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
-          ],
-          "name": "esp32"
+          ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.14",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.14/esp32-2.0.14.zip",
+          "archiveFileName": "esp32-2.0.14.zip",
+          "checksum": "SHA-256:77c71eba520c97ab30161eb2f9c6a46b019e48d13936244b18f6ad4dbecf0a58",
+          "size": "252506057",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0-rc1/esp32-1.0.0-rc1.zip",
-          "checksum": "SHA-256:64fbe8680f11398a813d6d77bb287559d0adb8662bfa2b5ec77122c7e5ba3842",
-          "version": "1.0.0-rc1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0-rc1.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "26383609",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "da31d9d2",
-              "name": "esptool"
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        }
-      ],
-      "tools": [
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
-              "size": "94397702"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
-              "size": "90684219"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
-              "size": "89954866"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
-              "size": "96354023"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230419"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
-              "size": "101712946"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
-              "size": "93104016"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
-              "size": "118610020"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
-              "size": "121846722"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.13",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.13/esp32-2.0.13.zip",
+          "archiveFileName": "esp32-2.0.13.zip",
+          "checksum": "SHA-256:ee4c277bac0eecb7ca8853780da9d49b4e260926059cf6a9f9bac1923059de0c",
+          "size": "250665913",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
-              "size": "94397702"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
-              "size": "90684219"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
-              "size": "89954866"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
-              "size": "96354023"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
-              "size": "101712946"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
-              "size": "118610020"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
-              "size": "121846722"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
-              "size": "90569312"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
-              "size": "86838362"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
-              "size": "86187540"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
-              "size": "92580267"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
-              "size": "97807647"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
-              "size": "116464819"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
-              "size": "119511910"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.12",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.12/esp32-2.0.12.zip",
+          "archiveFileName": "esp32-2.0.12.zip",
+          "checksum": "SHA-256:9a4f844ca67812c547a9635cdb0dd2c347cae7a3e855f95f9d490b2f8d340dbe",
+          "size": "250664387",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
-              "size": "90565318"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
-              "size": "86860292"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
-              "size": "86183421"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
-              "size": "92582250"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
-              "size": "97808961"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
-              "size": "112578260"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
-              "size": "115278695"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r1",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
-              "size": "86361217"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
-              "size": "84520407"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
-              "size": "88375391"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
-              "size": "93357296"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
-              "size": "105603626"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2020r3",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.11",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.11/esp32-2.0.11.zip",
+          "archiveFileName": "esp32-2.0.11.zip",
+          "checksum": "SHA-256:d15386308dc72f94816ce80b5508af999f2fd0d88eb5e1ffba48316ab0b9c5d6",
+          "size": "250401265",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2020r3-win32.zip",
-              "checksum": "SHA-256:81cecd5493a3fcf2118977f3fd60bd0a13a4aeac8fe6760d912f96d2c34fab66",
-              "size": "104226379"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2020r3-macos.tar.gz",
-              "checksum": "SHA-256:6845f786303b26c4a55ede57487ba65bd25737232fe6104be03f25bb62f4631c",
-              "size": "92424226"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:674080a12f9c5ebe5a3a5ce51c6deaeffe6dfb06d6416233df86f25b574e9279",
-              "size": "85731226"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-i686.tar.gz",
-              "checksum": "SHA-256:076b7e05304e26aa6ec105c9e0dc74addca079bc2cae6e42ee7575c5ded29877",
-              "size": "87715092"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-armel.tar.gz",
-              "checksum": "SHA-256:6771e011dffa2438ef84ff3474538b4a69df8f9d4cfae3b3707ca31c782ed7db",
-              "size": "83888892"
+              "name": "Arduino Nano ESP32"
             }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "1.22.0-97-gc752ad5-5.2.0",
-          "systems": [
+          ],
+          "toolsDependencies": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
-              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
-              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
-              "size": "125747216"
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
-              "size": "50525386"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
-              "size": "44225380"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
-              "size": "45575521"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
-              "size": "50657803"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
-              "size": "50657803"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "1.22.0-96-g2852398-5.2.0",
-          "systems": [
-            {
-              "host": "i686-mingw32",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-96-g2852398-5.2.0.zip",
-              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-96-g2852398-5.2.0.zip",
-              "checksum": "SHA-256:8e2a2e25d4714ae6e4b992be1b1c261caed5b523b0cc0887b6749229c9febbb0",
-              "size": "125810912"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-macos-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "checksum": "SHA-256:6aeae9547f0cd7e442d1df21821cea8b15d0a6ce349bbd86466e2997b738a99c",
-              "size": "50520203"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "checksum": "SHA-256:798a8638f11ad37f41b9640582f869c61ffb4da6d932279fde94a2b636ad2dac",
-              "size": "44211883"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "checksum": "SHA-256:4eea601188aa8f3c3d45d7936ab4c0fabb75b4970dccf7a061de47dba49e377f",
-              "size": "45563578"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "checksum": "SHA-256:abfe06522f7c3479f6c7434c4bf926c50fa2039362b96abe95fa1f05ec519a9b",
-              "size": "50670980"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-96-g2852398-5.2.0.tar.gz",
-              "checksum": "SHA-256:abfe06522f7c3479f6c7434c4bf926c50fa2039362b96abe95fa1f05ec519a9b",
-              "size": "50670980"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "version": "1.22.0-80-g6c4433a-5.2.0",
-          "name": "xtensa-esp32-elf-gcc",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.10",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.10/esp32-2.0.10.zip",
+          "archiveFileName": "esp32-2.0.10.zip",
+          "checksum": "SHA-256:6028cb623c838723c41000869963d95f7cb811d58643133068eed31c03c2d7c0",
+          "size": "250401273",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
-              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
-              "host": "i686-mingw32",
-              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
-              "size": "125719261"
+              "name": "ESP32 Dev Board"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "46517409"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "44219107"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
-              "host": "i686-pc-linux-gnu",
-              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "45566336"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
-              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
-              "size": "50655584"
+              "name": "Arduino Nano ESP32"
             }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+          ],
+          "toolsDependencies": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
-              "size": "67849099"
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
-              "size": "64154532"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
-              "size": "63448105"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
-              "size": "69656104"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
-              "size": "75154138"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
-              "size": "66457613"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
-              "size": "82338511"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
-              "size": "85579252"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.9",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esp32-2.0.9.zip",
+          "archiveFileName": "esp32-2.0.9.zip",
+          "checksum": "SHA-256:37072185026db3cdc0ed4b6fb12840d7f41571a16c60eec97bec2a4abec8dcee",
+          "size": "278964028",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.8",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip",
+          "archiveFileName": "esp32-2.0.8.zip",
+          "checksum": "SHA-256:2c5daa3ce7456e752fb8d8a35b0b6b2eb8e494032cba57569ba12dd53eb235f2",
+          "size": "278963636",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.7",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
+          "archiveFileName": "esp32-2.0.7.zip",
+          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
+          "size": "278966011",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.6",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
+          "archiveFileName": "esp32-2.0.6.zip",
+          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
+          "size": "264579419",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20220706"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.5",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
+          "archiveFileName": "esp32-2.0.5.zip",
+          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
+          "size": "260916106",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.4",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
+          "archiveFileName": "esp32-2.0.4.zip",
+          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
+          "size": "259715595",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.3",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
+          "archiveFileName": "esp32-2.0.3.zip",
+          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
+          "size": "246542267",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.2",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
+          "archiveFileName": "esp32-2.0.2.zip",
+          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
+          "size": "151846438",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.1",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
+          "archiveFileName": "esp32-2.0.1.zip",
+          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
+          "size": "148976301",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.0",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
+          "archiveFileName": "esp32-2.0.0.zip",
+          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
+          "size": "139313137",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.6",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
+          "archiveFileName": "esp32-1.0.6.zip",
+          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
+          "size": "51126662",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.5",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
+          "archiveFileName": "esp32-1.0.5.zip",
+          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
+          "size": "49552769",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
+          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.4",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.4.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36853332"
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
+          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.3",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.3.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36811826"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
+          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
+          "version": "1.0.2",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.2.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ],
+          "size": "31174160",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "name": "esp32"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
+          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
+          "name": "esp32",
+          "version": "1.0.1",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.1.zip",
+          "size": "31273425",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.0",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
+          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
+          "name": "esp32",
+          "version": "1.0.0",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.0.zip",
+          "size": "26381887",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.3.1",
+              "name": "esptool"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        }
+      ],
+      "tools": [
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-master-d930a386-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-2f7dcd86-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-d4aa25a3-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-bcb3c32d-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-489d7a2b-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-cfea4f7c-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-083aad99-v2",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-a0f798cf",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-632e0c2a",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-33fbade6",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-466a392a",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-b6b4727c58",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-dc859c1e67",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-bd2b9390ef",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-442a798083",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-3662303f312",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-3662303f31",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2411",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b1859df334a85541ae746e1b86439f59180d87f8cf1cc04c2e770fadf9f006e9",
+              "size": "323678089"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7ff023033a5c00e55b9fc0a0b26d18fb0e476c24e24c5b0459bcb2e05a3729f1",
+              "size": "320064691"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:bb11dbf3ed25d4e0cc9e938749519e8236cfa2609e85742d311f1d869111805a",
+              "size": "319454139"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:5ac611dca62ec791d413d1f417d566c444b006d2a4f97bd749b15f782d87249b",
+              "size": "328335914"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:15b3e60362028eaeff9156dc82dac3f1436b4aeef3920b28d7650974d8c34751",
+              "size": "336215844"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:45c475518735133789bacccad31f872318b7ecc0b31cc9b7924aad880034f0bf",
+              "size": "318797396"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8",
+              "size": "382457717"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028",
+              "size": "386316009"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2405",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bce77e8480701d5a90545369d1b5848f6048eb39c0022d2446d1e33a8e127490",
+              "size": "208911713"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7c9e3c1adc733d042ed87b92daa1d6396e1b441c1755f1fa14cb88855719ba88",
+              "size": "202519931"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d6955e8ea6af91574bf9213b92f32ca09eb8640103446b7fa19a63cfeeec5421",
+              "size": "202206516"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3666ee74ecb693ee6488f11469802630a7b0d32608184045a4f35cb413f59e3d",
+              "size": "213304863"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:948cf57b6eecc898b5f70e06ad08ba88c08b627be570ec631dfcd72f6295194a",
+              "size": "221357024"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:6f03fdf0cc14a7f3900ee59977f62e8626d8b7c208506e52f1fd883ac223427a",
+              "size": "199689745"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:d6b227c50e3c8e21d62502b3140e5ab74a4cb502c2b4169c36238b9858a8fb88",
+              "size": "266042967"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:155ee97b531236e6a7c763395c68ca793e55e74d2cb4d38a23057a153e01e7d0",
+              "size": "269831985"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "16.2_20250324",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27b58ab12248e04277c4fdc74038cf0a001d5142df091ab94939ad35053738fd",
+              "size": "36361058"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:24f85aa778e1605098a13ff7bd29d5760767faf012705c8915cb08b32cad0206",
+              "size": "35442104"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:c73e43038b6d50374cd0ee714370ce748189e0b00404d581babd2bb0115c4785",
+              "size": "31260410"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:dc7b8aad0fb1c6a1abfdb8dff4f08221ea08a0f28fb837f181969ac1174d4dc6",
+              "size": "35067894"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:398c429cfe696bad01d636c5488cadc87b20471c1b5ed02c60eee5ef2a775c93",
+              "size": "54992785"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:b6d85c0d76d653bb55f9d06b0cd509eab7e99db541c88b8c849c64827e9d74a9",
+              "size": "43538967"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:f748d6b65fdf66733b82e12d0d85a05e3134122416280379df129cfebe2aa4b2",
+              "size": "32189419"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:e970fc3ec8a1d0acee2432e91e0a01b348613a0425aacfa981b2fc505fe920cc",
+              "size": "32290997"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "14.2_20240403",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e",
+              "size": "31010320"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66",
+              "size": "30954580"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d",
+              "size": "28697281"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0",
+              "size": "29890994"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9",
+              "size": "44446611"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1",
+              "size": "37021423"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2",
+              "size": "26302466"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e",
+              "size": "28366035"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20231023",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d0743ec43cd92c35452a9097f7863281de4e72f04120d63cfbcf9d591a373529",
+              "size": "36942094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bc1fac0366c6a08e26c45896ca21c8c90efc2cdd431b8ba084e8772e15502d0e",
+              "size": "37134601"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:25efc51d52b71f097ccec763c5c885c8f5026b432fec4b5badd6a5f36fe34d04",
+              "size": "34579556"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e0af0b3b4a6b29a843cd5f47e331a966d9258f7d825b4656c6251490f71b05b2",
+              "size": "35676578"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bd146fd99a52b2d71c7ce0f62b9e18f3423d6cae7b2b2c954046b0dd7a23142f",
+              "size": "52863941"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:5edc76565bf9d2fadf24e443ddf3df7567354f336a65d4af5b2ee805cdfcec24",
+              "size": "33504923"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:ea4f3ee6b95ad1ad2e07108a21a50037a3e64a420cdeb34b2ba95d612faed898",
+              "size": "31068749"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:13bb97f39173948d1cfb6e651d9b335ea9d52f1fdd0dda1eda3a2d23d8c63644",
+              "size": "33514906"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20221002",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d056f2435ef05cccadac5d8fcefa3efd8f8c456c3d853f5eba1edb501acfe4f7",
+              "size": "32006939"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7fc9674cc4f4c5e7bc94ca05bc5deaaa4c4bbcc972a9caee6fcd6a872c804c02",
+              "size": "32227425"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:68118ff36e9dd2284d92a7a529d0e2a8d20f6426036a0736fa1147935614ece2",
+              "size": "29960020"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:cf6cac8ed70726d390d30713d537754544872715e1b70a8a4a28b5dc616193b9",
+              "size": "30877187"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:417fcf8d1b596b9481603d6987def1d6cfcebdb9739f53940887334a7de855fa",
+              "size": "45941853"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:95d6ed2311d6a72bf349e152d096aeeb151f9c5989bfa3120facb1c99e879196",
+              "size": "27596410"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:642b6a135c38ff1d5e54ad2c29469b769f8e1b101dab363d06101b02284bb979",
+              "size": "27387730"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:2d958570ff6aa69ed32cbb076cbaf303349a26b3301a7c4628be8d7ad39cf9f1",
+              "size": "29561472"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "11.2_20220823",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b5f7cc3e4b5a58db655754083ed9652e4953e71c3b4922fb624e7a034ec24a64",
+              "size": 26947336
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:816acfae38b6b443f4f1590395f68f079243539259d19c7772ae6416c6519444",
+              "size": 27134508
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4dd1bace0633196fddfdcef3cebcc4bbfce22f5a0d2d1e3d618f3d8a6cbfcacc",
+              "size": 25205239
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27744d09d171be2f55ec15fa7f2d7f8ff94d33f7e130d24ebe082cb6c438618b",
+              "size": 25978028
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:1432faa12d7301133f6ee654d60751b57adcc6cf323ee1ecc393f06f0225eff4",
+              "size": 38386785
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d0b542ef070ea72857f9cf554f176a0a9d868cd59e05ac293ad39402bcc5277d",
+              "size": 21671964
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1678b06aa80b1d689d05548056635efde5b73b98f2c3de5d555bcfc6f374c5d0",
+              "size": 23241302
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:7060df4b6aa133e282147c3651d50222d677d6a0fff92979c500353b099a3f41",
+              "size": 25135265
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2411",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a16942465d33c7f0334c16e83bc6feb62e06eeb79cf19099293480bb8d48c0cd",
+              "size": "593721156"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:22486233d0e0fd58a54ae453b701f195f1432fc6f2e17085b9d6c8d5d9acefb7",
+              "size": "587879927"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:27a72d5d96cdb56dae2a1da5dfde1717c18a8c1f9a1454c8e34a8bd34abe662d",
+              "size": "586531522"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b7bd6e4cd53a4c55831d48e96a3d500bfffb091bec84a30bc8c3ad687e3eb3a2",
+              "size": "597070471"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:5f8b571e1aedbe9f856f3bdeca6600cd5510ccff1ca102c4f001421eda560585",
+              "size": "602343061"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:a7276042a7eb2d33c2dff7167539e445c32c07d43a2c6827e86d035642503e0b",
+              "size": "578521565"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7",
+              "size": "672055172"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c",
+              "size": "677812937"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2405",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e7fbfffbb19dcd3764a9848a141bf44e19ad0b48e0bd1515912345c26fe52fba",
+              "size": "294346758"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a178a895b807ed2e87d5d62153c36a6aae048581f527c0eb152f0a02b8de9571",
+              "size": "288374597"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4a2f176d0f5bc8a70645975e2a08ea94145fb69b7225c5cdcbd6024a4836aaf5",
+              "size": "287737495"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7a6f02f1b2effafb18600bbf602818f6923fd320f000fb8659f34acbfda8812f",
+              "size": "299138540"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:a193b4f025d0d836b0a9d9cbe760af1c53e53af66fc332fe98952bc4c456dd9a",
+              "size": "305025700"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7082dd2e2123dea5609a24092d19ac6612ae7e219df1d298de6b2f64cb4af0df",
+              "size": "285458443"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:590bfb10576702639825581cc00c445da6e577012840a787137417e80d15f46d",
+              "size": "366573064"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:413eb9f6adf8fdaf25544d014c850fc09eb38bb93a2fc5ebd107ab1b0de1bb3a",
+              "size": "369820297"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:1eb0d65990547ee9706b90406600cbc3638814d5feb7c1f7b44bb5416478a5bd",
+              "size": "257615266"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:921fcdc170c7fe5d6a0a30470ed1875c8926d910c19739fc950c8d1836e4c1c5",
+              "size": "253094184"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:f66e06312b58251c2121c1b1df1102565708573b86b2a9fe0c03ea1b0e9a7511",
+              "size": "252558021"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:8abcac0331ef8973d1c705e77523364ebec7e98b37640d4a1d036912f3cbe946",
+              "size": "261248375"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:76a334bc75a4e3891c222c84d7968817f2d0699d2976fc2a1658e56395283bec",
+              "size": "268987133"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:f30571945b257a10a26901bba3c5892e07c192aacf9ed6e8fcd11ca36ed827d2",
+              "size": "252159713"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:a5dfbb6dbf6fc6c6ea9beb2723af059ba3c5b2c86c2f0dc3b21afdc7bb229bf5",
+              "size": "324863847"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9deae9e0013b2f7bbf017f9c8135755bfa89522f337c7dca35872bf12ec08176",
+              "size": "328092732"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "16.2_20250324",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:f9b172d8d72d0a1e2b0b80127df29263a0cb0d0c4e998e09c27031bfac09f3ec",
+              "size": "36528201"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68bb6a85fb58b8a738f799e8fb4fa1f56cfeffc4de803ceb03c8a33cb2cd919d",
+              "size": "35643464"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:673038ab9fb2b7391ff9252824194e3b9e40668efe9ce54d1e582a9d6c51f04a",
+              "size": "32154574"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:62f05d5fe08145b25e423dd0b3f1ae260be99abf5462b8cfd918bf2231e26e30",
+              "size": "35410891"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:63ae12cfbab648e2d2ca7a700a0c615c4f36a6fbe6876c11ba108115ee0d60f2",
+              "size": "55359246"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:bfbe49774f839020cef988537da0a06896dfe4a382674c62285361ed9bd4aee3",
+              "size": "43926592"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:e8b84eec990ff514729b3770edf2b543f36670f43663ce0c3b624fb4884812ca",
+              "size": "32914955"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:37c79178900c19ca7487c26af4b5ad6b0d3f34683bd0e9c2ddd39038c999e429",
+              "size": "32667353"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "14.2_20240403",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13",
+              "size": "30707431"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55",
+              "size": "30824065"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7",
+              "size": "29000575"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2",
+              "size": "29947521"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9",
+              "size": "44196117"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320",
+              "size": "36794404"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730",
+              "size": "26486295"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317",
+              "size": "27942579"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20231023",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2c78b806be176b1e449e07ff83429d38dfc39a13f89a127ac1ffa6c1230537a0",
+              "size": "36630145"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:33f80117c8777aaff9179e27953e41764c5c46b3c576dc96a37ecc7a368807ec",
+              "size": "36980143"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:292e6ec0a9381c1480bbadf5caae25e86428b68fb5d030c9be7deda5e7f070e0",
+              "size": "34950318"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68a25fbcfc6371ec4dbe503ec92211977eb2006f0c29e67dbce6b93c70c6b7ec",
+              "size": "35801607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:322c722e6c12225ed8cd97f95a0375105756dc5113d369958ce0858ad1a90257",
+              "size": "52618688"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c2224b3a8d02451c530cf004c29653292d963a1b4021b4b472b862b6dbe97e0b",
+              "size": "33149392"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:4b42149a99dd87ee7e6dde25c99bad966c7f964253fa8f771593d7cef69f5602",
+              "size": "31635103"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:728231546ad5006d34463f972658b2a89e52f660a42abab08a29bedd4a8046ad",
+              "size": "33400816"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20221002",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:f0cf0821eaac7e8cf2c63b14f2b69d612f4f8c266b29d02d5547b7d7cbbd0e11",
+              "size": "32035173"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6812344dfb5c50a81d2fd8354463516f0aa5f582e8ab406cbaeca8722b45fa94",
+              "size": "32362642"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:b73042b8e1df5a3fc8008ec3cd000ef579f155d72a66c6ade1d48906d843e738",
+              "size": "30580290"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3f07a1b8dc87127a1a6bec6fbace4f8daca44755356f0692e9a5d4c8c4bfd81d",
+              "size": "31309798"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bb139229f9a4998cab9cfb617d3ecb05b77cbfa9a3a59c54969035f1b4007487",
+              "size": "46120661"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:f6513b57f28245497f9c39a201f3f6444d4180e16b39765c629e01036286c0e6",
+              "size": "27662484"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:8287fa2891e8d032e8283210048d653705791cda31504369418288d3e4753dd6",
+              "size": "27839143"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9debae1135df8f5868a9d945468f0480cdaab25f77ead6a55cc85142c4487abd",
+              "size": "29404989"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "11.2_20220823",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6bf5b5d2d407e074af2a74fc826764934ac1625a1751c52fbc0d4d7772061f8f",
+              "size": 26799809
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e54ef67cdb5724fc2da8f0487f19b2c83c08b560fff317f5ffd98fbb230b397a",
+              "size": 27021672
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:86772c6aee8a05b2c75a6b04e9da630e35e8415b64da8ccde92a5fb2d3c7fcf4",
+              "size": 25532577
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3463be3e24182b7f1bd0fb232020534445b2d0ea0e7093c1b4f4da102b3baf52",
+              "size": 26188698
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:a9db1811ebb9271134eba2f7c303fc2587bd4b2a1ae33cd05ff2605cd2fb30d2",
+              "size": 38397584
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c94fb6d726b8d97e65e23237f5126a41343bca8f22a0414df5f0e6777e36f51c",
+              "size": 21593613
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:20cdee8a1c01428363ef02f4cc8035c65508d6b43560c525733eae94b7c7bb50",
+              "size": 23436802
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:add72366485b784b66837ce263548980f1df144d0954c42d75a81f6acbd43cac",
+              "size": 24802315
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20250226",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-amd64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:914c726342ba5828e53f41aa454f01f317c42d8e6772d3d874593a6960fc4729",
+              "size": "2414924"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-arm64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:c44ee99a9209c0234dbbcec86339fd685f5c61a763b29c33eba590bf62db2296",
+              "size": "2293923"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-armel-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:21ab6af3cf05f9290f4d59f1f381d5094dd2755fc528d3d2feb9334348fc0d8d",
+              "size": "2436071"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-macos-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:0b5751699e93b6d101381611c96216ddff8c7dfd16425c610993fa27993f9a0a",
+              "size": "2525387"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-macos-arm64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:8bffbbb594b27a4971a3922792135f8c836fff26991f7f450094386920263531",
+              "size": "2568843"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-win32-0.12.0-esp32-20250226.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20250226.zip",
+              "checksum": "SHA-256:aaf3c955bb4eb47805a1ba108dfd07a8a56ce720cb40194a354362b5f0961230",
+              "size": "2960226"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-win64-0.12.0-esp32-20250226.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20250226.zip",
+              "checksum": "SHA-256:79baf35325117a53093b62f6b9bee677dd12275d7066e3f8a274d2a80e986b6e",
+              "size": "2960225"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20241016",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:e82b0f036dc99244bead5f09a86e91bb2365cbcd1122ac68261e5647942485df",
+              "size": "2398717"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:8f8daf5bd22ec5d2fa9257b0862ec33da18ee677e023fb9a9eb17f74ce208c76",
+              "size": "2271584"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:bc9c020ecf20e2000f76cffa44305fd5bc44d2e688ea78cce423399d33f19767",
+              "size": "2414206"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:02a2dffe801a2d005fa9e614d80ff8173395b2cb0b5d3118d0229d094a9946a7",
+              "size": "2508089"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:c382f9e884d6565cb6089bff5f200f4810994667d885f062c3d3c5625a0fa9d6",
+              "size": "2552569"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:3b5d615e0a72cc771a45dd469031312d5881c01d7b6bc9edb29b8b6bda8c2e90",
+              "size": "2946244"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:5e7b2fd1947d3a8625f6a11db7a2340cf2f41ff4c61284c022c7d7c32b18780a",
+              "size": "2946244"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240821",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:f8c68541fa38307bc0c0763b7e1e3fe4e943d5d45da07d817a73b492e103b652",
+              "size": "2373094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:4d6e263d84e447354dc685848557d6c284dda7fe007ee451f729a7edfa7baad7",
+              "size": "2251272"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:9d45679f2c4cf450d5e2350047cf57bb76dde2487d30cebce0a72c9173b5c45b",
+              "size": "2390074"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:565c8fabc5f19a6e7a0864a294d74b307eec30b9291d16d3fc90e273f0330cb4",
+              "size": "2485320"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:68c5c7cf3d15b9810939a5edabc6ff2c9f4fc32262de91fc292a180bc5cc0637",
+              "size": "2530336"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:463fc2903ddaf03f86ff50836c5c63cc696550b0446140159eddfd2e85570c5d",
+              "size": "2916409"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:550f57369f1f1f6cc600b5dffa3378fd6164d8ea8db7c567cf41091771f090cb",
+              "size": "2916408"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240318",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:cf26c5cef4f6b04aa23cd2778675604e5a74a4ce4d8d17b854d05fbcb782d52c",
+              "size": "2252682"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:9b97a37aa2cab94424a778c25c0b4aa0f90d6ef9cda764a1d9289d061305f4b7",
+              "size": "2132904"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b7e82776ec374983807d3389df09c632ad9bc8341f2075690b6b500319dfeaf4",
+              "size": "2271761"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b16c3082c94df1079367c44d99f7a8605534cd48aabc18898e46e94a2c8c57e7",
+              "size": "2365588"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:534ec925ae6e35e869e4e4e6e4d2c4a1eb081f97ebcc2dd5efdc52d12f4c2f86",
+              "size": "2406377"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230921",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:61e38e0a13a5c1664624ec1c397d7f7d6868554b0d345d3fb1f7294cce38cc4b",
+              "size": "2193783"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6430315dc1b926541c93cef63d2b08982543ad3f9fe6e0d7107c8a518ef20432",
+              "size": "2062058"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:5df16d8a91f013a547f6b3b914c655a9d267996a3b6503031b335ac04a4f8d15",
+              "size": "2206666"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:0a4f764934f488af18cdac2a0d152dd36b4870f3bec1a2d4e25b6b3b7a5258a0",
+              "size": "2305832"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6dce89048f642eb0559a915b6e514f90feb2a95afe21b84f0b0ebf2b27824816",
+              "size": "2341406"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230419",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:5144e7516cd75a2152b35ecae0a400f7d3d4424c2488fbacc49433564f54c70d",
+              "size": 2126949
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:1c4d900c738fe00730c6033abb6cf1cc6587717dbeee291d5908272d153d329a",
+              "size": 1989161
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:293258fd67618dd352e1096137ad9f2b801926eaf74ffcd570540ae94ad8ee5c",
+              "size": 2129727
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:621aad7d011c6817cde9570dfea42c7bcc699458bf43c37706cb4c2f6475a247",
+              "size": 2237976
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:3af7eac3a7de3939731ec4c13fb5d72a8e6ce5e5d274bb9697f5d93039561e42",
+              "size": 2270699
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20221026",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
+              "size": "2051435"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
+              "size": "1993843"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
+              "size": "2092111"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
+              "size": "2199855"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
+              "size": "2247179"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20220706",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
+              "size": "2077882"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
+              "size": "1902964"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
+              "size": "1954685"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev3",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:4ecaf51836cbf4ea3c19840018bfef3b0b8cd8fc3c95f6e1e043ca5bbeab9bf0",
+              "size": "64958202"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "checksum": "SHA-256:fff818573bce483ee793ac83c8211f6abf764aa3350f198228859f696a0a0b36",
+              "size": "31530030"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "checksum": "SHA-256:5b274bdff2f62e6a07c3c1dfa51b1128924621f661747eca3dbe0f77972f2f06",
+              "size": "33663882"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "checksum": "SHA-256:c733c83b58fcf5f642fbb2fddb8ff24640c2c785126cba0821fb70c4a5ceea7a",
+              "size": "32767836"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "checksum": "SHA-256:83c195a15981e6a5e7a130db2ccfb21e2d8093912e5b003681f9a5abadd71af7",
+              "size": "30121441"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev1",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:21f6c2155f0ec9e5b475c8a4bf59803d8cfb4d74f4e488a80f97da3d77542bba",
+              "size": "64632960"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-arm32.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-arm32.tar.gz",
+              "checksum": "SHA-256:818477f10814b2bd82078fc6695663ac84220d3947722ce1880a6c867d5c2997",
+              "size": "46042432"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b377a130a4dca58f3a31c66ed0b9858cc057c998741222cccdb6e5a724651a1f",
+              "size": "54459357"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-macos-amd64.tar.gz",
+              "checksum": "SHA-256:25cc246b20230afc287ffdfe95f57b3fab23cec88a6dde3b5092ec05926b5431",
+              "size": "32386336"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b845d678db1d1559d82894e68366683a7fc3809371a5f5def67c30c9dee15912",
+              "size": "29841092"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev1-win64.zip",
+              "checksum": "SHA-256:f649a212e086b06ca6ee595feffd7a4706696ea43a2cd1a4f49352829e8ac96e",
+              "size": "35812159"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev1-win64.zip",
+              "checksum": "SHA-256:f649a212e086b06ca6ee595feffd7a4706696ea43a2cd1a4f49352829e8ac96e",
+              "size": "35812159"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.8.1",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:aaaaa25e1c64442ae93604812376783dbc50f34536221b5897456e12f01e1bfd",
+              "size": "64635657"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-arm64.tar.gz",
+              "checksum": "SHA-256:76170a9282bdc52fddd75e4498fd6bee55fe19088a34ab363b3aeff800d73f60",
+              "size": "54449306"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-arm32.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-arm32.tar.gz",
+              "checksum": "SHA-256:26b842e22a66b3d01e830a4784686a69cfb107d774a4093327ec6bba7bb17794",
+              "size": "45868720"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-macos.tar.gz",
+              "checksum": "SHA-256:6e1fc5ea04490e849c925c48d5cee590164fcf9b9bd419a7b014c2fb48a13743",
+              "size": "29828542"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-win64.zip",
+              "archiveFileName": "esptool-v4.8.1-win64.zip",
+              "checksum": "SHA-256:3e97fb990fdd721b923b478eaaa046967c7919dbc9cbd04c445307571177918a",
+              "size": "33612728"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.6",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-macos.tar.gz",
+              "archiveFileName": "esptool-v4.6-macos.tar.gz",
+              "checksum": "SHA-256:885ec69fcffdcb9e7c6eacd2589f13a45ce6bcb6742bea368ec3a73bcca6dd59",
+              "size": "5851297"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5.1",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-macos.tar.gz",
+              "checksum": "SHA-256:78b52acfd51541ceb97cee893b7d4d49b8ddc284602be8c73ea47e3d849e0956",
+              "size": "5850888"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5-macos.tar.gz",
+              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
+              "size": "5850835"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
+              "archiveFileName": "esptool-v4.5-win64.zip",
+              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
+              "size": "6639416"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.2.1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
+              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
+              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
+              "size": "5816598"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.3.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
+              "archiveFileName": "esptool-3.3-macos.tar.gz",
+              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
+              "size": "6944975"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.1.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
+              "archiveFileName": "esptool-3.1.0-windows.zip",
+              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
+              "size": "7411889"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
+              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
+              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
+              "size": "6776909"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.0.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
+              "archiveFileName": "esptool-3.0.0.2-windows.zip",
+              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
+              "size": "3434736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
+              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
+              "size": "3859642"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            }
+          ]
+        },
+        {
+          "version": "2.6.1",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-windows.zip",
+              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.1-windows.zip",
+              "size": "3422445"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-macos.tar.gz",
+              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
+              "size": "3837085"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            }
+          ]
+        },
+        {
+          "version": "2.6.0",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-windows.zip",
+              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.0-windows.zip",
+              "size": "3421208"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-macos.tar.gz",
+              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
+              "size": "3835660"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            }
+          ]
+        },
+        {
+          "version": "3.0.0-gnu12-dc7f933",
+          "name": "mklittlefs",
+          "systems": [
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
+              "size": "44651"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
+              "size": "37211"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
+              "size": "48033"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
+              "size": "332655"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
+              "size": "362608"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
+              "size": "46778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
+              "size": "345132"
+            }
+          ]
+        },
+        {
+          "name": "mkspiffs",
+          "version": "0.2.3",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
+              "size": "249809"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "i386-apple-darwin",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
+              "size": "50646"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
+              "size": "48751"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
+          "name": "esp-xs2",
+          "version": "2302",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
-              "size": "67849099"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
-              "size": "64154532"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
-              "size": "63448105"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
-              "size": "69656104"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
-              "size": "75154138"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
-              "size": "82338511"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
-              "size": "85579252"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
+          "name": "esp-xs3",
+          "version": "2302",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
-              "size": "90894048"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
-              "size": "87178224"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
-              "size": "86569314"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
-              "size": "92884013"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
-              "size": "98224709"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
-              "size": "116924759"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
-              "size": "119912142"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-12.2.0_20230208",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
-              "size": "90901736"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
-              "size": "87176557"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
-              "size": "86581102"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
-              "size": "92875986"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
-              "size": "98212907"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
-              "size": "113022469"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
-              "size": "115696999"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r1",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
-              "size": "86687290"
-            },
-            {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
-              "size": "84916701"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
-              "size": "88699953"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
-              "size": "93757895"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
-              "size": "106013515"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2020r3",
-          "systems": [
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-win32.zip",
-              "checksum": "SHA-256:d078d614ae864ae4a37fcb5b83323af0a5cfdbd8243607664becdd0f977a1e33",
-              "size": "104659541"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-macos.tar.gz",
-              "checksum": "SHA-256:fe19b0c873879d8d89ec040f4db04a3ab27d769d3fd5f55fe59a28b6b111d09c",
-              "size": "92817351"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:40fafa47045167feda0cd07827db5207ebfeb4a3b6b24475957a921bc92805ed",
-              "size": "86069526"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
+              "size": "93104016"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-i686.tar.gz",
-              "checksum": "SHA-256:bd3a91166206a1a7ff7c572e15389e1938c3cdce588032a5e915be677a945638",
-              "size": "88053499"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2020r3/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-armel.tar.gz",
-              "checksum": "SHA-256:6c1efec4c7829202279388ccb388e8a17a34464bc351d677c4f04d95ea4b4ce0",
-              "size": "84254468"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
-              "size": "68099473"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
-              "size": "64233211"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
-              "size": "63530586"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
-              "size": "70025439"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
-              "size": "75719772"
-            },
-            {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
-              "size": "66791095"
-            },
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
-              "size": "82665716"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
-              "size": "86022563"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
-              "size": "68099473"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
+              "size": "90569312"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
-              "size": "64233211"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
+              "size": "86838362"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
-              "size": "63530586"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
+              "size": "86187540"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
-              "size": "70025439"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
+              "size": "92580267"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
-              "size": "75719772"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
+              "size": "97807647"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
-              "size": "82665716"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
+              "size": "116464819"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
-              "size": "86022563"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
+              "size": "119511910"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
-              "size": "90903617"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
+              "size": "90565318"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
-              "size": "87065204"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
+              "size": "86860292"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
-              "size": "86455731"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
+              "size": "86183421"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
-              "size": "92906274"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
+              "size": "92582250"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
-              "size": "98553473"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
+              "size": "97808961"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
-              "size": "116847008"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
+              "size": "112578260"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
-              "size": "120066269"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
+              "size": "115278695"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
-              "size": "192388486"
-            },
-            {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
-              "size": "188626914"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
+              "size": "86361217"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
-              "size": "188624050"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
+              "size": "84520407"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
-              "size": "194606113"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
+              "size": "88375391"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
-              "size": "199411930"
-            },
-            {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
-              "size": "191209735"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
+              "size": "93357296"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
-              "size": "257844437"
-            },
-            {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
-              "size": "259712666"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
+              "size": "105603626"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "1.22.0-97-gc752ad5-5.2.0",
           "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
+              "size": "125747216"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
+              "size": "50525386"
+            },
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
-              "size": "192388486"
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
+              "size": "44225380"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
-              "size": "188626914"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
+              "size": "45575521"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
-              "size": "188624050"
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
-              "size": "194606113"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            }
+          ]
+        },
+        {
+          "version": "1.22.0-80-g6c4433a-5.2.0",
+          "name": "xtensa-esp32-elf-gcc",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
+              "host": "i686-mingw32",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "size": "125719261"
             },
             {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
-              "size": "199411930"
+              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "46517409"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
-              "size": "257844437"
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "44219107"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
-              "size": "259712666"
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "45566336"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "size": "50655584"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-12.2.0_20230208",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
-              "size": "106843321"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
-              "size": "103277393"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
-              "size": "103062256"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
-              "size": "109460025"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
-              "size": "113703959"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
-              "size": "144711970"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
-              "size": "146606480"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
-              "size": "106837189"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
-              "size": "103273444"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
-              "size": "103058744"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
-              "size": "109447789"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
-              "size": "113672945"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
+              "size": "66457613"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
-              "size": "140809778"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
-              "size": "142365782"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r1",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
-              "size": "152812483"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
-              "size": "151726623"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
-              "size": "155430963"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
-              "size": "159836199"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
-              "size": "191266312"
-            }
-          ]
-        },
-        {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff",
-          "systems": [
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-win32.zip",
-              "checksum": "SHA-256:4f576b08620f57c270ac677cc94dce2767fff72d27a539e348d448f63b480d1f",
-              "size": "190014086"
-            },
-            {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-macos.tar.gz",
-              "checksum": "SHA-256:35b1aef85b7e6b4268774f627e8e835d087bcf8b9972cfb6436614aa2e40d4a9",
-              "size": "158594401"
-            },
-            {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-linux-amd64.tar.gz",
-              "checksum": "SHA-256:425454c5c4e2cde5dd2dd3a1d398befc70addf71547840fb6d0ec4b307b08894",
-              "size": "152042971"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-crosstool-ng-1.24.0-123-g64eb9ff-linux-armel.tar.gz",
-              "checksum": "SHA-256:8ae098751b5196ca8a80d832cc9930bc4d639762a6cb22be3cfe0a8d71b2f230",
-              "size": "150801079"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
             }
           ]
         },
         {
-          "name": "openocd-esp32",
-          "version": "v0.11.0-esp32-20221026",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
-              "size": "2051435"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
+              "size": "90894048"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
-              "size": "1993843"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
+              "size": "87178224"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
-              "size": "2092111"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
+              "size": "86569314"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
-              "size": "2199855"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
+              "size": "92884013"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
-              "size": "2247179"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
+              "size": "98224709"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
-              "size": "2493214"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
+              "size": "116924759"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
-              "size": "2493214"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
+              "size": "119912142"
             }
           ]
         },
         {
-          "name": "openocd-esp32",
-          "version": "v0.11.0-esp32-20220706",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
-              "size": "2608736"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
+              "size": "90901736"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
-              "size": "2608736"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
+              "size": "87176557"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
-              "size": "2077882"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
+              "size": "86581102"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
-              "size": "2011201"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
+              "size": "92875986"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
-              "size": "2011201"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
+              "size": "98212907"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
-              "size": "1902964"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
+              "size": "113022469"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
-              "size": "1954685"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
+              "size": "115696999"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "4.5",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
-            },
-            {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
-            },
-            {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
+              "size": "86687290"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
+              "size": "84916701"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
-              "archiveFileName": "esptool-v4.5-macos.tar.gz",
-              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
-              "size": "5850835"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
+              "size": "88699953"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
-              "archiveFileName": "esptool-v4.5-win64.zip",
-              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
-              "size": "6639416"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
+              "size": "93757895"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
-              "archiveFileName": "esptool-v4.5-win64.zip",
-              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
-              "size": "6639416"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
+              "size": "106013515"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "4.2.1",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-12.2.0_20230208",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
-              "archiveFileName": "esptool-4.2.1-windows.zip",
-              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
-              "size": "6368279"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
-              "archiveFileName": "esptool-4.2.1-windows.zip",
-              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
-              "size": "6368279"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
-              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
-              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
-              "size": "5816598"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.3.0",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
-              "archiveFileName": "esptool-3.3-windows.zip",
-              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
-              "size": "7436864"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
-              "archiveFileName": "esptool-3.3-windows.zip",
-              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
-              "size": "7436864"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
-              "archiveFileName": "esptool-3.3-macos.tar.gz",
-              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
-              "size": "6944975"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
+              "size": "66791095"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.1.0",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
-              "archiveFileName": "esptool-3.1.0-windows.zip",
-              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
-              "size": "7411889"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
-              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
-              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
-              "size": "6776909"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.0.0",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-windows.zip",
-              "archiveFileName": "esptool-3.0.0.3-windows.zip",
-              "checksum": "SHA-256:3c99b3b9bbad1f416988973b536b9f02fae852a145c4c0b7c1e3200d25ef9551",
-              "size": "3450498"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
+              "size": "90903617"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-macos.tar.gz",
-              "archiveFileName": "esptool-3.0.0.3-macos.tar.gz",
-              "checksum": "SHA-256:9f956e4c49c0c37ad95752adea7f8b3338e6f33c4726d6dc20239827d3f8a096",
-              "size": "3866415"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
+              "size": "87065204"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.3-linux.tar.gz",
-              "checksum": "SHA-256:2ec3041d508b1393d4e4bfa833dec8d7f5a74561c939c071748f89293a515f26",
-              "size": "73901"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
+              "size": "86455731"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.3-linux.tar.gz",
-              "checksum": "SHA-256:2ec3041d508b1393d4e4bfa833dec8d7f5a74561c939c071748f89293a515f26",
-              "size": "73901"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
+              "size": "92906274"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.3-linux.tar.gz",
-              "checksum": "SHA-256:2ec3041d508b1393d4e4bfa833dec8d7f5a74561c939c071748f89293a515f26",
-              "size": "73901"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
+              "size": "98553473"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esptool-3.0.0.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.3-linux.tar.gz",
-              "checksum": "SHA-256:2ec3041d508b1393d4e4bfa833dec8d7f5a74561c939c071748f89293a515f26",
-              "size": "73901"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
+              "size": "116847008"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
+              "size": "120066269"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "2.6.1",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-windows.zip",
-              "archiveFileName": "esptool-2.6.1-windows.zip",
-              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
-              "size": "3422445"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-macos.tar.gz",
-              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
-              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
-              "size": "3837085"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "size": "44762"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "size": "44762"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "size": "44762"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "size": "44762"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
+              "size": "191209735"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
             }
           ]
         },
         {
-          "version": "2.6.0",
-          "name": "esptool_py",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-windows.zip",
-              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
-              "host": "i686-mingw32",
-              "archiveFileName": "esptool-2.6.0-windows.zip",
-              "size": "3421208"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-macos.tar.gz",
-              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
               "host": "x86_64-apple-darwin",
-              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
-              "size": "3835660"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
-              "host": "i686-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
             }
           ]
         },
         {
-          "version": "3.0.0-gnu12-dc7f933",
-          "name": "mklittlefs",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
+              "size": "106843321"
+            },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
-              "size": "44651"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
+              "size": "103277393"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
-              "size": "37211"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
+              "size": "103062256"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
-              "size": "48033"
-            },
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
-              "size": "332655"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
+              "size": "109460025"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
-              "size": "362608"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
+              "size": "113703959"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
-              "size": "46778"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
+              "size": "144711970"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
-              "size": "345132"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
+              "size": "146606480"
             }
           ]
         },
         {
-          "name": "mkspiffs",
-          "version": "0.2.3",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
-              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
-              "size": "249809"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
+              "size": "106837189"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
-              "size": "130270"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
+              "size": "103273444"
             },
             {
-              "host": "i386-apple-darwin",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
-              "size": "130270"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
+              "size": "103058744"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
-              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
-              "size": "50646"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
+              "size": "109447789"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
-              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
-              "size": "48751"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
+              "size": "113672945"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
-              "size": "40665"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
+              "size": "140809778"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
-              "size": "40665"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
+              "size": "142365782"
             }
           ]
         },
         {
-          "version": "0.3.6",
-          "name": "mkfatfs",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1",
           "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
+              "size": "152812483"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
+              "size": "151726623"
+            },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/lorol/arduino-esp32fatfs-plugin/raw/master/extra/mkfatfs.tar.gz",
-              "archiveFileName": "mkfatfs.tar.gz",
-              "checksum": "SHA-256:41dc0346a38d6aab5674d4301937868e69471b69d8317ed667d2eeb7c4a077ee",
-              "size": "102575"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
+              "size": "155430963"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
+              "size": "159836199"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/lorol/arduino-esp32fatfs-plugin/raw/master/extra/mkfatfs.zip",
-              "archiveFileName": "mkfatfs.zip",
-              "checksum": "SHA-256:966f378da8bba524197d7d8a919e93b21b4680ead03ae69cac8bb56f8ec864a6",
-              "size": "612169"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
+              "size": "191266312"
             }
           ]
         },
@@ -3767,88 +8273,6 @@
               "size": "39563"
             }
           ]
-        },
-        {
-          "version": "2.5.0",
-          "name": "esptool",
-          "systems": [
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.5.0-windows.zip",
-              "checksum": "SHA-256:576b8068b577cae0e6e937566a9d32a08ff7ff82963fb60400eacb6691f2fbfb",
-              "host": "i686-mingw32",
-              "archiveFileName": "esptool-2.5.0-windows.zip",
-              "size": "3420959"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.5.0-macos.tar.gz",
-              "checksum": "SHA-256:2da8ba3b83d99b5d808cab955a077e3e0738ec640b51de932d047cad7fac1157",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "esptool-2.5.0-macos.tar.gz",
-              "size": "3835397"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.5.0-linux.tar.gz",
-              "checksum": "SHA-256:34d63b9a0bf2acb9b6fdac15f91a8756f4e722065de031e8fbce4e4abc369e54",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "esptool-2.5.0-linux.tar.gz",
-              "size": "43468"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.5.0-linux.tar.gz",
-              "checksum": "SHA-256:34d63b9a0bf2acb9b6fdac15f91a8756f4e722065de031e8fbce4e4abc369e54",
-              "host": "i686-pc-linux-gnu",
-              "archiveFileName": "esptool-2.5.0-linux.tar.gz",
-              "size": "43468"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-2.5.0-linux.tar.gz",
-              "checksum": "SHA-256:34d63b9a0bf2acb9b6fdac15f91a8756f4e722065de031e8fbce4e4abc369e54",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "esptool-2.5.0-linux.tar.gz",
-              "size": "43468"
-            }
-          ]
-        },
-        {
-          "version": "da31d9d2",
-          "name": "esptool",
-          "systems": [
-            {
-              "url": "https://dl.espressif.com/dl/esptool-da31d9d2-windows.zip",
-              "checksum": "SHA-256:5e3b5154b9adaf38aeb580222b434bf6e9381a8b989e227f3ad6b2cecc56a57b",
-              "host": "i686-mingw32",
-              "archiveFileName": "esptool-da31d9d2-windows.zip",
-              "size": "3396085"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-da31d9d2-macos.tar.gz",
-              "checksum": "SHA-256:00f2c16e3b44064596e883fcb20392c9e52ebf74484672170fbeb4c6641e37cc",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "esptool-da31d9d2-macos.tar.gz",
-              "size": "3810936"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-da31d9d2-linux.tar.gz",
-              "checksum": "SHA-256:a8a23028bde25b25fae39554b4e6138592ef18e099bfeb239b4a003a2ae3f55c",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "esptool-da31d9d2-linux.tar.gz",
-              "size": "39563"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-da31d9d2-linux.tar.gz",
-              "checksum": "SHA-256:a8a23028bde25b25fae39554b4e6138592ef18e099bfeb239b4a003a2ae3f55c",
-              "host": "i686-pc-linux-gnu",
-              "archiveFileName": "esptool-da31d9d2-linux.tar.gz",
-              "size": "39563"
-            },
-            {
-              "url": "https://dl.espressif.com/dl/esptool-da31d9d2-linux.tar.gz",
-              "checksum": "SHA-256:a8a23028bde25b25fae39554b4e6138592ef18e099bfeb239b4a003a2ae3f55c",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "esptool-da31d9d2-linux.tar.gz",
-              "size": "39563"
-            }
-          ]
         }
       ]
     }
diff --git a/package_esp32_dev_index_cn.json b/package_esp32_dev_index_cn.json
new file mode 100644
index 00000000000..2b90ba52818
--- /dev/null
+++ b/package_esp32_dev_index_cn.json
@@ -0,0 +1,8280 @@
+{
+  "packages": [
+    {
+      "name": "esp32",
+      "maintainer": "Espressif Systems",
+      "websiteURL": "https://github.com/espressif/arduino-esp32",
+      "email": "hristo@espressif.com",
+      "help": {
+        "online": "http://esp32.com"
+      },
+      "platforms": [
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.3.0-alpha1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.3.0-alpha1/esp32-3.3.0-alpha1.zip",
+          "archiveFileName": "esp32-3.3.0-alpha1.zip",
+          "checksum": "SHA-256:1ecaa232ccdf4d32211d55d203e1a655e75945c6326e8c27e8c059eca7946d37",
+          "size": "25494893",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-master-d930a386-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "16.2_20250324-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "16.2_20250324-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20250226-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.2.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.2.0/esp32-3.2.0.zip",
+          "archiveFileName": "esp32-3.2.0.zip",
+          "checksum": "SHA-256:d38b16fef6e519fc0d19bc5af0b39cdbed7dfc2ce69214c1971ded0e61ecd911",
+          "size": "25447136",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-2f7dcd86-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.2.0-RC2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.2.0-RC2/esp32-3.2.0-RC2.zip",
+          "archiveFileName": "esp32-3.2.0-RC2.zip",
+          "checksum": "SHA-256:fe6aacce1704f0782062d7d3fde24b40bf2591903de3351c86a55fa254a19e64",
+          "size": "25450856",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-d4aa25a3-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.2.0-RC1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.2.0-RC1/esp32-3.2.0-RC1.zip",
+          "archiveFileName": "esp32-3.2.0-RC1.zip",
+          "checksum": "SHA-256:dc70818eaeb8a596c6857953fbc59ed10fbedd28a5d3e5405e6bbd050e49e46b",
+          "size": "25443000",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-bcb3c32d-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.3/esp32-3.1.3.zip",
+          "archiveFileName": "esp32-3.1.3.zip",
+          "checksum": "SHA-256:747160dbc81c6634c7bff9e8a57213e9982d52fe90d2a8f75a93a9f7b527defb",
+          "size": "25396700",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.2/esp32-3.1.2.zip",
+          "archiveFileName": "esp32-3.1.2.zip",
+          "checksum": "SHA-256:17214f51a7b9de547baa777419d2b041e1f09cfb17adb33c18617a756190f9f6",
+          "size": "25396684",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.1/esp32-3.1.1.zip",
+          "archiveFileName": "esp32-3.1.1.zip",
+          "checksum": "SHA-256:e20982b2860eab4900ce16a0f2b7f9fc3ffb205e490dc933f625d53a5c9e8129",
+          "size": "25253828",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-cfea4f7c-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0/esp32-3.1.0.zip",
+          "archiveFileName": "esp32-3.1.0.zip",
+          "checksum": "SHA-256:0db044159e3fc737435b3f1d547bf85c60a33a175342c317d2a5c08c42977f80",
+          "size": "25225607",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-083aad99-v2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-RC3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esp32-3.1.0-RC3.zip",
+          "archiveFileName": "esp32-3.1.0-RC3.zip",
+          "checksum": "SHA-256:60c8a9a0a4fba8533ce278ca1315425a55e2abf0c83c94d9fc0b8cafb50f6d3f",
+          "size": "24652789",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-a0f798cf-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-RC2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esp32-3.1.0-RC2.zip",
+          "archiveFileName": "esp32-3.1.0-RC2.zip",
+          "checksum": "SHA-256:374c3cd330d0dad1e1c39c00951c51c51cb5dd6964d9e92c84a2fe732061390d",
+          "size": "24606170",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-a0f798cf-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.8.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-RC1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esp32-3.1.0-RC1.zip",
+          "archiveFileName": "esp32-3.1.0-RC1.zip",
+          "checksum": "SHA-256:2b386cbd6e761b728864aa4c36fc435f6c5d3e52a5c12bfaeb0132e0dc354a6c",
+          "size": "24118034",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-466a392a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.7/esp32-3.0.7.zip",
+          "archiveFileName": "esp32-3.0.7.zip",
+          "checksum": "SHA-256:6b48f5bd889e55d7b93b95849dff77c6a5e4b9ee58c7298d7872d558a4d04931",
+          "size": "24546342",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.6/esp32-3.0.6.zip",
+          "archiveFileName": "esp32-3.0.6.zip",
+          "checksum": "SHA-256:7b4d87d0a18e69cba81e7aa7e69f088dc7c4f6cc89a20adc256bf77c86992dc5",
+          "size": "24546256",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.5/esp32-3.0.5.zip",
+          "archiveFileName": "esp32-3.0.5.zip",
+          "checksum": "SHA-256:6ead4c452e69146b8eb08bee5a77898acc75a0637e9fccb5bbf665385ddc28db",
+          "size": "24481707",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-33fbade6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-3.0.4.zip",
+          "archiveFileName": "esp32-3.0.4.zip",
+          "checksum": "SHA-256:58fcd9b033be0358afbcbcf9a1d8eb216217f65f6b28f2e2cd739c7d016dda4f",
+          "size": "23937821",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-b6b4727c58-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-3.0.3.zip",
+          "archiveFileName": "esp32-3.0.3.zip",
+          "checksum": "SHA-256:b4aa70711293955a9835ad641279dc7cd524aeb405f7d294afa05c2ece7ded45",
+          "size": "23920341",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-dc859c1e67-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-3.0.2.zip",
+          "archiveFileName": "esp32-3.0.2.zip",
+          "checksum": "SHA-256:bd90630fbe9e99f3bb3340c25a87574d5551dd2823849adbf285f8430b6884cf",
+          "size": "23893902",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-bd2b9390ef-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-3.0.1.zip",
+          "archiveFileName": "esp32-3.0.1.zip",
+          "checksum": "SHA-256:b7169d0dd51b64e450a7c09fafb7a4782820a9bc745f7b1e4618316440db0930",
+          "size": "23895257",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0/esp32-3.0.0.zip",
+          "archiveFileName": "esp32-3.0.0.zip",
+          "checksum": "SHA-256:0960cf786992e0e3770d8c1e1979eaf01bd0ac9209b24fb00948cf93d43cf95c",
+          "size": "23891610",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc3/esp32-3.0.0-rc3.zip",
+          "archiveFileName": "esp32-3.0.0-rc3.zip",
+          "checksum": "SHA-256:87ff8e3499c8c2112c3d6faf0017998e64135c0f3553088d76be6f8b6a5af1ef",
+          "size": "23906520",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc2/esp32-3.0.0-rc2.zip",
+          "archiveFileName": "esp32-3.0.0-rc2.zip",
+          "checksum": "SHA-256:a5953dbc8ce425ce44fde6d66d23b056bc2569d96e177e2fa8d5c3161f87eb40",
+          "size": "23887041",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-rc1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-3.0.0-rc1.zip",
+          "archiveFileName": "esp32-3.0.0-rc1.zip",
+          "checksum": "SHA-256:d4d96e1dc0ca687d2bcdde9836bcc3664cfa868cb324b7b737005efe0b050f3a",
+          "size": "23944015",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-3662303f312-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-alpha3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-3.0.0-alpha3.zip",
+          "archiveFileName": "esp32-3.0.0-alpha3.zip",
+          "checksum": "SHA-256:02b94c17f065ed5dfef765af7ed7e11f2c7fafa2bd82b00fb7d07cdb2ad78509",
+          "size": "21114660",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-3662303f31-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20221002-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20221002-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.17-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.17/esp32-2.0.17.zip",
+          "archiveFileName": "esp32-2.0.17.zip",
+          "checksum": "SHA-256:1f8658d4b18a8001ce782142ad08164af2991d70b83a147c3437a6ee30a9b225",
+          "size": "254658377",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.16-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.16/esp32-2.0.16.zip",
+          "archiveFileName": "esp32-2.0.16.zip",
+          "checksum": "SHA-256:6615fd16fd6d3ee2fa7ca2dd40a4f65220eddf094a88b7cee2141a0c077987bc",
+          "size": "254657760",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.15-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip",
+          "archiveFileName": "esp32-2.0.15.zip",
+          "checksum": "SHA-256:2219c1636264f55e19b2a5e7f41c81b669b1355017b15ee31773c85674b3e9bb",
+          "size": "254657764",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.14-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.14/esp32-2.0.14.zip",
+          "archiveFileName": "esp32-2.0.14.zip",
+          "checksum": "SHA-256:77c71eba520c97ab30161eb2f9c6a46b019e48d13936244b18f6ad4dbecf0a58",
+          "size": "252506057",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230419-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.13-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.13/esp32-2.0.13.zip",
+          "archiveFileName": "esp32-2.0.13.zip",
+          "checksum": "SHA-256:ee4c277bac0eecb7ca8853780da9d49b4e260926059cf6a9f9bac1923059de0c",
+          "size": "250665913",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.12-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.12/esp32-2.0.12.zip",
+          "archiveFileName": "esp32-2.0.12.zip",
+          "checksum": "SHA-256:9a4f844ca67812c547a9635cdb0dd2c347cae7a3e855f95f9d490b2f8d340dbe",
+          "size": "250664387",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.11-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.11/esp32-2.0.11.zip",
+          "archiveFileName": "esp32-2.0.11.zip",
+          "checksum": "SHA-256:d15386308dc72f94816ce80b5508af999f2fd0d88eb5e1ffba48316ab0b9c5d6",
+          "size": "250401265",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.10-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.10/esp32-2.0.10.zip",
+          "archiveFileName": "esp32-2.0.10.zip",
+          "checksum": "SHA-256:6028cb623c838723c41000869963d95f7cb811d58643133068eed31c03c2d7c0",
+          "size": "250401273",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.9-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esp32-2.0.9.zip",
+          "archiveFileName": "esp32-2.0.9.zip",
+          "checksum": "SHA-256:37072185026db3cdc0ed4b6fb12840d7f41571a16c60eec97bec2a4abec8dcee",
+          "size": "278964028",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.8-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip",
+          "archiveFileName": "esp32-2.0.8.zip",
+          "checksum": "SHA-256:2c5daa3ce7456e752fb8d8a35b0b6b2eb8e494032cba57569ba12dd53eb235f2",
+          "size": "278963636",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
+          "archiveFileName": "esp32-2.0.7.zip",
+          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
+          "size": "278966011",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
+          "archiveFileName": "esp32-2.0.6.zip",
+          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
+          "size": "264579419",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20220706-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
+          "archiveFileName": "esp32-2.0.5.zip",
+          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
+          "size": "260916106",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
+          "archiveFileName": "esp32-2.0.4.zip",
+          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
+          "size": "259715595",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
+          "archiveFileName": "esp32-2.0.3.zip",
+          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
+          "size": "246542267",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
+          "archiveFileName": "esp32-2.0.2.zip",
+          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
+          "size": "151846438",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
+          "archiveFileName": "esp32-2.0.1.zip",
+          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
+          "size": "148976301",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
+          "archiveFileName": "esp32-2.0.0.zip",
+          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
+          "size": "139313137",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
+          "archiveFileName": "esp32-1.0.6.zip",
+          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
+          "size": "51126662",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
+          "archiveFileName": "esp32-1.0.5.zip",
+          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
+          "size": "49552769",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
+          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.4-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.4.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36853332"
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
+          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.3-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.3.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36811826"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
+          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
+          "version": "1.0.2-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.2.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ],
+          "size": "31174160",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "name": "esp32"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
+          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
+          "name": "esp32",
+          "version": "1.0.1-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.1.zip",
+          "size": "31273425",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.0-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
+          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
+          "name": "esp32",
+          "version": "1.0.0-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.0.zip",
+          "size": "26381887",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.3.1-cn",
+              "name": "esptool"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        }
+      ],
+      "tools": [
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-master-d930a386-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-master/esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-master-d930a386-v1.zip",
+              "checksum": "SHA-256:0310daa4f08f807f2bf3babd2587c2694df64c70e367863eadf5020636b717ae",
+              "size": "422376381"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-2f7dcd86-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-d4aa25a3-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-d4aa25a3-v1.zip",
+              "checksum": "SHA-256:81101d580ebafb78f71bd494f4f5162fd829279d18634282c0f8f95c9e928335",
+              "size": "350941396"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-bcb3c32d-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-bcb3c32d-v1.zip",
+              "checksum": "SHA-256:2ab7a8565d4eadd805c1d00c9a1550292d3287dc43efa166d7ad3ba5322344bb",
+              "size": "345570903"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-489d7a2b-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-cfea4f7c-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-083aad99-v2-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-a0f798cf-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-a0f798cf.zip",
+              "checksum": "SHA-256:f552d02ecef616389f1d0c973cb270718a192e6258db426656cd5965db3c6ed0",
+              "size": "339750940"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-632e0c2a-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-33fbade6-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-466a392a-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-466a392a.zip",
+              "checksum": "SHA-256:8c2d36bd4be5b6a9446efd3c2b2f93f544f4b2a22dab23c4991aec5711c72884",
+              "size": "318864212"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-b6b4727c58-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-dc859c1e67-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-bd2b9390ef-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-442a798083-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-3662303f312-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-rc1/esp32-arduino-libs-3.0.0-rc1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-rc1.zip",
+              "checksum": "SHA-256:0fb5d5b794a6bbfba5ec5330537cde675a214356b4b3bb1371d7ddc3829128c7",
+              "size": "350651673"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-3662303f31-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0-alpha3/esp32-arduino-libs-3.0.0-alpha3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.0-alpha3.zip",
+              "checksum": "SHA-256:18a278b74a37211d142d1f1d5795af5b6a9526c360c0feee07bb72c04e898c41",
+              "size": "350651673"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b1859df334a85541ae746e1b86439f59180d87f8cf1cc04c2e770fadf9f006e9",
+              "size": "323678089"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7ff023033a5c00e55b9fc0a0b26d18fb0e476c24e24c5b0459bcb2e05a3729f1",
+              "size": "320064691"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:bb11dbf3ed25d4e0cc9e938749519e8236cfa2609e85742d311f1d869111805a",
+              "size": "319454139"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:5ac611dca62ec791d413d1f417d566c444b006d2a4f97bd749b15f782d87249b",
+              "size": "328335914"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:15b3e60362028eaeff9156dc82dac3f1436b4aeef3920b28d7650974d8c34751",
+              "size": "336215844"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:45c475518735133789bacccad31f872318b7ecc0b31cc9b7924aad880034f0bf",
+              "size": "318797396"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8",
+              "size": "382457717"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028",
+              "size": "386316009"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bce77e8480701d5a90545369d1b5848f6048eb39c0022d2446d1e33a8e127490",
+              "size": "208911713"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7c9e3c1adc733d042ed87b92daa1d6396e1b441c1755f1fa14cb88855719ba88",
+              "size": "202519931"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d6955e8ea6af91574bf9213b92f32ca09eb8640103446b7fa19a63cfeeec5421",
+              "size": "202206516"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3666ee74ecb693ee6488f11469802630a7b0d32608184045a4f35cb413f59e3d",
+              "size": "213304863"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:948cf57b6eecc898b5f70e06ad08ba88c08b627be570ec631dfcd72f6295194a",
+              "size": "221357024"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:6f03fdf0cc14a7f3900ee59977f62e8626d8b7c208506e52f1fd883ac223427a",
+              "size": "199689745"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:d6b227c50e3c8e21d62502b3140e5ab74a4cb502c2b4169c36238b9858a8fb88",
+              "size": "266042967"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:155ee97b531236e6a7c763395c68ca793e55e74d2cb4d38a23057a153e01e7d0",
+              "size": "269831985"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "16.2_20250324-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27b58ab12248e04277c4fdc74038cf0a001d5142df091ab94939ad35053738fd",
+              "size": "36361058"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:24f85aa778e1605098a13ff7bd29d5760767faf012705c8915cb08b32cad0206",
+              "size": "35442104"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:c73e43038b6d50374cd0ee714370ce748189e0b00404d581babd2bb0115c4785",
+              "size": "31260410"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:dc7b8aad0fb1c6a1abfdb8dff4f08221ea08a0f28fb837f181969ac1174d4dc6",
+              "size": "35067894"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:398c429cfe696bad01d636c5488cadc87b20471c1b5ed02c60eee5ef2a775c93",
+              "size": "54992785"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:b6d85c0d76d653bb55f9d06b0cd509eab7e99db541c88b8c849c64827e9d74a9",
+              "size": "43538967"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:f748d6b65fdf66733b82e12d0d85a05e3134122416280379df129cfebe2aa4b2",
+              "size": "32189419"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/xtensa-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:e970fc3ec8a1d0acee2432e91e0a01b348613a0425aacfa981b2fc505fe920cc",
+              "size": "32290997"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e",
+              "size": "31010320"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66",
+              "size": "30954580"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d",
+              "size": "28697281"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0",
+              "size": "29890994"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9",
+              "size": "44446611"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1",
+              "size": "37021423"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2",
+              "size": "26302466"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e",
+              "size": "28366035"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d0743ec43cd92c35452a9097f7863281de4e72f04120d63cfbcf9d591a373529",
+              "size": "36942094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bc1fac0366c6a08e26c45896ca21c8c90efc2cdd431b8ba084e8772e15502d0e",
+              "size": "37134601"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:25efc51d52b71f097ccec763c5c885c8f5026b432fec4b5badd6a5f36fe34d04",
+              "size": "34579556"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e0af0b3b4a6b29a843cd5f47e331a966d9258f7d825b4656c6251490f71b05b2",
+              "size": "35676578"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bd146fd99a52b2d71c7ce0f62b9e18f3423d6cae7b2b2c954046b0dd7a23142f",
+              "size": "52863941"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:5edc76565bf9d2fadf24e443ddf3df7567354f336a65d4af5b2ee805cdfcec24",
+              "size": "33504923"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:ea4f3ee6b95ad1ad2e07108a21a50037a3e64a420cdeb34b2ba95d612faed898",
+              "size": "31068749"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:13bb97f39173948d1cfb6e651d9b335ea9d52f1fdd0dda1eda3a2d23d8c63644",
+              "size": "33514906"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20221002-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d056f2435ef05cccadac5d8fcefa3efd8f8c456c3d853f5eba1edb501acfe4f7",
+              "size": "32006939"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7fc9674cc4f4c5e7bc94ca05bc5deaaa4c4bbcc972a9caee6fcd6a872c804c02",
+              "size": "32227425"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:68118ff36e9dd2284d92a7a529d0e2a8d20f6426036a0736fa1147935614ece2",
+              "size": "29960020"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:cf6cac8ed70726d390d30713d537754544872715e1b70a8a4a28b5dc616193b9",
+              "size": "30877187"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:417fcf8d1b596b9481603d6987def1d6cfcebdb9739f53940887334a7de855fa",
+              "size": "45941853"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:95d6ed2311d6a72bf349e152d096aeeb151f9c5989bfa3120facb1c99e879196",
+              "size": "27596410"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:642b6a135c38ff1d5e54ad2c29469b769f8e1b101dab363d06101b02284bb979",
+              "size": "27387730"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/xtensa-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:2d958570ff6aa69ed32cbb076cbaf303349a26b3301a7c4628be8d7ad39cf9f1",
+              "size": "29561472"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b5f7cc3e4b5a58db655754083ed9652e4953e71c3b4922fb624e7a034ec24a64",
+              "size": 26947336
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:816acfae38b6b443f4f1590395f68f079243539259d19c7772ae6416c6519444",
+              "size": 27134508
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4dd1bace0633196fddfdcef3cebcc4bbfce22f5a0d2d1e3d618f3d8a6cbfcacc",
+              "size": 25205239
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27744d09d171be2f55ec15fa7f2d7f8ff94d33f7e130d24ebe082cb6c438618b",
+              "size": 25978028
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:1432faa12d7301133f6ee654d60751b57adcc6cf323ee1ecc393f06f0225eff4",
+              "size": 38386785
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d0b542ef070ea72857f9cf554f176a0a9d868cd59e05ac293ad39402bcc5277d",
+              "size": 21671964
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1678b06aa80b1d689d05548056635efde5b73b98f2c3de5d555bcfc6f374c5d0",
+              "size": 23241302
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:7060df4b6aa133e282147c3651d50222d677d6a0fff92979c500353b099a3f41",
+              "size": 25135265
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a16942465d33c7f0334c16e83bc6feb62e06eeb79cf19099293480bb8d48c0cd",
+              "size": "593721156"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:22486233d0e0fd58a54ae453b701f195f1432fc6f2e17085b9d6c8d5d9acefb7",
+              "size": "587879927"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:27a72d5d96cdb56dae2a1da5dfde1717c18a8c1f9a1454c8e34a8bd34abe662d",
+              "size": "586531522"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b7bd6e4cd53a4c55831d48e96a3d500bfffb091bec84a30bc8c3ad687e3eb3a2",
+              "size": "597070471"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:5f8b571e1aedbe9f856f3bdeca6600cd5510ccff1ca102c4f001421eda560585",
+              "size": "602343061"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:a7276042a7eb2d33c2dff7167539e445c32c07d43a2c6827e86d035642503e0b",
+              "size": "578521565"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7",
+              "size": "672055172"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c",
+              "size": "677812937"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e7fbfffbb19dcd3764a9848a141bf44e19ad0b48e0bd1515912345c26fe52fba",
+              "size": "294346758"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a178a895b807ed2e87d5d62153c36a6aae048581f527c0eb152f0a02b8de9571",
+              "size": "288374597"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4a2f176d0f5bc8a70645975e2a08ea94145fb69b7225c5cdcbd6024a4836aaf5",
+              "size": "287737495"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7a6f02f1b2effafb18600bbf602818f6923fd320f000fb8659f34acbfda8812f",
+              "size": "299138540"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:a193b4f025d0d836b0a9d9cbe760af1c53e53af66fc332fe98952bc4c456dd9a",
+              "size": "305025700"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7082dd2e2123dea5609a24092d19ac6612ae7e219df1d298de6b2f64cb4af0df",
+              "size": "285458443"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:590bfb10576702639825581cc00c445da6e577012840a787137417e80d15f46d",
+              "size": "366573064"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:413eb9f6adf8fdaf25544d014c850fc09eb38bb93a2fc5ebd107ab1b0de1bb3a",
+              "size": "369820297"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:1eb0d65990547ee9706b90406600cbc3638814d5feb7c1f7b44bb5416478a5bd",
+              "size": "257615266"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:921fcdc170c7fe5d6a0a30470ed1875c8926d910c19739fc950c8d1836e4c1c5",
+              "size": "253094184"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:f66e06312b58251c2121c1b1df1102565708573b86b2a9fe0c03ea1b0e9a7511",
+              "size": "252558021"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:8abcac0331ef8973d1c705e77523364ebec7e98b37640d4a1d036912f3cbe946",
+              "size": "261248375"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:76a334bc75a4e3891c222c84d7968817f2d0699d2976fc2a1658e56395283bec",
+              "size": "268987133"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:f30571945b257a10a26901bba3c5892e07c192aacf9ed6e8fcd11ca36ed827d2",
+              "size": "252159713"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:a5dfbb6dbf6fc6c6ea9beb2723af059ba3c5b2c86c2f0dc3b21afdc7bb229bf5",
+              "size": "324863847"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9deae9e0013b2f7bbf017f9c8135755bfa89522f337c7dca35872bf12ec08176",
+              "size": "328092732"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "16.2_20250324-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:f9b172d8d72d0a1e2b0b80127df29263a0cb0d0c4e998e09c27031bfac09f3ec",
+              "size": "36528201"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68bb6a85fb58b8a738f799e8fb4fa1f56cfeffc4de803ceb03c8a33cb2cd919d",
+              "size": "35643464"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:673038ab9fb2b7391ff9252824194e3b9e40668efe9ce54d1e582a9d6c51f04a",
+              "size": "32154574"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:62f05d5fe08145b25e423dd0b3f1ae260be99abf5462b8cfd918bf2231e26e30",
+              "size": "35410891"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:63ae12cfbab648e2d2ca7a700a0c615c4f36a6fbe6876c11ba108115ee0d60f2",
+              "size": "55359246"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:bfbe49774f839020cef988537da0a06896dfe4a382674c62285361ed9bd4aee3",
+              "size": "43926592"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:e8b84eec990ff514729b3770edf2b543f36670f43663ce0c3b624fb4884812ca",
+              "size": "32914955"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v16.2_20250324/riscv32-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-16.2_20250324-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:37c79178900c19ca7487c26af4b5ad6b0d3f34683bd0e9c2ddd39038c999e429",
+              "size": "32667353"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13",
+              "size": "30707431"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55",
+              "size": "30824065"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7",
+              "size": "29000575"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2",
+              "size": "29947521"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9",
+              "size": "44196117"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320",
+              "size": "36794404"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730",
+              "size": "26486295"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317",
+              "size": "27942579"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2c78b806be176b1e449e07ff83429d38dfc39a13f89a127ac1ffa6c1230537a0",
+              "size": "36630145"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:33f80117c8777aaff9179e27953e41764c5c46b3c576dc96a37ecc7a368807ec",
+              "size": "36980143"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:292e6ec0a9381c1480bbadf5caae25e86428b68fb5d030c9be7deda5e7f070e0",
+              "size": "34950318"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68a25fbcfc6371ec4dbe503ec92211977eb2006f0c29e67dbce6b93c70c6b7ec",
+              "size": "35801607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:322c722e6c12225ed8cd97f95a0375105756dc5113d369958ce0858ad1a90257",
+              "size": "52618688"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c2224b3a8d02451c530cf004c29653292d963a1b4021b4b472b862b6dbe97e0b",
+              "size": "33149392"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:4b42149a99dd87ee7e6dde25c99bad966c7f964253fa8f771593d7cef69f5602",
+              "size": "31635103"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:728231546ad5006d34463f972658b2a89e52f660a42abab08a29bedd4a8046ad",
+              "size": "33400816"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20221002-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:f0cf0821eaac7e8cf2c63b14f2b69d612f4f8c266b29d02d5547b7d7cbbd0e11",
+              "size": "32035173"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6812344dfb5c50a81d2fd8354463516f0aa5f582e8ab406cbaeca8722b45fa94",
+              "size": "32362642"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:b73042b8e1df5a3fc8008ec3cd000ef579f155d72a66c6ade1d48906d843e738",
+              "size": "30580290"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3f07a1b8dc87127a1a6bec6fbace4f8daca44755356f0692e9a5d4c8c4bfd81d",
+              "size": "31309798"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bb139229f9a4998cab9cfb617d3ecb05b77cbfa9a3a59c54969035f1b4007487",
+              "size": "46120661"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:f6513b57f28245497f9c39a201f3f6444d4180e16b39765c629e01036286c0e6",
+              "size": "27662484"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:8287fa2891e8d032e8283210048d653705791cda31504369418288d3e4753dd6",
+              "size": "27839143"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20221002/riscv32-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20221002-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9debae1135df8f5868a9d945468f0480cdaab25f77ead6a55cc85142c4487abd",
+              "size": "29404989"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6bf5b5d2d407e074af2a74fc826764934ac1625a1751c52fbc0d4d7772061f8f",
+              "size": 26799809
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e54ef67cdb5724fc2da8f0487f19b2c83c08b560fff317f5ffd98fbb230b397a",
+              "size": 27021672
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:86772c6aee8a05b2c75a6b04e9da630e35e8415b64da8ccde92a5fb2d3c7fcf4",
+              "size": 25532577
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3463be3e24182b7f1bd0fb232020534445b2d0ea0e7093c1b4f4da102b3baf52",
+              "size": 26188698
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:a9db1811ebb9271134eba2f7c303fc2587bd4b2a1ae33cd05ff2605cd2fb30d2",
+              "size": 38397584
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c94fb6d726b8d97e65e23237f5126a41343bca8f22a0414df5f0e6777e36f51c",
+              "size": 21593613
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:20cdee8a1c01428363ef02f4cc8035c65508d6b43560c525733eae94b7c7bb50",
+              "size": 23436802
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:add72366485b784b66837ce263548980f1df144d0954c42d75a81f6acbd43cac",
+              "size": 24802315
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20250226-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-amd64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:914c726342ba5828e53f41aa454f01f317c42d8e6772d3d874593a6960fc4729",
+              "size": "2414924"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-arm64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:c44ee99a9209c0234dbbcec86339fd685f5c61a763b29c33eba590bf62db2296",
+              "size": "2293923"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-linux-armel-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:21ab6af3cf05f9290f4d59f1f381d5094dd2755fc528d3d2feb9334348fc0d8d",
+              "size": "2436071"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-macos-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:0b5751699e93b6d101381611c96216ddff8c7dfd16425c610993fa27993f9a0a",
+              "size": "2525387"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-macos-arm64-0.12.0-esp32-20250226.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20250226.tar.gz",
+              "checksum": "SHA-256:8bffbbb594b27a4971a3922792135f8c836fff26991f7f450094386920263531",
+              "size": "2568843"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-win32-0.12.0-esp32-20250226.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20250226.zip",
+              "checksum": "SHA-256:aaf3c955bb4eb47805a1ba108dfd07a8a56ce720cb40194a354362b5f0961230",
+              "size": "2960226"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250226/openocd-esp32-win64-0.12.0-esp32-20250226.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20250226.zip",
+              "checksum": "SHA-256:79baf35325117a53093b62f6b9bee677dd12275d7066e3f8a274d2a80e986b6e",
+              "size": "2960225"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20241016-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:e82b0f036dc99244bead5f09a86e91bb2365cbcd1122ac68261e5647942485df",
+              "size": "2398717"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:8f8daf5bd22ec5d2fa9257b0862ec33da18ee677e023fb9a9eb17f74ce208c76",
+              "size": "2271584"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:bc9c020ecf20e2000f76cffa44305fd5bc44d2e688ea78cce423399d33f19767",
+              "size": "2414206"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:02a2dffe801a2d005fa9e614d80ff8173395b2cb0b5d3118d0229d094a9946a7",
+              "size": "2508089"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:c382f9e884d6565cb6089bff5f200f4810994667d885f062c3d3c5625a0fa9d6",
+              "size": "2552569"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:3b5d615e0a72cc771a45dd469031312d5881c01d7b6bc9edb29b8b6bda8c2e90",
+              "size": "2946244"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:5e7b2fd1947d3a8625f6a11db7a2340cf2f41ff4c61284c022c7d7c32b18780a",
+              "size": "2946244"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240821-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:f8c68541fa38307bc0c0763b7e1e3fe4e943d5d45da07d817a73b492e103b652",
+              "size": "2373094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:4d6e263d84e447354dc685848557d6c284dda7fe007ee451f729a7edfa7baad7",
+              "size": "2251272"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:9d45679f2c4cf450d5e2350047cf57bb76dde2487d30cebce0a72c9173b5c45b",
+              "size": "2390074"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:565c8fabc5f19a6e7a0864a294d74b307eec30b9291d16d3fc90e273f0330cb4",
+              "size": "2485320"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:68c5c7cf3d15b9810939a5edabc6ff2c9f4fc32262de91fc292a180bc5cc0637",
+              "size": "2530336"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:463fc2903ddaf03f86ff50836c5c63cc696550b0446140159eddfd2e85570c5d",
+              "size": "2916409"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:550f57369f1f1f6cc600b5dffa3378fd6164d8ea8db7c567cf41091771f090cb",
+              "size": "2916408"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240318-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:cf26c5cef4f6b04aa23cd2778675604e5a74a4ce4d8d17b854d05fbcb782d52c",
+              "size": "2252682"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:9b97a37aa2cab94424a778c25c0b4aa0f90d6ef9cda764a1d9289d061305f4b7",
+              "size": "2132904"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b7e82776ec374983807d3389df09c632ad9bc8341f2075690b6b500319dfeaf4",
+              "size": "2271761"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b16c3082c94df1079367c44d99f7a8605534cd48aabc18898e46e94a2c8c57e7",
+              "size": "2365588"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:534ec925ae6e35e869e4e4e6e4d2c4a1eb081f97ebcc2dd5efdc52d12f4c2f86",
+              "size": "2406377"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230921-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:61e38e0a13a5c1664624ec1c397d7f7d6868554b0d345d3fb1f7294cce38cc4b",
+              "size": "2193783"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6430315dc1b926541c93cef63d2b08982543ad3f9fe6e0d7107c8a518ef20432",
+              "size": "2062058"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:5df16d8a91f013a547f6b3b914c655a9d267996a3b6503031b335ac04a4f8d15",
+              "size": "2206666"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:0a4f764934f488af18cdac2a0d152dd36b4870f3bec1a2d4e25b6b3b7a5258a0",
+              "size": "2305832"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6dce89048f642eb0559a915b6e514f90feb2a95afe21b84f0b0ebf2b27824816",
+              "size": "2341406"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230419-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:5144e7516cd75a2152b35ecae0a400f7d3d4424c2488fbacc49433564f54c70d",
+              "size": 2126949
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:1c4d900c738fe00730c6033abb6cf1cc6587717dbeee291d5908272d153d329a",
+              "size": 1989161
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:293258fd67618dd352e1096137ad9f2b801926eaf74ffcd570540ae94ad8ee5c",
+              "size": 2129727
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:621aad7d011c6817cde9570dfea42c7bcc699458bf43c37706cb4c2f6475a247",
+              "size": 2237976
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:3af7eac3a7de3939731ec4c13fb5d72a8e6ce5e5d274bb9697f5d93039561e42",
+              "size": 2270699
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20221026-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
+              "size": "2051435"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
+              "size": "1993843"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
+              "size": "2092111"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
+              "size": "2199855"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
+              "size": "2247179"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20220706-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
+              "size": "2077882"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
+              "size": "1902964"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
+              "size": "1954685"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:4ecaf51836cbf4ea3c19840018bfef3b0b8cd8fc3c95f6e1e043ca5bbeab9bf0",
+              "size": "64958202"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "checksum": "SHA-256:fff818573bce483ee793ac83c8211f6abf764aa3350f198228859f696a0a0b36",
+              "size": "31530030"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "checksum": "SHA-256:5b274bdff2f62e6a07c3c1dfa51b1128924621f661747eca3dbe0f77972f2f06",
+              "size": "33663882"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "checksum": "SHA-256:c733c83b58fcf5f642fbb2fddb8ff24640c2c785126cba0821fb70c4a5ceea7a",
+              "size": "32767836"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "checksum": "SHA-256:83c195a15981e6a5e7a130db2ccfb21e2d8093912e5b003681f9a5abadd71af7",
+              "size": "30121441"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:21f6c2155f0ec9e5b475c8a4bf59803d8cfb4d74f4e488a80f97da3d77542bba",
+              "size": "64632960"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-arm32.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-arm32.tar.gz",
+              "checksum": "SHA-256:818477f10814b2bd82078fc6695663ac84220d3947722ce1880a6c867d5c2997",
+              "size": "46042432"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-linux-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b377a130a4dca58f3a31c66ed0b9858cc057c998741222cccdb6e5a724651a1f",
+              "size": "54459357"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-macos-amd64.tar.gz",
+              "checksum": "SHA-256:25cc246b20230afc287ffdfe95f57b3fab23cec88a6dde3b5092ec05926b5431",
+              "size": "32386336"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev1-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b845d678db1d1559d82894e68366683a7fc3809371a5f5def67c30c9dee15912",
+              "size": "29841092"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev1-win64.zip",
+              "checksum": "SHA-256:f649a212e086b06ca6ee595feffd7a4706696ea43a2cd1a4f49352829e8ac96e",
+              "size": "35812159"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC2/esptool-v4.9.dev1-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev1-win64.zip",
+              "checksum": "SHA-256:f649a212e086b06ca6ee595feffd7a4706696ea43a2cd1a4f49352829e8ac96e",
+              "size": "35812159"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.8.1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:aaaaa25e1c64442ae93604812376783dbc50f34536221b5897456e12f01e1bfd",
+              "size": "64635657"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-arm64.tar.gz",
+              "checksum": "SHA-256:76170a9282bdc52fddd75e4498fd6bee55fe19088a34ab363b3aeff800d73f60",
+              "size": "54449306"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-linux-arm32.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-linux-arm32.tar.gz",
+              "checksum": "SHA-256:26b842e22a66b3d01e830a4784686a69cfb107d774a4093327ec6bba7bb17794",
+              "size": "45868720"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.8.1-macos.tar.gz",
+              "checksum": "SHA-256:6e1fc5ea04490e849c925c48d5cee590164fcf9b9bd419a7b014c2fb48a13743",
+              "size": "29828542"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC1/esptool-v4.8.1-win64.zip",
+              "archiveFileName": "esptool-v4.8.1-win64.zip",
+              "checksum": "SHA-256:3e97fb990fdd721b923b478eaaa046967c7919dbc9cbd04c445307571177918a",
+              "size": "33612728"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.6-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-macos.tar.gz",
+              "archiveFileName": "esptool-v4.6-macos.tar.gz",
+              "checksum": "SHA-256:885ec69fcffdcb9e7c6eacd2589f13a45ce6bcb6742bea368ec3a73bcca6dd59",
+              "size": "5851297"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5.1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-macos.tar.gz",
+              "checksum": "SHA-256:78b52acfd51541ceb97cee893b7d4d49b8ddc284602be8c73ea47e3d849e0956",
+              "size": "5850888"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5-macos.tar.gz",
+              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
+              "size": "5850835"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
+              "archiveFileName": "esptool-v4.5-win64.zip",
+              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
+              "size": "6639416"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.2.1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
+              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
+              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
+              "size": "5816598"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.3.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
+              "archiveFileName": "esptool-3.3-macos.tar.gz",
+              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
+              "size": "6944975"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.1.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
+              "archiveFileName": "esptool-3.1.0-windows.zip",
+              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
+              "size": "7411889"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
+              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
+              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
+              "size": "6776909"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.0.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
+              "archiveFileName": "esptool-3.0.0.2-windows.zip",
+              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
+              "size": "3434736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
+              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
+              "size": "3859642"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            }
+          ]
+        },
+        {
+          "version": "2.6.1-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-windows.zip",
+              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.1-windows.zip",
+              "size": "3422445"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-macos.tar.gz",
+              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
+              "size": "3837085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            }
+          ]
+        },
+        {
+          "version": "2.6.0-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-windows.zip",
+              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.0-windows.zip",
+              "size": "3421208"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-macos.tar.gz",
+              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
+              "size": "3835660"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            }
+          ]
+        },
+        {
+          "version": "3.0.0-gnu12-dc7f933-cn",
+          "name": "mklittlefs",
+          "systems": [
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
+              "size": "44651"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
+              "size": "37211"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
+              "size": "48033"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
+              "size": "332655"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
+              "size": "362608"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
+              "size": "46778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
+              "size": "345132"
+            }
+          ]
+        },
+        {
+          "name": "mkspiffs",
+          "version": "0.2.3-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
+              "size": "249809"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "i386-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
+              "size": "50646"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
+              "size": "48751"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs2",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs3",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
+              "size": "93104016"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
+              "size": "90569312"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
+              "size": "86838362"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
+              "size": "86187540"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
+              "size": "92580267"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
+              "size": "97807647"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
+              "size": "116464819"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
+              "size": "119511910"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
+              "size": "90565318"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
+              "size": "86860292"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
+              "size": "86183421"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
+              "size": "92582250"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
+              "size": "97808961"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
+              "size": "112578260"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
+              "size": "115278695"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
+              "size": "86361217"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
+              "size": "84520407"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
+              "size": "88375391"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
+              "size": "93357296"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
+              "size": "105603626"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "1.22.0-97-gc752ad5-5.2.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
+              "size": "125747216"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
+              "size": "50525386"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
+              "size": "44225380"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
+              "size": "45575521"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            }
+          ]
+        },
+        {
+          "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+          "name": "xtensa-esp32-elf-gcc",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
+              "host": "i686-mingw32",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "size": "125719261"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "46517409"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "44219107"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "45566336"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "size": "50655584"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
+              "size": "66457613"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
+              "size": "90894048"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
+              "size": "87178224"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
+              "size": "86569314"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
+              "size": "92884013"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
+              "size": "98224709"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
+              "size": "116924759"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
+              "size": "119912142"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
+              "size": "90901736"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
+              "size": "87176557"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
+              "size": "86581102"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
+              "size": "92875986"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
+              "size": "98212907"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
+              "size": "113022469"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
+              "size": "115696999"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
+              "size": "86687290"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
+              "size": "84916701"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
+              "size": "88699953"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
+              "size": "93757895"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
+              "size": "106013515"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
+              "size": "66791095"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
+              "size": "90903617"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
+              "size": "87065204"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
+              "size": "86455731"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
+              "size": "92906274"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
+              "size": "98553473"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
+              "size": "116847008"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
+              "size": "120066269"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
+              "size": "191209735"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
+              "size": "106843321"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
+              "size": "103277393"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
+              "size": "103062256"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
+              "size": "109460025"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
+              "size": "113703959"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
+              "size": "144711970"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
+              "size": "146606480"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
+              "size": "106837189"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
+              "size": "103273444"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
+              "size": "103058744"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
+              "size": "109447789"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
+              "size": "113672945"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
+              "size": "140809778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
+              "size": "142365782"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
+              "size": "152812483"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
+              "size": "151726623"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
+              "size": "155430963"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
+              "size": "159836199"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
+              "size": "191266312"
+            }
+          ]
+        },
+        {
+          "version": "2.3.1-cn",
+          "name": "esptool",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-windows.zip",
+              "checksum": "SHA-256:c187763d0faac7da7c30a292a23c759bbc256fcd084dc8846ed284000cb0fe29",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.3.1-windows.zip",
+              "size": "3396085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-macos.tar.gz",
+              "checksum": "SHA-256:cd922418f02e0ca11dc066b36a22646a1b441da00d762b4464ca598c902c5ecb",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.3.1-macos.tar.gz",
+              "size": "3810932"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/package_esp32_index.json b/package_esp32_index.json
index 453549f36c2..5ff8cbe1d01 100644
--- a/package_esp32_index.json
+++ b/package_esp32_index.json
@@ -12,12 +12,12 @@
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.7",
+          "version": "3.2.0",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
-          "archiveFileName": "esp32-2.0.7.zip",
-          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
-          "size": "278966011",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.2.0/esp32-3.2.0.zip",
+          "archiveFileName": "esp32-3.2.0.zip",
+          "checksum": "SHA-256:d38b16fef6e519fc0d19bc5af0b39cdbed7dfc2ce69214c1971ded0e61ecd911",
+          "size": "25447136",
           "help": {
             "online": ""
           },
@@ -25,6 +25,18 @@
             {
               "name": "ESP32 Dev Board"
             },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
             {
               "name": "ESP32-S2 Dev Board"
             },
@@ -32,39 +44,44 @@
               "name": "ESP32-S3 Dev Board"
             },
             {
-              "name": "ESP32-C3 Dev Board"
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-2f7dcd86-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp-x32",
+              "version": "2411"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "esp-2021r2-patch5-8.4.0"
+              "name": "esp-rv32",
+              "version": "2411"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
               "name": "openocd-esp32",
-              "version": "v0.11.0-esp32-20221026"
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "4.5"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -75,18 +92,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.6",
+          "version": "3.1.3",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
-          "archiveFileName": "esp32-2.0.6.zip",
-          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
-          "size": "264579419",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.3/esp32-3.1.3.zip",
+          "archiveFileName": "esp32-3.1.3.zip",
+          "checksum": "SHA-256:747160dbc81c6634c7bff9e8a57213e9982d52fe90d2a8f75a93a9f7b527defb",
+          "size": "25396700",
           "help": {
             "online": ""
           },
@@ -102,38 +124,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch5"
+              "name": "esp-rv32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "esptool_py",
-              "version": "4.2.1"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
               "name": "openocd-esp32",
-              "version": "v0.11.0-esp32-20220706"
+              "version": "v0.12.0-esp32-20241016"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -144,18 +174,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.5",
+          "version": "3.1.2",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
-          "archiveFileName": "esp32-2.0.5.zip",
-          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
-          "size": "260916106",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.2/esp32-3.1.2.zip",
+          "archiveFileName": "esp32-3.1.2.zip",
+          "checksum": "SHA-256:17214f51a7b9de547baa777419d2b041e1f09cfb17adb33c18617a756190f9f6",
+          "size": "25396684",
           "help": {
             "online": ""
           },
@@ -171,33 +206,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "4.2.1"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -208,18 +256,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.4",
+          "version": "3.1.1",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
-          "archiveFileName": "esp32-2.0.4.zip",
-          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
-          "size": "259715595",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.1/esp32-3.1.1.zip",
+          "archiveFileName": "esp32-3.1.1.zip",
+          "checksum": "SHA-256:e20982b2860eab4900ce16a0f2b7f9fc3ffb205e490dc933f625d53a5c9e8129",
+          "size": "25253828",
           "help": {
             "online": ""
           },
@@ -235,33 +288,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-cfea4f7c-v1"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.3.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -272,18 +338,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.3",
+          "version": "3.1.0",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
-          "archiveFileName": "esp32-2.0.3.zip",
-          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
-          "size": "246542267",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0/esp32-3.1.0.zip",
+          "archiveFileName": "esp32-3.1.0.zip",
+          "checksum": "SHA-256:0db044159e3fc737435b3f1d547bf85c60a33a175342c317d2a5c08c42977f80",
+          "size": "25225607",
           "help": {
             "online": ""
           },
@@ -299,33 +370,46 @@
             },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-083aad99-v2"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-x32",
+              "version": "2405"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s3-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2-patch3"
+              "name": "esp-rv32",
+              "version": "2405"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.3.0"
+              "version": "4.9.dev3"
             },
             {
               "packager": "esp32",
@@ -336,18 +420,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.2",
+          "version": "3.0.7",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
-          "archiveFileName": "esp32-2.0.2.zip",
-          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
-          "size": "151846438",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.7/esp32-3.0.7.zip",
+          "archiveFileName": "esp32-3.0.7.zip",
+          "checksum": "SHA-256:6b48f5bd889e55d7b93b95849dff77c6a5e4b9ee58c7298d7872d558a4d04931",
+          "size": "24546342",
           "help": {
             "online": ""
           },
@@ -358,30 +447,61 @@
             {
               "name": "ESP32-S2 Dev Board"
             },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
@@ -392,18 +512,23 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.1",
+          "version": "3.0.6",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
-          "archiveFileName": "esp32-2.0.1.zip",
-          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
-          "size": "148976301",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.6/esp32-3.0.6.zip",
+          "archiveFileName": "esp32-3.0.6.zip",
+          "checksum": "SHA-256:7b4d87d0a18e69cba81e7aa7e69f088dc7c4f6cc89a20adc256bf77c86992dc5",
+          "size": "24546256",
           "help": {
             "online": ""
           },
@@ -414,30 +539,61 @@
             {
               "name": "ESP32-S2 Dev Board"
             },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
             {
               "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r2"
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
@@ -448,52 +604,88 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "2.0.0",
+          "version": "3.0.5",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
-          "archiveFileName": "esp32-2.0.0.zip",
-          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
-          "size": "139313137",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.5/esp32-3.0.5.zip",
+          "archiveFileName": "esp32-3.0.5.zip",
+          "checksum": "SHA-256:6ead4c452e69146b8eb08bee5a77898acc75a0637e9fccb5bbf665385ddc28db",
+          "size": "24481707",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "riscv32-esp-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-33fbade6"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "name": "xtensa-esp32s2-elf-gcc",
-              "version": "gcc8_4_0-esp-2021r1"
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.1.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
@@ -504,1914 +696,5838 @@
               "packager": "esp32",
               "name": "mklittlefs",
               "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.6",
+          "version": "3.0.4",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
-          "archiveFileName": "esp32-1.0.6.zip",
-          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
-          "size": "51126662",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-3.0.4.zip",
+          "archiveFileName": "esp32-3.0.4.zip",
+          "checksum": "SHA-256:58fcd9b033be0358afbcbcf9a1d8eb216217f65f6b28f2e2cd739c7d016dda4f",
+          "size": "23937821",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-b6b4727c58"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
           "name": "esp32",
           "architecture": "esp32",
-          "version": "1.0.5",
+          "version": "3.0.3",
           "category": "ESP32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
-          "archiveFileName": "esp32-1.0.5.zip",
-          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
-          "size": "49552769",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-3.0.3.zip",
+          "archiveFileName": "esp32-3.0.3.zip",
+          "checksum": "SHA-256:b4aa70711293955a9835ad641279dc7cd524aeb405f7d294afa05c2ece7ded45",
+          "size": "23920341",
           "help": {
             "online": ""
           },
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "name": "xtensa-esp32-elf-gcc",
-              "version": "1.22.0-97-gc752ad5-5.2.0"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-dc859c1e67"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
               "name": "esptool_py",
-              "version": "3.0.0"
+              "version": "4.6"
             },
             {
               "packager": "esp32",
               "name": "mkspiffs",
               "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "category": "ESP32",
           "name": "esp32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
-          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "architecture": "esp32",
+          "version": "3.0.2",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-3.0.2.zip",
+          "archiveFileName": "esp32-3.0.2.zip",
+          "checksum": "SHA-256:bd90630fbe9e99f3bb3340c25a87574d5551dd2823849adbf285f8430b6884cf",
+          "size": "23893902",
           "help": {
             "online": ""
           },
-          "version": "1.0.4",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.4.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-bd2b9390ef"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "size": "36853332"
-        },
-        {
-          "category": "ESP32",
-          "name": "esp32",
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
-          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
-          "help": {
-            "online": ""
-          },
-          "version": "1.0.3",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.3.zip",
-          "boards": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "name": "WEMOS D1 MINI ESP32"
-            }
-          ],
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
+              "name": "esptool_py",
+              "version": "4.6"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
-          ],
-          "size": "36811826"
+          ]
         },
         {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.1",
           "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-3.0.1.zip",
+          "archiveFileName": "esp32-3.0.1.zip",
+          "checksum": "SHA-256:b7169d0dd51b64e450a7c09fafb7a4782820a9bc745f7b1e4618316440db0930",
+          "size": "23895257",
           "help": {
             "online": ""
           },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
-          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
-          "version": "1.0.2",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.2.zip",
           "boards": [
             {
-              "name": "ESP32 Dev Module"
+              "name": "ESP32 Dev Board"
             },
             {
-              "name": "WEMOS LoLin32"
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
             }
           ],
-          "size": "31174160",
           "toolsDependencies": [
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
               "packager": "esp32",
-              "version": "2.6.1",
-              "name": "esptool_py"
+              "name": "esp-x32",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "name": "esp32"
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
-          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
-          "name": "esp32",
-          "version": "1.0.1",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.1.zip",
-          "size": "31273425",
-          "toolsDependencies": [
+              "name": "esp-xs2",
+              "version": "2302"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "esp-xs3",
+              "version": "2302"
             },
             {
               "packager": "esp32",
-              "version": "2.6.0",
-              "name": "esptool_py"
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
-            {
-              "name": "ESP32 Dev Module"
+              "name": "esp-rv32",
+              "version": "2302"
             },
             {
-              "name": "WEMOS LoLin32"
-            }
-          ]
-        },
-        {
-          "category": "ESP32",
-          "help": {
-            "online": ""
-          },
-          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
-          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
-          "name": "esp32",
-          "version": "1.0.0",
-          "architecture": "esp32",
-          "archiveFileName": "esp32-1.0.0.zip",
-          "size": "26381887",
-          "toolsDependencies": [
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
+            },
             {
               "packager": "esp32",
-              "version": "1.22.0-80-g6c4433a-5.2.0",
-              "name": "xtensa-esp32-elf-gcc"
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
               "packager": "esp32",
-              "version": "2.3.1",
-              "name": "esptool"
+              "name": "esptool_py",
+              "version": "4.6"
             },
             {
               "packager": "esp32",
-              "version": "0.2.3",
-              "name": "mkspiffs"
-            }
-          ],
-          "boards": [
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
             {
-              "name": "ESP32 Dev Module"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "name": "WEMOS LoLin32"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
-        }
-      ],
-      "tools": [
+        },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-3.0.0.zip",
+          "archiveFileName": "esp32-3.0.0.zip",
+          "checksum": "SHA-256:0960cf786992e0e3770d8c1e1979eaf01bd0ac9209b24fb00948cf93d43cf95c",
+          "size": "23891610",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
-              "size": "94397702"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
-              "size": "90684219"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
-              "size": "89954866"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
-              "size": "96354023"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
-              "size": "101712946"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
-              "size": "93104016"
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
-              "size": "118610020"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
-              "size": "121846722"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
-              "size": "94397702"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
-              "size": "90684219"
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
-              "size": "89954866"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
-              "size": "96354023"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
-              "size": "101712946"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
-              "size": "118610020"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
-              "size": "121846722"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.17",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.17/esp32-2.0.17.zip",
+          "archiveFileName": "esp32-2.0.17.zip",
+          "checksum": "SHA-256:1f8658d4b18a8001ce782142ad08164af2991d70b83a147c3437a6ee30a9b225",
+          "size": "254658377",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
-              "size": "90569312"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
-              "size": "86838362"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
-              "size": "86187540"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
-              "size": "92580267"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
-              "size": "97807647"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
-              "size": "116464819"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
-              "size": "119511910"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
-              "size": "90565318"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
-              "size": "86860292"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
-              "size": "86183421"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
-              "size": "92582250"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
-              "size": "97808961"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
-              "size": "112578260"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
-              "size": "115278695"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r1",
-          "systems": [
-            {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
-              "size": "86361217"
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.16",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.16/esp32-2.0.16.zip",
+          "archiveFileName": "esp32-2.0.16.zip",
+          "checksum": "SHA-256:6615fd16fd6d3ee2fa7ca2dd40a4f65220eddf094a88b7cee2141a0c077987bc",
+          "size": "254657760",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
-              "size": "84520407"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
-              "size": "88375391"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
-              "size": "93357296"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
-              "size": "105603626"
+              "name": "Arduino Nano ESP32"
             }
-          ]
-        },
-        {
-          "name": "xtensa-esp32-elf-gcc",
-          "version": "1.22.0-97-gc752ad5-5.2.0",
-          "systems": [
+          ],
+          "toolsDependencies": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
-              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
-              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
-              "size": "125747216"
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
-              "size": "50525386"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
-              "size": "44225380"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
-              "size": "45575521"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
-              "size": "50657803"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
-              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
-              "size": "50657803"
-            }
-          ]
-        },
-        {
-          "version": "1.22.0-80-g6c4433a-5.2.0",
-          "name": "xtensa-esp32-elf-gcc",
-          "systems": [
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
-              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
-              "host": "i686-mingw32",
-              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
-              "size": "125719261"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "46517409"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "44219107"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
-              "host": "i686-pc-linux-gnu",
-              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
-              "size": "45566336"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
-              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
-              "size": "50655584"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.15",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip",
+          "archiveFileName": "esp32-2.0.15.zip",
+          "checksum": "SHA-256:2219c1636264f55e19b2a5e7f41c81b669b1355017b15ee31773c85674b3e9bb",
+          "size": "254657764",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
-              "size": "67849099"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
-              "size": "64154532"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
-              "size": "63448105"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
-              "size": "69656104"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
-              "size": "75154138"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
-              "size": "66457613"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
-              "size": "82338511"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
-              "size": "85579252"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
-              "size": "67849099"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
-              "size": "64154532"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
-              "size": "63448105"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
-              "size": "69656104"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
-              "size": "75154138"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
-              "size": "82338511"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
-              "size": "85579252"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.14",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.14/esp32-2.0.14.zip",
+          "archiveFileName": "esp32-2.0.14.zip",
+          "checksum": "SHA-256:77c71eba520c97ab30161eb2f9c6a46b019e48d13936244b18f6ad4dbecf0a58",
+          "size": "252506057",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
-              "size": "90894048"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
-              "size": "87178224"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
-              "size": "86569314"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
-              "size": "92884013"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
-              "size": "98224709"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
-              "size": "116924759"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
-              "size": "119912142"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
-              "size": "90901736"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
-              "size": "87176557"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
-              "size": "86581102"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
-              "size": "92875986"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230419"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
-              "size": "98212907"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
-              "size": "113022469"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
-              "size": "115696999"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s2-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r1",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.13",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.13/esp32-2.0.13.zip",
+          "archiveFileName": "esp32-2.0.13.zip",
+          "checksum": "SHA-256:ee4c277bac0eecb7ca8853780da9d49b4e260926059cf6a9f9bac1923059de0c",
+          "size": "250665913",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
-              "size": "86687290"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
-              "size": "84916701"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
-              "size": "88699953"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
-              "size": "93757895"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
-              "size": "106013515"
+              "name": "Arduino Nano ESP32"
             }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+          ],
+          "toolsDependencies": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
-              "size": "68099473"
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
-              "size": "64233211"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
-              "size": "63530586"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
-              "size": "70025439"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
-              "size": "75719772"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
-              "size": "66791095"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
-              "size": "82665716"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
-              "size": "86022563"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.12",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.12/esp32-2.0.12.zip",
+          "archiveFileName": "esp32-2.0.12.zip",
+          "checksum": "SHA-256:9a4f844ca67812c547a9635cdb0dd2c347cae7a3e855f95f9d490b2f8d340dbe",
+          "size": "250664387",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
-              "size": "68099473"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
-              "size": "64233211"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
-              "size": "63530586"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
-              "size": "70025439"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
-              "size": "75719772"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
-              "size": "82665716"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
-              "size": "86022563"
-            }
-          ]
-        },
-        {
-          "name": "xtensa-esp32s3-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
-              "size": "90903617"
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
-              "size": "87065204"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
-              "size": "86455731"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
-              "size": "92906274"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
-              "size": "98553473"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
-              "size": "116847008"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
-              "size": "120066269"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "esp-2021r2-patch5-8.4.0",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.11",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.11/esp32-2.0.11.zip",
+          "archiveFileName": "esp32-2.0.11.zip",
+          "checksum": "SHA-256:d15386308dc72f94816ce80b5508af999f2fd0d88eb5e1ffba48316ab0b9c5d6",
+          "size": "250401265",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
-              "size": "192388486"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
-              "size": "188626914"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
-              "size": "188624050"
+              "name": "ESP32-S3 Dev Board"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
-              "size": "194606113"
+              "name": "ESP32-C3 Dev Board"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
-              "size": "199411930"
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
-              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
-              "size": "191209735"
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
-              "size": "257844437"
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
-              "size": "259712666"
-            }
-          ]
-        },
-        {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch5",
-          "systems": [
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
-              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
-              "size": "192388486"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
-              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
-              "size": "188626914"
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
-              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
-              "size": "188624050"
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
-              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
-              "size": "194606113"
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
-              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
-              "size": "199411930"
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
             },
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
-              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
-              "size": "257844437"
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
-              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
-              "size": "259712666"
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
-          "version": "gcc8_4_0-esp-2021r2-patch3",
-          "systems": [
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.10",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.10/esp32-2.0.10.zip",
+          "archiveFileName": "esp32-2.0.10.zip",
+          "checksum": "SHA-256:6028cb623c838723c41000869963d95f7cb811d58643133068eed31c03c2d7c0",
+          "size": "250401273",
+          "help": {
+            "online": ""
+          },
+          "boards": [
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
-              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
-              "size": "106843321"
+              "name": "ESP32 Dev Board"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
-              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
-              "size": "103277393"
+              "name": "ESP32-S2 Dev Board"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
-              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
-              "size": "103062256"
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.9",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esp32-2.0.9.zip",
+          "archiveFileName": "esp32-2.0.9.zip",
+          "checksum": "SHA-256:37072185026db3cdc0ed4b6fb12840d7f41571a16c60eec97bec2a4abec8dcee",
+          "size": "278964028",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.8",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip",
+          "archiveFileName": "esp32-2.0.8.zip",
+          "checksum": "SHA-256:2c5daa3ce7456e752fb8d8a35b0b6b2eb8e494032cba57569ba12dd53eb235f2",
+          "size": "278963636",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.7",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
+          "archiveFileName": "esp32-2.0.7.zip",
+          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
+          "size": "278966011",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.6",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
+          "archiveFileName": "esp32-2.0.6.zip",
+          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
+          "size": "264579419",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20220706"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.5",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
+          "archiveFileName": "esp32-2.0.5.zip",
+          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
+          "size": "260916106",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.4",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
+          "archiveFileName": "esp32-2.0.4.zip",
+          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
+          "size": "259715595",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.3",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
+          "archiveFileName": "esp32-2.0.3.zip",
+          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
+          "size": "246542267",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.2",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
+          "archiveFileName": "esp32-2.0.2.zip",
+          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
+          "size": "151846438",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.1",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
+          "archiveFileName": "esp32-2.0.1.zip",
+          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
+          "size": "148976301",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.0",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
+          "archiveFileName": "esp32-2.0.0.zip",
+          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
+          "size": "139313137",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.6",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
+          "archiveFileName": "esp32-1.0.6.zip",
+          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
+          "size": "51126662",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.5",
+          "category": "ESP32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
+          "archiveFileName": "esp32-1.0.5.zip",
+          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
+          "size": "49552769",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
+          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.4",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.4.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36853332"
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
+          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.3",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.3.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36811826"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
+          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
+          "version": "1.0.2",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.2.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ],
+          "size": "31174160",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "name": "esp32"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
+          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
+          "name": "esp32",
+          "version": "1.0.1",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.1.zip",
+          "size": "31273425",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.0",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
+          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
+          "name": "esp32",
+          "version": "1.0.0",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.0.zip",
+          "size": "26381887",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.3.1",
+              "name": "esptool"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        }
+      ],
+      "tools": [
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-2f7dcd86-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-489d7a2b-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-cfea4f7c-v1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-083aad99-v2",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-632e0c2a",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-33fbade6",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-b6b4727c58",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-dc859c1e67",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-bd2b9390ef",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-442a798083",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2411",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b1859df334a85541ae746e1b86439f59180d87f8cf1cc04c2e770fadf9f006e9",
+              "size": "323678089"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7ff023033a5c00e55b9fc0a0b26d18fb0e476c24e24c5b0459bcb2e05a3729f1",
+              "size": "320064691"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:bb11dbf3ed25d4e0cc9e938749519e8236cfa2609e85742d311f1d869111805a",
+              "size": "319454139"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:5ac611dca62ec791d413d1f417d566c444b006d2a4f97bd749b15f782d87249b",
+              "size": "328335914"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:15b3e60362028eaeff9156dc82dac3f1436b4aeef3920b28d7650974d8c34751",
+              "size": "336215844"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:45c475518735133789bacccad31f872318b7ecc0b31cc9b7924aad880034f0bf",
+              "size": "318797396"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8",
+              "size": "382457717"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028",
+              "size": "386316009"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2405",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bce77e8480701d5a90545369d1b5848f6048eb39c0022d2446d1e33a8e127490",
+              "size": "208911713"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7c9e3c1adc733d042ed87b92daa1d6396e1b441c1755f1fa14cb88855719ba88",
+              "size": "202519931"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d6955e8ea6af91574bf9213b92f32ca09eb8640103446b7fa19a63cfeeec5421",
+              "size": "202206516"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3666ee74ecb693ee6488f11469802630a7b0d32608184045a4f35cb413f59e3d",
+              "size": "213304863"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:948cf57b6eecc898b5f70e06ad08ba88c08b627be570ec631dfcd72f6295194a",
+              "size": "221357024"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:6f03fdf0cc14a7f3900ee59977f62e8626d8b7c208506e52f1fd883ac223427a",
+              "size": "199689745"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:d6b227c50e3c8e21d62502b3140e5ab74a4cb502c2b4169c36238b9858a8fb88",
+              "size": "266042967"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:155ee97b531236e6a7c763395c68ca793e55e74d2cb4d38a23057a153e01e7d0",
+              "size": "269831985"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "14.2_20240403",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e",
+              "size": "31010320"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66",
+              "size": "30954580"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d",
+              "size": "28697281"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0",
+              "size": "29890994"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9",
+              "size": "44446611"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1",
+              "size": "37021423"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2",
+              "size": "26302466"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e",
+              "size": "28366035"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20231023",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d0743ec43cd92c35452a9097f7863281de4e72f04120d63cfbcf9d591a373529",
+              "size": "36942094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bc1fac0366c6a08e26c45896ca21c8c90efc2cdd431b8ba084e8772e15502d0e",
+              "size": "37134601"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:25efc51d52b71f097ccec763c5c885c8f5026b432fec4b5badd6a5f36fe34d04",
+              "size": "34579556"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e0af0b3b4a6b29a843cd5f47e331a966d9258f7d825b4656c6251490f71b05b2",
+              "size": "35676578"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bd146fd99a52b2d71c7ce0f62b9e18f3423d6cae7b2b2c954046b0dd7a23142f",
+              "size": "52863941"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:5edc76565bf9d2fadf24e443ddf3df7567354f336a65d4af5b2ee805cdfcec24",
+              "size": "33504923"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:ea4f3ee6b95ad1ad2e07108a21a50037a3e64a420cdeb34b2ba95d612faed898",
+              "size": "31068749"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:13bb97f39173948d1cfb6e651d9b335ea9d52f1fdd0dda1eda3a2d23d8c63644",
+              "size": "33514906"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "11.2_20220823",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b5f7cc3e4b5a58db655754083ed9652e4953e71c3b4922fb624e7a034ec24a64",
+              "size": 26947336
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:816acfae38b6b443f4f1590395f68f079243539259d19c7772ae6416c6519444",
+              "size": 27134508
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4dd1bace0633196fddfdcef3cebcc4bbfce22f5a0d2d1e3d618f3d8a6cbfcacc",
+              "size": 25205239
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27744d09d171be2f55ec15fa7f2d7f8ff94d33f7e130d24ebe082cb6c438618b",
+              "size": 25978028
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:1432faa12d7301133f6ee654d60751b57adcc6cf323ee1ecc393f06f0225eff4",
+              "size": 38386785
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d0b542ef070ea72857f9cf554f176a0a9d868cd59e05ac293ad39402bcc5277d",
+              "size": 21671964
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1678b06aa80b1d689d05548056635efde5b73b98f2c3de5d555bcfc6f374c5d0",
+              "size": 23241302
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:7060df4b6aa133e282147c3651d50222d677d6a0fff92979c500353b099a3f41",
+              "size": 25135265
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2411",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a16942465d33c7f0334c16e83bc6feb62e06eeb79cf19099293480bb8d48c0cd",
+              "size": "593721156"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:22486233d0e0fd58a54ae453b701f195f1432fc6f2e17085b9d6c8d5d9acefb7",
+              "size": "587879927"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:27a72d5d96cdb56dae2a1da5dfde1717c18a8c1f9a1454c8e34a8bd34abe662d",
+              "size": "586531522"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b7bd6e4cd53a4c55831d48e96a3d500bfffb091bec84a30bc8c3ad687e3eb3a2",
+              "size": "597070471"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:5f8b571e1aedbe9f856f3bdeca6600cd5510ccff1ca102c4f001421eda560585",
+              "size": "602343061"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:a7276042a7eb2d33c2dff7167539e445c32c07d43a2c6827e86d035642503e0b",
+              "size": "578521565"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7",
+              "size": "672055172"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c",
+              "size": "677812937"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2405",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e7fbfffbb19dcd3764a9848a141bf44e19ad0b48e0bd1515912345c26fe52fba",
+              "size": "294346758"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a178a895b807ed2e87d5d62153c36a6aae048581f527c0eb152f0a02b8de9571",
+              "size": "288374597"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4a2f176d0f5bc8a70645975e2a08ea94145fb69b7225c5cdcbd6024a4836aaf5",
+              "size": "287737495"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7a6f02f1b2effafb18600bbf602818f6923fd320f000fb8659f34acbfda8812f",
+              "size": "299138540"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:a193b4f025d0d836b0a9d9cbe760af1c53e53af66fc332fe98952bc4c456dd9a",
+              "size": "305025700"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7082dd2e2123dea5609a24092d19ac6612ae7e219df1d298de6b2f64cb4af0df",
+              "size": "285458443"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:590bfb10576702639825581cc00c445da6e577012840a787137417e80d15f46d",
+              "size": "366573064"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:413eb9f6adf8fdaf25544d014c850fc09eb38bb93a2fc5ebd107ab1b0de1bb3a",
+              "size": "369820297"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:1eb0d65990547ee9706b90406600cbc3638814d5feb7c1f7b44bb5416478a5bd",
+              "size": "257615266"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:921fcdc170c7fe5d6a0a30470ed1875c8926d910c19739fc950c8d1836e4c1c5",
+              "size": "253094184"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:f66e06312b58251c2121c1b1df1102565708573b86b2a9fe0c03ea1b0e9a7511",
+              "size": "252558021"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:8abcac0331ef8973d1c705e77523364ebec7e98b37640d4a1d036912f3cbe946",
+              "size": "261248375"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:76a334bc75a4e3891c222c84d7968817f2d0699d2976fc2a1658e56395283bec",
+              "size": "268987133"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:f30571945b257a10a26901bba3c5892e07c192aacf9ed6e8fcd11ca36ed827d2",
+              "size": "252159713"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:a5dfbb6dbf6fc6c6ea9beb2723af059ba3c5b2c86c2f0dc3b21afdc7bb229bf5",
+              "size": "324863847"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9deae9e0013b2f7bbf017f9c8135755bfa89522f337c7dca35872bf12ec08176",
+              "size": "328092732"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "14.2_20240403",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13",
+              "size": "30707431"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55",
+              "size": "30824065"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7",
+              "size": "29000575"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2",
+              "size": "29947521"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9",
+              "size": "44196117"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320",
+              "size": "36794404"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730",
+              "size": "26486295"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317",
+              "size": "27942579"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20231023",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2c78b806be176b1e449e07ff83429d38dfc39a13f89a127ac1ffa6c1230537a0",
+              "size": "36630145"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:33f80117c8777aaff9179e27953e41764c5c46b3c576dc96a37ecc7a368807ec",
+              "size": "36980143"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:292e6ec0a9381c1480bbadf5caae25e86428b68fb5d030c9be7deda5e7f070e0",
+              "size": "34950318"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68a25fbcfc6371ec4dbe503ec92211977eb2006f0c29e67dbce6b93c70c6b7ec",
+              "size": "35801607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:322c722e6c12225ed8cd97f95a0375105756dc5113d369958ce0858ad1a90257",
+              "size": "52618688"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c2224b3a8d02451c530cf004c29653292d963a1b4021b4b472b862b6dbe97e0b",
+              "size": "33149392"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:4b42149a99dd87ee7e6dde25c99bad966c7f964253fa8f771593d7cef69f5602",
+              "size": "31635103"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:728231546ad5006d34463f972658b2a89e52f660a42abab08a29bedd4a8046ad",
+              "size": "33400816"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "11.2_20220823",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6bf5b5d2d407e074af2a74fc826764934ac1625a1751c52fbc0d4d7772061f8f",
+              "size": 26799809
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e54ef67cdb5724fc2da8f0487f19b2c83c08b560fff317f5ffd98fbb230b397a",
+              "size": 27021672
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:86772c6aee8a05b2c75a6b04e9da630e35e8415b64da8ccde92a5fb2d3c7fcf4",
+              "size": 25532577
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3463be3e24182b7f1bd0fb232020534445b2d0ea0e7093c1b4f4da102b3baf52",
+              "size": 26188698
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:a9db1811ebb9271134eba2f7c303fc2587bd4b2a1ae33cd05ff2605cd2fb30d2",
+              "size": 38397584
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c94fb6d726b8d97e65e23237f5126a41343bca8f22a0414df5f0e6777e36f51c",
+              "size": 21593613
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:20cdee8a1c01428363ef02f4cc8035c65508d6b43560c525733eae94b7c7bb50",
+              "size": 23436802
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:add72366485b784b66837ce263548980f1df144d0954c42d75a81f6acbd43cac",
+              "size": 24802315
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20241016",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:e82b0f036dc99244bead5f09a86e91bb2365cbcd1122ac68261e5647942485df",
+              "size": "2398717"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:8f8daf5bd22ec5d2fa9257b0862ec33da18ee677e023fb9a9eb17f74ce208c76",
+              "size": "2271584"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:bc9c020ecf20e2000f76cffa44305fd5bc44d2e688ea78cce423399d33f19767",
+              "size": "2414206"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:02a2dffe801a2d005fa9e614d80ff8173395b2cb0b5d3118d0229d094a9946a7",
+              "size": "2508089"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:c382f9e884d6565cb6089bff5f200f4810994667d885f062c3d3c5625a0fa9d6",
+              "size": "2552569"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:3b5d615e0a72cc771a45dd469031312d5881c01d7b6bc9edb29b8b6bda8c2e90",
+              "size": "2946244"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:5e7b2fd1947d3a8625f6a11db7a2340cf2f41ff4c61284c022c7d7c32b18780a",
+              "size": "2946244"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240821",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:f8c68541fa38307bc0c0763b7e1e3fe4e943d5d45da07d817a73b492e103b652",
+              "size": "2373094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:4d6e263d84e447354dc685848557d6c284dda7fe007ee451f729a7edfa7baad7",
+              "size": "2251272"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:9d45679f2c4cf450d5e2350047cf57bb76dde2487d30cebce0a72c9173b5c45b",
+              "size": "2390074"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:565c8fabc5f19a6e7a0864a294d74b307eec30b9291d16d3fc90e273f0330cb4",
+              "size": "2485320"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:68c5c7cf3d15b9810939a5edabc6ff2c9f4fc32262de91fc292a180bc5cc0637",
+              "size": "2530336"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:463fc2903ddaf03f86ff50836c5c63cc696550b0446140159eddfd2e85570c5d",
+              "size": "2916409"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:550f57369f1f1f6cc600b5dffa3378fd6164d8ea8db7c567cf41091771f090cb",
+              "size": "2916408"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240318",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:cf26c5cef4f6b04aa23cd2778675604e5a74a4ce4d8d17b854d05fbcb782d52c",
+              "size": "2252682"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:9b97a37aa2cab94424a778c25c0b4aa0f90d6ef9cda764a1d9289d061305f4b7",
+              "size": "2132904"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b7e82776ec374983807d3389df09c632ad9bc8341f2075690b6b500319dfeaf4",
+              "size": "2271761"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b16c3082c94df1079367c44d99f7a8605534cd48aabc18898e46e94a2c8c57e7",
+              "size": "2365588"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:534ec925ae6e35e869e4e4e6e4d2c4a1eb081f97ebcc2dd5efdc52d12f4c2f86",
+              "size": "2406377"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230921",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:61e38e0a13a5c1664624ec1c397d7f7d6868554b0d345d3fb1f7294cce38cc4b",
+              "size": "2193783"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6430315dc1b926541c93cef63d2b08982543ad3f9fe6e0d7107c8a518ef20432",
+              "size": "2062058"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:5df16d8a91f013a547f6b3b914c655a9d267996a3b6503031b335ac04a4f8d15",
+              "size": "2206666"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:0a4f764934f488af18cdac2a0d152dd36b4870f3bec1a2d4e25b6b3b7a5258a0",
+              "size": "2305832"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6dce89048f642eb0559a915b6e514f90feb2a95afe21b84f0b0ebf2b27824816",
+              "size": "2341406"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230419",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:5144e7516cd75a2152b35ecae0a400f7d3d4424c2488fbacc49433564f54c70d",
+              "size": 2126949
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:1c4d900c738fe00730c6033abb6cf1cc6587717dbeee291d5908272d153d329a",
+              "size": 1989161
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:293258fd67618dd352e1096137ad9f2b801926eaf74ffcd570540ae94ad8ee5c",
+              "size": 2129727
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:621aad7d011c6817cde9570dfea42c7bcc699458bf43c37706cb4c2f6475a247",
+              "size": 2237976
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:3af7eac3a7de3939731ec4c13fb5d72a8e6ce5e5d274bb9697f5d93039561e42",
+              "size": 2270699
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20221026",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
+              "size": "2051435"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
+              "size": "1993843"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
+              "size": "2092111"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
+              "size": "2199855"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
+              "size": "2247179"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20220706",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
+              "size": "2077882"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
+              "size": "1902964"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
+              "size": "1954685"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev3",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:4ecaf51836cbf4ea3c19840018bfef3b0b8cd8fc3c95f6e1e043ca5bbeab9bf0",
+              "size": "64958202"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "checksum": "SHA-256:fff818573bce483ee793ac83c8211f6abf764aa3350f198228859f696a0a0b36",
+              "size": "31530030"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "checksum": "SHA-256:5b274bdff2f62e6a07c3c1dfa51b1128924621f661747eca3dbe0f77972f2f06",
+              "size": "33663882"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "checksum": "SHA-256:c733c83b58fcf5f642fbb2fddb8ff24640c2c785126cba0821fb70c4a5ceea7a",
+              "size": "32767836"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "checksum": "SHA-256:83c195a15981e6a5e7a130db2ccfb21e2d8093912e5b003681f9a5abadd71af7",
+              "size": "30121441"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.6",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-macos.tar.gz",
+              "archiveFileName": "esptool-v4.6-macos.tar.gz",
+              "checksum": "SHA-256:885ec69fcffdcb9e7c6eacd2589f13a45ce6bcb6742bea368ec3a73bcca6dd59",
+              "size": "5851297"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5.1",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-macos.tar.gz",
+              "checksum": "SHA-256:78b52acfd51541ceb97cee893b7d4d49b8ddc284602be8c73ea47e3d849e0956",
+              "size": "5850888"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5-macos.tar.gz",
+              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
+              "size": "5850835"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
+              "archiveFileName": "esptool-v4.5-win64.zip",
+              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
+              "size": "6639416"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.2.1",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
+              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
+              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
+              "size": "5816598"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.3.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
+              "archiveFileName": "esptool-3.3-macos.tar.gz",
+              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
+              "size": "6944975"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.1.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
+              "archiveFileName": "esptool-3.1.0-windows.zip",
+              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
+              "size": "7411889"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
+              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
+              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
+              "size": "6776909"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.0.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
+              "archiveFileName": "esptool-3.0.0.2-windows.zip",
+              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
+              "size": "3434736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
+              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
+              "size": "3859642"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            }
+          ]
+        },
+        {
+          "version": "2.6.1",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-windows.zip",
+              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.1-windows.zip",
+              "size": "3422445"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-macos.tar.gz",
+              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
+              "size": "3837085"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            }
+          ]
+        },
+        {
+          "version": "2.6.0",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-windows.zip",
+              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.0-windows.zip",
+              "size": "3421208"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-macos.tar.gz",
+              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
+              "size": "3835660"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            }
+          ]
+        },
+        {
+          "version": "3.0.0-gnu12-dc7f933",
+          "name": "mklittlefs",
+          "systems": [
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
+              "size": "44651"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
+              "size": "37211"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
+              "size": "48033"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
+              "size": "332655"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
+              "size": "362608"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
+              "size": "46778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
+              "size": "345132"
+            }
+          ]
+        },
+        {
+          "name": "mkspiffs",
+          "version": "0.2.3",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
+              "size": "249809"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "i386-apple-darwin",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
+              "size": "50646"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
+              "size": "48751"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs2",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs3",
+          "version": "2302",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
+              "size": "93104016"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
+              "size": "90569312"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
+              "size": "86838362"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
+              "size": "86187540"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
+              "size": "92580267"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
+              "size": "97807647"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
+              "size": "116464819"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
+              "size": "119511910"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
+              "size": "90565318"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
+              "size": "86860292"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
+              "size": "86183421"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
+              "size": "92582250"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
+              "size": "97808961"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
+              "size": "112578260"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
+              "size": "115278695"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
+              "size": "86361217"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
+              "size": "84520407"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
+              "size": "88375391"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
+              "size": "93357296"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
+              "size": "105603626"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "1.22.0-97-gc752ad5-5.2.0",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
+              "size": "125747216"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
+              "size": "50525386"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
+              "size": "44225380"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
+              "size": "45575521"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            }
+          ]
+        },
+        {
+          "version": "1.22.0-80-g6c4433a-5.2.0",
+          "name": "xtensa-esp32-elf-gcc",
+          "systems": [
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
+              "host": "i686-mingw32",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "size": "125719261"
             },
             {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "46517409"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "44219107"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
-              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
-              "size": "109460025"
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "45566336"
+            },
+            {
+              "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "size": "50655584"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-12.2.0_20230208",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
-              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
-              "size": "113703959"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
-              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
-              "size": "144711970"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
-              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
-              "size": "146606480"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
+              "size": "66457613"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
+              "size": "90894048"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
+              "size": "87178224"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
+              "size": "86569314"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
+              "size": "92884013"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
+              "size": "98224709"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
+              "size": "116924759"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
+              "size": "119912142"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
           "version": "gcc8_4_0-esp-2021r2",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
-              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
-              "size": "106837189"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
+              "size": "90901736"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
-              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
-              "size": "103273444"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
+              "size": "87176557"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
-              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
-              "size": "103058744"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
+              "size": "86581102"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
-              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
-              "size": "109447789"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
+              "size": "92875986"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
-              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
-              "size": "113672945"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
+              "size": "98212907"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
-              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
-              "size": "140809778"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
+              "size": "113022469"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
-              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
-              "size": "142365782"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
+              "size": "115696999"
             }
           ]
         },
         {
-          "name": "riscv32-esp-elf-gcc",
+          "name": "xtensa-esp32s2-elf-gcc",
           "version": "gcc8_4_0-esp-2021r1",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
-              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
-              "size": "152812483"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
+              "size": "86687290"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
-              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
-              "size": "151726623"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
+              "size": "84916701"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
-              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
-              "size": "155430963"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
+              "size": "88699953"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
-              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
-              "size": "159836199"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
+              "size": "93757895"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
-              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
-              "size": "191266312"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
+              "size": "106013515"
             }
           ]
         },
         {
-          "name": "openocd-esp32",
-          "version": "v0.11.0-esp32-20221026",
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-12.2.0_20230208",
           "systems": [
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
-              "size": "2051435"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
             },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
-              "size": "1993843"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
-              "size": "2092111"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
-              "size": "2199855"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
             },
             {
               "host": "arm64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
-              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
-              "size": "2247179"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
             },
             {
               "host": "i686-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
-              "size": "2493214"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
-              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
-              "size": "2493214"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
             }
           ]
         },
         {
-          "name": "openocd-esp32",
-          "version": "v0.11.0-esp32-20220706",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
-              "size": "2608736"
-            },
-            {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
-              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
-              "size": "2608736"
-            },
-            {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
-              "size": "2077882"
-            },
             {
               "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
-              "size": "2011201"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
-              "size": "2011201"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
-              "size": "1902964"
-            },
-            {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
-              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
-              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
-              "size": "1954685"
-            }
-          ]
-        },
-        {
-          "name": "esptool_py",
-          "version": "4.5",
-          "systems": [
-            {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
-              "archiveFileName": "esptool-v4.5-src.tar.gz",
-              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
-              "size": "96621"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
+              "size": "66791095"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
-              "archiveFileName": "esptool-v4.5-macos.tar.gz",
-              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
-              "size": "5850835"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
-              "archiveFileName": "esptool-v4.5-win64.zip",
-              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
-              "size": "6639416"
-            },
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
-              "archiveFileName": "esptool-v4.5-win64.zip",
-              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
-              "size": "6639416"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "4.2.1",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
-              "archiveFileName": "esptool-4.2.1-windows.zip",
-              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
-              "size": "6368279"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
-              "archiveFileName": "esptool-4.2.1-windows.zip",
-              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
-              "size": "6368279"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
-              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
-              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
-              "size": "5816598"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
-              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
-              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
-              "size": "90123"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.3.0",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
-              "archiveFileName": "esptool-3.3-windows.zip",
-              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
-              "size": "7436864"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
+              "size": "90903617"
             },
             {
-              "host": "x86_64-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
-              "archiveFileName": "esptool-3.3-windows.zip",
-              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
-              "size": "7436864"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
+              "size": "87065204"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
-              "archiveFileName": "esptool-3.3-macos.tar.gz",
-              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
-              "size": "6944975"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
+              "size": "86455731"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "i686-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
+              "size": "92906274"
             },
             {
-              "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
+              "size": "98553473"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
+              "size": "116847008"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
-              "archiveFileName": "esptool-3.3-linux.tar.gz",
-              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
-              "size": "97026"
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
+              "size": "120066269"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.1.0",
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-12.2.0_20230208",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
-              "archiveFileName": "esptool-3.1.0-windows.zip",
-              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
-              "size": "7411889"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
-              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
-              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
-              "size": "6776909"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
-              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
-              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
-              "size": "80550"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
             }
           ]
         },
         {
-          "name": "esptool_py",
-          "version": "3.0.0",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
-              "archiveFileName": "esptool-3.0.0.2-windows.zip",
-              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
-              "size": "3434736"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
             },
             {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
-              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
-              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
-              "size": "3859642"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
-              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
-              "size": "57526"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
-              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
-              "size": "57526"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
-              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
-              "size": "57526"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
-              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
-              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
-              "size": "57526"
+              "host": "arm64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
+              "size": "191209735"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
             }
           ]
         },
         {
-          "version": "2.6.1",
-          "name": "esptool_py",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5",
           "systems": [
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-windows.zip",
-              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
-              "host": "i686-mingw32",
-              "archiveFileName": "esptool-2.6.1-windows.zip",
-              "size": "3422445"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-macos.tar.gz",
-              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
-              "size": "3837085"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "size": "44762"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
               "host": "i686-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "size": "44762"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
-              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
-              "size": "44762"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
             }
           ]
         },
         {
-          "version": "2.6.0",
-          "name": "esptool_py",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3",
           "systems": [
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-windows.zip",
-              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
-              "host": "i686-mingw32",
-              "archiveFileName": "esptool-2.6.0-windows.zip",
-              "size": "3421208"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
+              "size": "106843321"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-macos.tar.gz",
-              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
-              "host": "x86_64-apple-darwin",
-              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
-              "size": "3835660"
+              "host": "aarch64-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
+              "size": "103277393"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
-              "host": "x86_64-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
+              "size": "103062256"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
               "host": "i686-pc-linux-gnu",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
+              "size": "109460025"
             },
             {
-              "url": "https://dl.espressif.com/dl/esptool-2.6.0-linux.tar.gz",
-              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
-              "host": "arm-linux-gnueabihf",
-              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
-              "size": "43535"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
+              "size": "113703959"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
+              "size": "144711970"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
+              "size": "146606480"
             }
           ]
         },
         {
-          "version": "3.0.0-gnu12-dc7f933",
-          "name": "mklittlefs",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2",
           "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
+              "size": "106837189"
+            },
             {
               "host": "aarch64-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
-              "size": "44651"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
+              "size": "103273444"
             },
             {
               "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
-              "size": "37211"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
+              "size": "103058744"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
-              "size": "48033"
-            },
-            {
-              "host": "i686-mingw32",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
-              "size": "332655"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
+              "size": "109447789"
             },
             {
               "host": "x86_64-apple-darwin",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
-              "size": "362608"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
+              "size": "113672945"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
-              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
-              "size": "46778"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
+              "size": "140809778"
             },
             {
               "host": "x86_64-mingw32",
-              "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
-              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
-              "size": "345132"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
+              "size": "142365782"
             }
           ]
         },
         {
-          "name": "mkspiffs",
-          "version": "0.2.3",
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1",
           "systems": [
             {
-              "host": "i686-mingw32",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
-              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
-              "size": "249809"
-            },
-            {
-              "host": "x86_64-apple-darwin",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
-              "size": "130270"
-            },
-            {
-              "host": "i386-apple-darwin",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
-              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
-              "size": "130270"
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
+              "size": "152812483"
             },
             {
-              "host": "x86_64-pc-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
-              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
-              "size": "50646"
+              "host": "arm-linux-gnueabihf",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
+              "size": "151726623"
             },
             {
               "host": "i686-pc-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
-              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
-              "size": "48751"
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
+              "size": "155430963"
             },
             {
-              "host": "arm-linux-gnueabihf",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
-              "size": "40665"
+              "host": "x86_64-apple-darwin",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
+              "size": "159836199"
             },
             {
-              "host": "aarch64-linux-gnu",
-              "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
-              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
-              "size": "40665"
+              "host": "i686-mingw32",
+              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
+              "size": "191266312"
             }
           ]
         },
diff --git a/package_esp32_index_cn.json b/package_esp32_index_cn.json
new file mode 100644
index 00000000000..43790945974
--- /dev/null
+++ b/package_esp32_index_cn.json
@@ -0,0 +1,6578 @@
+{
+  "packages": [
+    {
+      "name": "esp32",
+      "maintainer": "Espressif Systems",
+      "websiteURL": "https://github.com/espressif/arduino-esp32",
+      "email": "hristo@espressif.com",
+      "help": {
+        "online": "http://esp32.com"
+      },
+      "platforms": [
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.2.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.2.0/esp32-3.2.0.zip",
+          "archiveFileName": "esp32-3.2.0.zip",
+          "checksum": "SHA-256:d38b16fef6e519fc0d19bc5af0b39cdbed7dfc2ce69214c1971ded0e61ecd911",
+          "size": "25447136",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-2f7dcd86-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.3/esp32-3.1.3.zip",
+          "archiveFileName": "esp32-3.1.3.zip",
+          "checksum": "SHA-256:747160dbc81c6634c7bff9e8a57213e9982d52fe90d2a8f75a93a9f7b527defb",
+          "size": "25396700",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.2/esp32-3.1.2.zip",
+          "archiveFileName": "esp32-3.1.2.zip",
+          "checksum": "SHA-256:17214f51a7b9de547baa777419d2b041e1f09cfb17adb33c18617a756190f9f6",
+          "size": "25396684",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.1/esp32-3.1.1.zip",
+          "archiveFileName": "esp32-3.1.1.zip",
+          "checksum": "SHA-256:e20982b2860eab4900ce16a0f2b7f9fc3ffb205e490dc933f625d53a5c9e8129",
+          "size": "25253828",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-cfea4f7c-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0/esp32-3.1.0.zip",
+          "archiveFileName": "esp32-3.1.0.zip",
+          "checksum": "SHA-256:0db044159e3fc737435b3f1d547bf85c60a33a175342c317d2a5c08c42977f80",
+          "size": "25225607",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-083aad99-v2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.7/esp32-3.0.7.zip",
+          "archiveFileName": "esp32-3.0.7.zip",
+          "checksum": "SHA-256:6b48f5bd889e55d7b93b95849dff77c6a5e4b9ee58c7298d7872d558a4d04931",
+          "size": "24546342",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.6/esp32-3.0.6.zip",
+          "archiveFileName": "esp32-3.0.6.zip",
+          "checksum": "SHA-256:7b4d87d0a18e69cba81e7aa7e69f088dc7c4f6cc89a20adc256bf77c86992dc5",
+          "size": "24546256",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.5/esp32-3.0.5.zip",
+          "archiveFileName": "esp32-3.0.5.zip",
+          "checksum": "SHA-256:6ead4c452e69146b8eb08bee5a77898acc75a0637e9fccb5bbf665385ddc28db",
+          "size": "24481707",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-33fbade6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-3.0.4.zip",
+          "archiveFileName": "esp32-3.0.4.zip",
+          "checksum": "SHA-256:58fcd9b033be0358afbcbcf9a1d8eb216217f65f6b28f2e2cd739c7d016dda4f",
+          "size": "23937821",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-b6b4727c58-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-3.0.3.zip",
+          "archiveFileName": "esp32-3.0.3.zip",
+          "checksum": "SHA-256:b4aa70711293955a9835ad641279dc7cd524aeb405f7d294afa05c2ece7ded45",
+          "size": "23920341",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-dc859c1e67-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-3.0.2.zip",
+          "archiveFileName": "esp32-3.0.2.zip",
+          "checksum": "SHA-256:bd90630fbe9e99f3bb3340c25a87574d5551dd2823849adbf285f8430b6884cf",
+          "size": "23893902",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-bd2b9390ef-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-3.0.1.zip",
+          "archiveFileName": "esp32-3.0.1.zip",
+          "checksum": "SHA-256:b7169d0dd51b64e450a7c09fafb7a4782820a9bc745f7b1e4618316440db0930",
+          "size": "23895257",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0/esp32-3.0.0.zip",
+          "archiveFileName": "esp32-3.0.0.zip",
+          "checksum": "SHA-256:0960cf786992e0e3770d8c1e1979eaf01bd0ac9209b24fb00948cf93d43cf95c",
+          "size": "23891610",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.17-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.17/esp32-2.0.17.zip",
+          "archiveFileName": "esp32-2.0.17.zip",
+          "checksum": "SHA-256:1f8658d4b18a8001ce782142ad08164af2991d70b83a147c3437a6ee30a9b225",
+          "size": "254658377",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.16-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.16/esp32-2.0.16.zip",
+          "archiveFileName": "esp32-2.0.16.zip",
+          "checksum": "SHA-256:6615fd16fd6d3ee2fa7ca2dd40a4f65220eddf094a88b7cee2141a0c077987bc",
+          "size": "254657760",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.15-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip",
+          "archiveFileName": "esp32-2.0.15.zip",
+          "checksum": "SHA-256:2219c1636264f55e19b2a5e7f41c81b669b1355017b15ee31773c85674b3e9bb",
+          "size": "254657764",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.14-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.14/esp32-2.0.14.zip",
+          "archiveFileName": "esp32-2.0.14.zip",
+          "checksum": "SHA-256:77c71eba520c97ab30161eb2f9c6a46b019e48d13936244b18f6ad4dbecf0a58",
+          "size": "252506057",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230419-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.13-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.13/esp32-2.0.13.zip",
+          "archiveFileName": "esp32-2.0.13.zip",
+          "checksum": "SHA-256:ee4c277bac0eecb7ca8853780da9d49b4e260926059cf6a9f9bac1923059de0c",
+          "size": "250665913",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.12-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.12/esp32-2.0.12.zip",
+          "archiveFileName": "esp32-2.0.12.zip",
+          "checksum": "SHA-256:9a4f844ca67812c547a9635cdb0dd2c347cae7a3e855f95f9d490b2f8d340dbe",
+          "size": "250664387",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.11-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.11/esp32-2.0.11.zip",
+          "archiveFileName": "esp32-2.0.11.zip",
+          "checksum": "SHA-256:d15386308dc72f94816ce80b5508af999f2fd0d88eb5e1ffba48316ab0b9c5d6",
+          "size": "250401265",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.10-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.10/esp32-2.0.10.zip",
+          "archiveFileName": "esp32-2.0.10.zip",
+          "checksum": "SHA-256:6028cb623c838723c41000869963d95f7cb811d58643133068eed31c03c2d7c0",
+          "size": "250401273",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.9-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esp32-2.0.9.zip",
+          "archiveFileName": "esp32-2.0.9.zip",
+          "checksum": "SHA-256:37072185026db3cdc0ed4b6fb12840d7f41571a16c60eec97bec2a4abec8dcee",
+          "size": "278964028",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.8-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip",
+          "archiveFileName": "esp32-2.0.8.zip",
+          "checksum": "SHA-256:2c5daa3ce7456e752fb8d8a35b0b6b2eb8e494032cba57569ba12dd53eb235f2",
+          "size": "278963636",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
+          "archiveFileName": "esp32-2.0.7.zip",
+          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
+          "size": "278966011",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
+          "archiveFileName": "esp32-2.0.6.zip",
+          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
+          "size": "264579419",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20220706-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
+          "archiveFileName": "esp32-2.0.5.zip",
+          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
+          "size": "260916106",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
+          "archiveFileName": "esp32-2.0.4.zip",
+          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
+          "size": "259715595",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
+          "archiveFileName": "esp32-2.0.3.zip",
+          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
+          "size": "246542267",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
+          "archiveFileName": "esp32-2.0.2.zip",
+          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
+          "size": "151846438",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
+          "archiveFileName": "esp32-2.0.1.zip",
+          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
+          "size": "148976301",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
+          "archiveFileName": "esp32-2.0.0.zip",
+          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
+          "size": "139313137",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
+          "archiveFileName": "esp32-1.0.6.zip",
+          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
+          "size": "51126662",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
+          "archiveFileName": "esp32-1.0.5.zip",
+          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
+          "size": "49552769",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
+          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.4-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.4.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36853332"
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
+          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.3-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.3.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36811826"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
+          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
+          "version": "1.0.2-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.2.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ],
+          "size": "31174160",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "name": "esp32"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
+          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
+          "name": "esp32",
+          "version": "1.0.1-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.1.zip",
+          "size": "31273425",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.0-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
+          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
+          "name": "esp32",
+          "version": "1.0.0-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.0.zip",
+          "size": "26381887",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.3.1-cn",
+              "name": "esptool"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        }
+      ],
+      "tools": [
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-2f7dcd86-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-489d7a2b-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-cfea4f7c-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-083aad99-v2-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-632e0c2a-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-33fbade6-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-b6b4727c58-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-dc859c1e67-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-bd2b9390ef-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-442a798083-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b1859df334a85541ae746e1b86439f59180d87f8cf1cc04c2e770fadf9f006e9",
+              "size": "323678089"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7ff023033a5c00e55b9fc0a0b26d18fb0e476c24e24c5b0459bcb2e05a3729f1",
+              "size": "320064691"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:bb11dbf3ed25d4e0cc9e938749519e8236cfa2609e85742d311f1d869111805a",
+              "size": "319454139"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:5ac611dca62ec791d413d1f417d566c444b006d2a4f97bd749b15f782d87249b",
+              "size": "328335914"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:15b3e60362028eaeff9156dc82dac3f1436b4aeef3920b28d7650974d8c34751",
+              "size": "336215844"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:45c475518735133789bacccad31f872318b7ecc0b31cc9b7924aad880034f0bf",
+              "size": "318797396"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8",
+              "size": "382457717"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028",
+              "size": "386316009"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bce77e8480701d5a90545369d1b5848f6048eb39c0022d2446d1e33a8e127490",
+              "size": "208911713"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7c9e3c1adc733d042ed87b92daa1d6396e1b441c1755f1fa14cb88855719ba88",
+              "size": "202519931"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d6955e8ea6af91574bf9213b92f32ca09eb8640103446b7fa19a63cfeeec5421",
+              "size": "202206516"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3666ee74ecb693ee6488f11469802630a7b0d32608184045a4f35cb413f59e3d",
+              "size": "213304863"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:948cf57b6eecc898b5f70e06ad08ba88c08b627be570ec631dfcd72f6295194a",
+              "size": "221357024"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:6f03fdf0cc14a7f3900ee59977f62e8626d8b7c208506e52f1fd883ac223427a",
+              "size": "199689745"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:d6b227c50e3c8e21d62502b3140e5ab74a4cb502c2b4169c36238b9858a8fb88",
+              "size": "266042967"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:155ee97b531236e6a7c763395c68ca793e55e74d2cb4d38a23057a153e01e7d0",
+              "size": "269831985"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e",
+              "size": "31010320"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66",
+              "size": "30954580"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d",
+              "size": "28697281"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0",
+              "size": "29890994"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9",
+              "size": "44446611"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1",
+              "size": "37021423"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2",
+              "size": "26302466"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e",
+              "size": "28366035"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d0743ec43cd92c35452a9097f7863281de4e72f04120d63cfbcf9d591a373529",
+              "size": "36942094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bc1fac0366c6a08e26c45896ca21c8c90efc2cdd431b8ba084e8772e15502d0e",
+              "size": "37134601"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:25efc51d52b71f097ccec763c5c885c8f5026b432fec4b5badd6a5f36fe34d04",
+              "size": "34579556"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e0af0b3b4a6b29a843cd5f47e331a966d9258f7d825b4656c6251490f71b05b2",
+              "size": "35676578"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bd146fd99a52b2d71c7ce0f62b9e18f3423d6cae7b2b2c954046b0dd7a23142f",
+              "size": "52863941"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:5edc76565bf9d2fadf24e443ddf3df7567354f336a65d4af5b2ee805cdfcec24",
+              "size": "33504923"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:ea4f3ee6b95ad1ad2e07108a21a50037a3e64a420cdeb34b2ba95d612faed898",
+              "size": "31068749"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:13bb97f39173948d1cfb6e651d9b335ea9d52f1fdd0dda1eda3a2d23d8c63644",
+              "size": "33514906"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b5f7cc3e4b5a58db655754083ed9652e4953e71c3b4922fb624e7a034ec24a64",
+              "size": 26947336
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:816acfae38b6b443f4f1590395f68f079243539259d19c7772ae6416c6519444",
+              "size": 27134508
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4dd1bace0633196fddfdcef3cebcc4bbfce22f5a0d2d1e3d618f3d8a6cbfcacc",
+              "size": 25205239
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27744d09d171be2f55ec15fa7f2d7f8ff94d33f7e130d24ebe082cb6c438618b",
+              "size": 25978028
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:1432faa12d7301133f6ee654d60751b57adcc6cf323ee1ecc393f06f0225eff4",
+              "size": 38386785
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d0b542ef070ea72857f9cf554f176a0a9d868cd59e05ac293ad39402bcc5277d",
+              "size": 21671964
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1678b06aa80b1d689d05548056635efde5b73b98f2c3de5d555bcfc6f374c5d0",
+              "size": 23241302
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:7060df4b6aa133e282147c3651d50222d677d6a0fff92979c500353b099a3f41",
+              "size": 25135265
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a16942465d33c7f0334c16e83bc6feb62e06eeb79cf19099293480bb8d48c0cd",
+              "size": "593721156"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:22486233d0e0fd58a54ae453b701f195f1432fc6f2e17085b9d6c8d5d9acefb7",
+              "size": "587879927"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:27a72d5d96cdb56dae2a1da5dfde1717c18a8c1f9a1454c8e34a8bd34abe662d",
+              "size": "586531522"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b7bd6e4cd53a4c55831d48e96a3d500bfffb091bec84a30bc8c3ad687e3eb3a2",
+              "size": "597070471"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:5f8b571e1aedbe9f856f3bdeca6600cd5510ccff1ca102c4f001421eda560585",
+              "size": "602343061"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:a7276042a7eb2d33c2dff7167539e445c32c07d43a2c6827e86d035642503e0b",
+              "size": "578521565"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7",
+              "size": "672055172"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c",
+              "size": "677812937"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e7fbfffbb19dcd3764a9848a141bf44e19ad0b48e0bd1515912345c26fe52fba",
+              "size": "294346758"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a178a895b807ed2e87d5d62153c36a6aae048581f527c0eb152f0a02b8de9571",
+              "size": "288374597"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4a2f176d0f5bc8a70645975e2a08ea94145fb69b7225c5cdcbd6024a4836aaf5",
+              "size": "287737495"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7a6f02f1b2effafb18600bbf602818f6923fd320f000fb8659f34acbfda8812f",
+              "size": "299138540"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:a193b4f025d0d836b0a9d9cbe760af1c53e53af66fc332fe98952bc4c456dd9a",
+              "size": "305025700"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7082dd2e2123dea5609a24092d19ac6612ae7e219df1d298de6b2f64cb4af0df",
+              "size": "285458443"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:590bfb10576702639825581cc00c445da6e577012840a787137417e80d15f46d",
+              "size": "366573064"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:413eb9f6adf8fdaf25544d014c850fc09eb38bb93a2fc5ebd107ab1b0de1bb3a",
+              "size": "369820297"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:1eb0d65990547ee9706b90406600cbc3638814d5feb7c1f7b44bb5416478a5bd",
+              "size": "257615266"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:921fcdc170c7fe5d6a0a30470ed1875c8926d910c19739fc950c8d1836e4c1c5",
+              "size": "253094184"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:f66e06312b58251c2121c1b1df1102565708573b86b2a9fe0c03ea1b0e9a7511",
+              "size": "252558021"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:8abcac0331ef8973d1c705e77523364ebec7e98b37640d4a1d036912f3cbe946",
+              "size": "261248375"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:76a334bc75a4e3891c222c84d7968817f2d0699d2976fc2a1658e56395283bec",
+              "size": "268987133"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:f30571945b257a10a26901bba3c5892e07c192aacf9ed6e8fcd11ca36ed827d2",
+              "size": "252159713"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:a5dfbb6dbf6fc6c6ea9beb2723af059ba3c5b2c86c2f0dc3b21afdc7bb229bf5",
+              "size": "324863847"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9deae9e0013b2f7bbf017f9c8135755bfa89522f337c7dca35872bf12ec08176",
+              "size": "328092732"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13",
+              "size": "30707431"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55",
+              "size": "30824065"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7",
+              "size": "29000575"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2",
+              "size": "29947521"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9",
+              "size": "44196117"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320",
+              "size": "36794404"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730",
+              "size": "26486295"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317",
+              "size": "27942579"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2c78b806be176b1e449e07ff83429d38dfc39a13f89a127ac1ffa6c1230537a0",
+              "size": "36630145"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:33f80117c8777aaff9179e27953e41764c5c46b3c576dc96a37ecc7a368807ec",
+              "size": "36980143"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:292e6ec0a9381c1480bbadf5caae25e86428b68fb5d030c9be7deda5e7f070e0",
+              "size": "34950318"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68a25fbcfc6371ec4dbe503ec92211977eb2006f0c29e67dbce6b93c70c6b7ec",
+              "size": "35801607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:322c722e6c12225ed8cd97f95a0375105756dc5113d369958ce0858ad1a90257",
+              "size": "52618688"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c2224b3a8d02451c530cf004c29653292d963a1b4021b4b472b862b6dbe97e0b",
+              "size": "33149392"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:4b42149a99dd87ee7e6dde25c99bad966c7f964253fa8f771593d7cef69f5602",
+              "size": "31635103"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:728231546ad5006d34463f972658b2a89e52f660a42abab08a29bedd4a8046ad",
+              "size": "33400816"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6bf5b5d2d407e074af2a74fc826764934ac1625a1751c52fbc0d4d7772061f8f",
+              "size": 26799809
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e54ef67cdb5724fc2da8f0487f19b2c83c08b560fff317f5ffd98fbb230b397a",
+              "size": 27021672
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:86772c6aee8a05b2c75a6b04e9da630e35e8415b64da8ccde92a5fb2d3c7fcf4",
+              "size": 25532577
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3463be3e24182b7f1bd0fb232020534445b2d0ea0e7093c1b4f4da102b3baf52",
+              "size": 26188698
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:a9db1811ebb9271134eba2f7c303fc2587bd4b2a1ae33cd05ff2605cd2fb30d2",
+              "size": 38397584
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c94fb6d726b8d97e65e23237f5126a41343bca8f22a0414df5f0e6777e36f51c",
+              "size": 21593613
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:20cdee8a1c01428363ef02f4cc8035c65508d6b43560c525733eae94b7c7bb50",
+              "size": 23436802
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:add72366485b784b66837ce263548980f1df144d0954c42d75a81f6acbd43cac",
+              "size": 24802315
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20241016-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:e82b0f036dc99244bead5f09a86e91bb2365cbcd1122ac68261e5647942485df",
+              "size": "2398717"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:8f8daf5bd22ec5d2fa9257b0862ec33da18ee677e023fb9a9eb17f74ce208c76",
+              "size": "2271584"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:bc9c020ecf20e2000f76cffa44305fd5bc44d2e688ea78cce423399d33f19767",
+              "size": "2414206"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:02a2dffe801a2d005fa9e614d80ff8173395b2cb0b5d3118d0229d094a9946a7",
+              "size": "2508089"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:c382f9e884d6565cb6089bff5f200f4810994667d885f062c3d3c5625a0fa9d6",
+              "size": "2552569"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:3b5d615e0a72cc771a45dd469031312d5881c01d7b6bc9edb29b8b6bda8c2e90",
+              "size": "2946244"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:5e7b2fd1947d3a8625f6a11db7a2340cf2f41ff4c61284c022c7d7c32b18780a",
+              "size": "2946244"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240821-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:f8c68541fa38307bc0c0763b7e1e3fe4e943d5d45da07d817a73b492e103b652",
+              "size": "2373094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:4d6e263d84e447354dc685848557d6c284dda7fe007ee451f729a7edfa7baad7",
+              "size": "2251272"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:9d45679f2c4cf450d5e2350047cf57bb76dde2487d30cebce0a72c9173b5c45b",
+              "size": "2390074"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:565c8fabc5f19a6e7a0864a294d74b307eec30b9291d16d3fc90e273f0330cb4",
+              "size": "2485320"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:68c5c7cf3d15b9810939a5edabc6ff2c9f4fc32262de91fc292a180bc5cc0637",
+              "size": "2530336"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:463fc2903ddaf03f86ff50836c5c63cc696550b0446140159eddfd2e85570c5d",
+              "size": "2916409"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:550f57369f1f1f6cc600b5dffa3378fd6164d8ea8db7c567cf41091771f090cb",
+              "size": "2916408"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240318-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:cf26c5cef4f6b04aa23cd2778675604e5a74a4ce4d8d17b854d05fbcb782d52c",
+              "size": "2252682"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:9b97a37aa2cab94424a778c25c0b4aa0f90d6ef9cda764a1d9289d061305f4b7",
+              "size": "2132904"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b7e82776ec374983807d3389df09c632ad9bc8341f2075690b6b500319dfeaf4",
+              "size": "2271761"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b16c3082c94df1079367c44d99f7a8605534cd48aabc18898e46e94a2c8c57e7",
+              "size": "2365588"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:534ec925ae6e35e869e4e4e6e4d2c4a1eb081f97ebcc2dd5efdc52d12f4c2f86",
+              "size": "2406377"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230921-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:61e38e0a13a5c1664624ec1c397d7f7d6868554b0d345d3fb1f7294cce38cc4b",
+              "size": "2193783"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6430315dc1b926541c93cef63d2b08982543ad3f9fe6e0d7107c8a518ef20432",
+              "size": "2062058"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:5df16d8a91f013a547f6b3b914c655a9d267996a3b6503031b335ac04a4f8d15",
+              "size": "2206666"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:0a4f764934f488af18cdac2a0d152dd36b4870f3bec1a2d4e25b6b3b7a5258a0",
+              "size": "2305832"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6dce89048f642eb0559a915b6e514f90feb2a95afe21b84f0b0ebf2b27824816",
+              "size": "2341406"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230419-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:5144e7516cd75a2152b35ecae0a400f7d3d4424c2488fbacc49433564f54c70d",
+              "size": 2126949
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:1c4d900c738fe00730c6033abb6cf1cc6587717dbeee291d5908272d153d329a",
+              "size": 1989161
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:293258fd67618dd352e1096137ad9f2b801926eaf74ffcd570540ae94ad8ee5c",
+              "size": 2129727
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:621aad7d011c6817cde9570dfea42c7bcc699458bf43c37706cb4c2f6475a247",
+              "size": 2237976
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:3af7eac3a7de3939731ec4c13fb5d72a8e6ce5e5d274bb9697f5d93039561e42",
+              "size": 2270699
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20221026-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
+              "size": "2051435"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
+              "size": "1993843"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
+              "size": "2092111"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
+              "size": "2199855"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
+              "size": "2247179"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20220706-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
+              "size": "2077882"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
+              "size": "1902964"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
+              "size": "1954685"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:4ecaf51836cbf4ea3c19840018bfef3b0b8cd8fc3c95f6e1e043ca5bbeab9bf0",
+              "size": "64958202"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "checksum": "SHA-256:fff818573bce483ee793ac83c8211f6abf764aa3350f198228859f696a0a0b36",
+              "size": "31530030"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "checksum": "SHA-256:5b274bdff2f62e6a07c3c1dfa51b1128924621f661747eca3dbe0f77972f2f06",
+              "size": "33663882"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "checksum": "SHA-256:c733c83b58fcf5f642fbb2fddb8ff24640c2c785126cba0821fb70c4a5ceea7a",
+              "size": "32767836"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "checksum": "SHA-256:83c195a15981e6a5e7a130db2ccfb21e2d8093912e5b003681f9a5abadd71af7",
+              "size": "30121441"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.6-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-macos.tar.gz",
+              "archiveFileName": "esptool-v4.6-macos.tar.gz",
+              "checksum": "SHA-256:885ec69fcffdcb9e7c6eacd2589f13a45ce6bcb6742bea368ec3a73bcca6dd59",
+              "size": "5851297"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5.1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-macos.tar.gz",
+              "checksum": "SHA-256:78b52acfd51541ceb97cee893b7d4d49b8ddc284602be8c73ea47e3d849e0956",
+              "size": "5850888"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5-macos.tar.gz",
+              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
+              "size": "5850835"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
+              "archiveFileName": "esptool-v4.5-win64.zip",
+              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
+              "size": "6639416"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.2.1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
+              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
+              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
+              "size": "5816598"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.3.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
+              "archiveFileName": "esptool-3.3-macos.tar.gz",
+              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
+              "size": "6944975"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.1.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
+              "archiveFileName": "esptool-3.1.0-windows.zip",
+              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
+              "size": "7411889"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
+              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
+              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
+              "size": "6776909"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.0.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
+              "archiveFileName": "esptool-3.0.0.2-windows.zip",
+              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
+              "size": "3434736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
+              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
+              "size": "3859642"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            }
+          ]
+        },
+        {
+          "version": "2.6.1-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-windows.zip",
+              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.1-windows.zip",
+              "size": "3422445"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-macos.tar.gz",
+              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
+              "size": "3837085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            }
+          ]
+        },
+        {
+          "version": "2.6.0-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-windows.zip",
+              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.0-windows.zip",
+              "size": "3421208"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-macos.tar.gz",
+              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
+              "size": "3835660"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            }
+          ]
+        },
+        {
+          "version": "3.0.0-gnu12-dc7f933-cn",
+          "name": "mklittlefs",
+          "systems": [
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
+              "size": "44651"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
+              "size": "37211"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
+              "size": "48033"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
+              "size": "332655"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
+              "size": "362608"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
+              "size": "46778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
+              "size": "345132"
+            }
+          ]
+        },
+        {
+          "name": "mkspiffs",
+          "version": "0.2.3-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
+              "size": "249809"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "i386-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
+              "size": "50646"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
+              "size": "48751"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs2",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs3",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
+              "size": "93104016"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
+              "size": "90569312"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
+              "size": "86838362"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
+              "size": "86187540"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
+              "size": "92580267"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
+              "size": "97807647"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
+              "size": "116464819"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
+              "size": "119511910"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
+              "size": "90565318"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
+              "size": "86860292"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
+              "size": "86183421"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
+              "size": "92582250"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
+              "size": "97808961"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
+              "size": "112578260"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
+              "size": "115278695"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
+              "size": "86361217"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
+              "size": "84520407"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
+              "size": "88375391"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
+              "size": "93357296"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
+              "size": "105603626"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "1.22.0-97-gc752ad5-5.2.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
+              "size": "125747216"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
+              "size": "50525386"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
+              "size": "44225380"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
+              "size": "45575521"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            }
+          ]
+        },
+        {
+          "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+          "name": "xtensa-esp32-elf-gcc",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
+              "host": "i686-mingw32",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "size": "125719261"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "46517409"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "44219107"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "45566336"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "size": "50655584"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
+              "size": "66457613"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
+              "size": "90894048"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
+              "size": "87178224"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
+              "size": "86569314"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
+              "size": "92884013"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
+              "size": "98224709"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
+              "size": "116924759"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
+              "size": "119912142"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
+              "size": "90901736"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
+              "size": "87176557"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
+              "size": "86581102"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
+              "size": "92875986"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
+              "size": "98212907"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
+              "size": "113022469"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
+              "size": "115696999"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
+              "size": "86687290"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
+              "size": "84916701"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
+              "size": "88699953"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
+              "size": "93757895"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
+              "size": "106013515"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
+              "size": "66791095"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
+              "size": "90903617"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
+              "size": "87065204"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
+              "size": "86455731"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
+              "size": "92906274"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
+              "size": "98553473"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
+              "size": "116847008"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
+              "size": "120066269"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
+              "size": "191209735"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
+              "size": "106843321"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
+              "size": "103277393"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
+              "size": "103062256"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
+              "size": "109460025"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
+              "size": "113703959"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
+              "size": "144711970"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
+              "size": "146606480"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
+              "size": "106837189"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
+              "size": "103273444"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
+              "size": "103058744"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
+              "size": "109447789"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
+              "size": "113672945"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
+              "size": "140809778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
+              "size": "142365782"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
+              "size": "152812483"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
+              "size": "151726623"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
+              "size": "155430963"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
+              "size": "159836199"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
+              "size": "191266312"
+            }
+          ]
+        },
+        {
+          "version": "2.3.1-cn",
+          "name": "esptool",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-windows.zip",
+              "checksum": "SHA-256:c187763d0faac7da7c30a292a23c759bbc256fcd084dc8846ed284000cb0fe29",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.3.1-windows.zip",
+              "size": "3396085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-macos.tar.gz",
+              "checksum": "SHA-256:cd922418f02e0ca11dc066b36a22646a1b441da00d762b4464ca598c902c5ecb",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.3.1-macos.tar.gz",
+              "size": "3810932"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/package_index_cn.json b/package_index_cn.json
new file mode 100644
index 00000000000..43790945974
--- /dev/null
+++ b/package_index_cn.json
@@ -0,0 +1,6578 @@
+{
+  "packages": [
+    {
+      "name": "esp32",
+      "maintainer": "Espressif Systems",
+      "websiteURL": "https://github.com/espressif/arduino-esp32",
+      "email": "hristo@espressif.com",
+      "help": {
+        "online": "http://esp32.com"
+      },
+      "platforms": [
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.2.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.2.0/esp32-3.2.0.zip",
+          "archiveFileName": "esp32-3.2.0.zip",
+          "checksum": "SHA-256:d38b16fef6e519fc0d19bc5af0b39cdbed7dfc2ce69214c1971ded0e61ecd911",
+          "size": "25447136",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "ESP32-C6 Dev Board"
+            },
+            {
+              "name": "ESP32-H2 Dev Board"
+            },
+            {
+              "name": "ESP32-P4 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.4-2f7dcd86-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2411-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.3/esp32-3.1.3.zip",
+          "archiveFileName": "esp32-3.1.3.zip",
+          "checksum": "SHA-256:747160dbc81c6634c7bff9e8a57213e9982d52fe90d2a8f75a93a9f7b527defb",
+          "size": "25396700",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.2/esp32-3.1.2.zip",
+          "archiveFileName": "esp32-3.1.2.zip",
+          "checksum": "SHA-256:17214f51a7b9de547baa777419d2b041e1f09cfb17adb33c18617a756190f9f6",
+          "size": "25396684",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-489d7a2b-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.1/esp32-3.1.1.zip",
+          "archiveFileName": "esp32-3.1.1.zip",
+          "checksum": "SHA-256:e20982b2860eab4900ce16a0f2b7f9fc3ffb205e490dc933f625d53a5c9e8129",
+          "size": "25253828",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-cfea4f7c-v1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.1.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0/esp32-3.1.0.zip",
+          "archiveFileName": "esp32-3.1.0.zip",
+          "checksum": "SHA-256:0db044159e3fc737435b3f1d547bf85c60a33a175342c317d2a5c08c42977f80",
+          "size": "25225607",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.3-083aad99-v2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2405-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "14.2_20240403-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20241016-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.9.dev3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.7/esp32-3.0.7.zip",
+          "archiveFileName": "esp32-3.0.7.zip",
+          "checksum": "SHA-256:6b48f5bd889e55d7b93b95849dff77c6a5e4b9ee58c7298d7872d558a4d04931",
+          "size": "24546342",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.6/esp32-3.0.6.zip",
+          "archiveFileName": "esp32-3.0.6.zip",
+          "checksum": "SHA-256:7b4d87d0a18e69cba81e7aa7e69f088dc7c4f6cc89a20adc256bf77c86992dc5",
+          "size": "24546256",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-632e0c2a-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.5/esp32-3.0.5.zip",
+          "archiveFileName": "esp32-3.0.5.zip",
+          "checksum": "SHA-256:6ead4c452e69146b8eb08bee5a77898acc75a0637e9fccb5bbf665385ddc28db",
+          "size": "24481707",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-33fbade6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240821-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-3.0.4.zip",
+          "archiveFileName": "esp32-3.0.4.zip",
+          "checksum": "SHA-256:58fcd9b033be0358afbcbcf9a1d8eb216217f65f6b28f2e2cd739c7d016dda4f",
+          "size": "23937821",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-b6b4727c58-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-3.0.3.zip",
+          "archiveFileName": "esp32-3.0.3.zip",
+          "checksum": "SHA-256:b4aa70711293955a9835ad641279dc7cd524aeb405f7d294afa05c2ece7ded45",
+          "size": "23920341",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-dc859c1e67-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-3.0.2.zip",
+          "archiveFileName": "esp32-3.0.2.zip",
+          "checksum": "SHA-256:bd90630fbe9e99f3bb3340c25a87574d5551dd2823849adbf285f8430b6884cf",
+          "size": "23893902",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-bd2b9390ef-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20240318-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-3.0.1.zip",
+          "archiveFileName": "esp32-3.0.1.zip",
+          "checksum": "SHA-256:b7169d0dd51b64e450a7c09fafb7a4782820a9bc745f7b1e4618316440db0930",
+          "size": "23895257",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-x32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs2",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-xs3",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "3.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.0/esp32-3.0.0.zip",
+          "archiveFileName": "esp32-3.0.0.zip",
+          "checksum": "SHA-256:0960cf786992e0e3770d8c1e1979eaf01bd0ac9209b24fb00948cf93d43cf95c",
+          "size": "23891610",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "esp32-arduino-libs",
+              "version": "idf-release_v5.1-442a798083-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-12.2.0_20230208-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esp-rv32",
+              "version": "2302-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "12.1_20231023-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.6-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.17-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.17/esp32-2.0.17.zip",
+          "archiveFileName": "esp32-2.0.17.zip",
+          "checksum": "SHA-256:1f8658d4b18a8001ce782142ad08164af2991d70b83a147c3437a6ee30a9b225",
+          "size": "254658377",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.16-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.16/esp32-2.0.16.zip",
+          "archiveFileName": "esp32-2.0.16.zip",
+          "checksum": "SHA-256:6615fd16fd6d3ee2fa7ca2dd40a4f65220eddf094a88b7cee2141a0c077987bc",
+          "size": "254657760",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.15-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip",
+          "archiveFileName": "esp32-2.0.15.zip",
+          "checksum": "SHA-256:2219c1636264f55e19b2a5e7f41c81b669b1355017b15ee31773c85674b3e9bb",
+          "size": "254657764",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230921-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.14-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.14/esp32-2.0.14.zip",
+          "archiveFileName": "esp32-2.0.14.zip",
+          "checksum": "SHA-256:77c71eba520c97ab30161eb2f9c6a46b019e48d13936244b18f6ad4dbecf0a58",
+          "size": "252506057",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.12.0-esp32-20230419-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.13-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.13/esp32-2.0.13.zip",
+          "archiveFileName": "esp32-2.0.13.zip",
+          "checksum": "SHA-256:ee4c277bac0eecb7ca8853780da9d49b4e260926059cf6a9f9bac1923059de0c",
+          "size": "250665913",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.12-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.12/esp32-2.0.12.zip",
+          "archiveFileName": "esp32-2.0.12.zip",
+          "checksum": "SHA-256:9a4f844ca67812c547a9635cdb0dd2c347cae7a3e855f95f9d490b2f8d340dbe",
+          "size": "250664387",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.11-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.11/esp32-2.0.11.zip",
+          "archiveFileName": "esp32-2.0.11.zip",
+          "checksum": "SHA-256:d15386308dc72f94816ce80b5508af999f2fd0d88eb5e1ffba48316ab0b9c5d6",
+          "size": "250401265",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.10-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.10/esp32-2.0.10.zip",
+          "archiveFileName": "esp32-2.0.10.zip",
+          "checksum": "SHA-256:6028cb623c838723c41000869963d95f7cb811d58643133068eed31c03c2d7c0",
+          "size": "250401273",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            },
+            {
+              "name": "Arduino Nano ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            },
+            {
+              "packager": "arduino",
+              "name": "dfu-util",
+              "version": "0.11.0-arduino5"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.9-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esp32-2.0.9.zip",
+          "archiveFileName": "esp32-2.0.9.zip",
+          "checksum": "SHA-256:37072185026db3cdc0ed4b6fb12840d7f41571a16c60eec97bec2a4abec8dcee",
+          "size": "278964028",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.8-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip",
+          "archiveFileName": "esp32-2.0.8.zip",
+          "checksum": "SHA-256:2c5daa3ce7456e752fb8d8a35b0b6b2eb8e494032cba57569ba12dd53eb235f2",
+          "size": "278963636",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gdb",
+              "version": "11.2_20220823-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.7-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip",
+          "archiveFileName": "esp32-2.0.7.zip",
+          "checksum": "SHA-256:b5a7a54fca36501d1108413310ec50ae2df655c14c3881325903cde2c7ae5f80",
+          "size": "278966011",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "esp-2021r2-patch5-8.4.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20221026-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip",
+          "archiveFileName": "esp32-2.0.6.zip",
+          "checksum": "SHA-256:ea56d300404cc1b5bc15295f29790246b02025c493e0664a6d271164a602a351",
+          "size": "264579419",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch5-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "openocd-esp32",
+              "version": "v0.11.0-esp32-20220706-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip",
+          "archiveFileName": "esp32-2.0.5.zip",
+          "checksum": "SHA-256:c7a1040c5f007a799ef9eb249508e3544c3cf5246f67cdfdc1e80f7d0ca7b41d",
+          "size": "260916106",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "4.2.1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.4-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip",
+          "archiveFileName": "esp32-2.0.4.zip",
+          "checksum": "SHA-256:832609d6f4cd0edf4e471f02e30b7f0e1c86fdd1b950990ef40431e656237214",
+          "size": "259715595",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.3-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip",
+          "archiveFileName": "esp32-2.0.3.zip",
+          "checksum": "SHA-256:7a44ab32a2bfe18a84fd1f75aa1921dae92c6b4a74a2eb4d0c7d479b34996f3b",
+          "size": "246542267",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-S3 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s3-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-patch3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.3.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.2-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esp32-2.0.2.zip",
+          "archiveFileName": "esp32-2.0.2.zip",
+          "checksum": "SHA-256:e139f22aab9cbe8109815de0be110e58a8f1d6c90a2e263eb0b0d646b53a5a33",
+          "size": "151846438",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.1-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.1/esp32-2.0.1.zip",
+          "archiveFileName": "esp32-2.0.1.zip",
+          "checksum": "SHA-256:3a7cd46ba47990dd37fbe02b7f0a910dd5cc7af1d190350b69d320ed36cd6b41",
+          "size": "148976301",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Board"
+            },
+            {
+              "name": "ESP32-S2 Dev Board"
+            },
+            {
+              "name": "ESP32-C3 Dev Board"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r2-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "2.0.0-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
+          "archiveFileName": "esp32-2.0.0.zip",
+          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
+          "size": "139313137",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "riscv32-esp-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32s2-elf-gcc",
+              "version": "gcc8_4_0-esp-2021r1-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.1.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mklittlefs",
+              "version": "3.0.0-gnu12-dc7f933-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.6-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.6/esp32-1.0.6.zip",
+          "archiveFileName": "esp32-1.0.6.zip",
+          "checksum": "SHA-256:982da9aaa181b6cb9c692dd4c9622b022ecc0d1e3aa0c5b70428ccc3c1b4556b",
+          "size": "51126662",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "name": "esp32",
+          "architecture": "esp32",
+          "version": "1.0.5-cn",
+          "category": "ESP32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5/esp32-1.0.5.zip",
+          "archiveFileName": "esp32-1.0.5.zip",
+          "checksum": "SHA-256:dc5c6c72a127b3171c654f3c3476911d3c2b0ab21affdb7b0f0756c105ca71a7",
+          "size": "49552769",
+          "help": {
+            "online": ""
+          },
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "name": "xtensa-esp32-elf-gcc",
+              "version": "1.22.0-97-gc752ad5-5.2.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "esptool_py",
+              "version": "3.0.0-cn"
+            },
+            {
+              "packager": "esp32",
+              "name": "mkspiffs",
+              "version": "0.2.3-cn"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.4/esp32-1.0.4.zip",
+          "checksum": "SHA-256:d9108bf873933c4e48a3ca401fb51e41b2cc3f98d7c9b9be9881e7ca34bf0efe",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.4-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.4.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36853332"
+        },
+        {
+          "category": "ESP32",
+          "name": "esp32",
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.3/esp32-1.0.3.zip",
+          "checksum": "SHA-256:19a30ece8a3ab26ab420c3d5531a9a1c51cb04e421a4f1d86dc072c209060436",
+          "help": {
+            "online": ""
+          },
+          "version": "1.0.3-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.3.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            },
+            {
+              "name": "WEMOS D1 MINI ESP32"
+            }
+          ],
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "size": "36811826"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.2/esp32-1.0.2.zip",
+          "checksum": "SHA-256:c3a5a5050705d41ab205d25a7399e921057b754ef8f883419f58c0c7f08df11c",
+          "version": "1.0.2-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.2.zip",
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ],
+          "size": "31174160",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.1-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "name": "esp32"
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.1/esp32-1.0.1.zip",
+          "checksum": "SHA-256:1a7fa2f9bb0b6b5a20dfea227497f4851dc8b886caf7ecb998f745589c97ed34",
+          "name": "esp32",
+          "version": "1.0.1-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.1.zip",
+          "size": "31273425",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.6.0-cn",
+              "name": "esptool_py"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        },
+        {
+          "category": "ESP32",
+          "help": {
+            "online": ""
+          },
+          "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.0/esp32-1.0.0.zip",
+          "checksum": "SHA-256:94d586174f103e2014be590ab307c5cdda6fa2ec70204c7f121882ace5e05c80",
+          "name": "esp32",
+          "version": "1.0.0-cn",
+          "architecture": "esp32",
+          "archiveFileName": "esp32-1.0.0.zip",
+          "size": "26381887",
+          "toolsDependencies": [
+            {
+              "packager": "esp32",
+              "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+              "name": "xtensa-esp32-elf-gcc"
+            },
+            {
+              "packager": "esp32",
+              "version": "2.3.1-cn",
+              "name": "esptool"
+            },
+            {
+              "packager": "esp32",
+              "version": "0.2.3-cn",
+              "name": "mkspiffs"
+            }
+          ],
+          "boards": [
+            {
+              "name": "ESP32 Dev Module"
+            },
+            {
+              "name": "WEMOS LoLin32"
+            }
+          ]
+        }
+      ],
+      "tools": [
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.4-2f7dcd86-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.4/esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.4-2f7dcd86-v1.zip",
+              "checksum": "SHA-256:11f1271fe5e2857155d90384690069e4d33f0f97a4c04e7474b29a7cbc7ededd",
+              "size": "352347498"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-489d7a2b-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-489d7a2b-v1.zip",
+              "checksum": "SHA-256:489012502218a7d30f6c312764bc8d10830a51e1db29558f15181c68373d0095",
+              "size": "341414090"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-cfea4f7c-v1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-cfea4f7c-v1.zip",
+              "checksum": "SHA-256:1099291229a9be453c771c5867b8487a0266db9246b672417337b8f511d7f820",
+              "size": "341118284"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.3-083aad99-v2-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-083aad99-v2.zip",
+              "checksum": "SHA-256:4c6cae2e34df7e85a149615a6c18169777faf9460f708fc51d93616a117973c2",
+              "size": "341175680"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-632e0c2a-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-632e0c2a.zip",
+              "checksum": "SHA-256:41f67e1c11f68b57d651955c93b63d6a8d35808ce6aff6ba3d1e1476178758f2",
+              "size": "309895581"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-33fbade6-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.1/esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "archiveFileName": "esp32-arduino-libs-idf-release_v5.1-33fbade6.zip",
+              "checksum": "SHA-256:578f325fa9fca635d9c6c3b19726cb26077751e3155b677317bde2e0b371df7d",
+              "size": "309285463"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-b6b4727c58-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.4/esp32-arduino-libs-3.0.4.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.4.zip",
+              "checksum": "SHA-256:c5c495fc3e6e11418e87ca9f6bf89cdcb0bcc38244a618f8d457d7a77f70b778",
+              "size": "305857583"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-dc859c1e67-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.3/esp32-arduino-libs-3.0.3.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.3.zip",
+              "checksum": "SHA-256:23618328d3cc3d2eabc269196be22af5b2353583d5f6ec14b3ef0cf11e7da7ba",
+              "size": "305530538"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-bd2b9390ef-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.2.zip",
+              "checksum": "SHA-256:6df0f2753ae3d43582e641e3b945666c2700cb18f62a1932ad535b79427aae0b",
+              "size": "305835047"
+            }
+          ]
+        },
+        {
+          "name": "esp32-arduino-libs",
+          "version": "idf-release_v5.1-442a798083-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip",
+              "archiveFileName": "esp32-arduino-libs-3.0.1.zip",
+              "checksum": "SHA-256:112f81fcaed22286f9ba19bbd01d12337aab7b64e997120c33f833816b343e20",
+              "size": "373411607"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b1859df334a85541ae746e1b86439f59180d87f8cf1cc04c2e770fadf9f006e9",
+              "size": "323678089"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7ff023033a5c00e55b9fc0a0b26d18fb0e476c24e24c5b0459bcb2e05a3729f1",
+              "size": "320064691"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:bb11dbf3ed25d4e0cc9e938749519e8236cfa2609e85742d311f1d869111805a",
+              "size": "319454139"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:5ac611dca62ec791d413d1f417d566c444b006d2a4f97bd749b15f782d87249b",
+              "size": "328335914"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:15b3e60362028eaeff9156dc82dac3f1436b4aeef3920b28d7650974d8c34751",
+              "size": "336215844"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:45c475518735133789bacccad31f872318b7ecc0b31cc9b7924aad880034f0bf",
+              "size": "318797396"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8",
+              "size": "382457717"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028",
+              "size": "386316009"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bce77e8480701d5a90545369d1b5848f6048eb39c0022d2446d1e33a8e127490",
+              "size": "208911713"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7c9e3c1adc733d042ed87b92daa1d6396e1b441c1755f1fa14cb88855719ba88",
+              "size": "202519931"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d6955e8ea6af91574bf9213b92f32ca09eb8640103446b7fa19a63cfeeec5421",
+              "size": "202206516"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3666ee74ecb693ee6488f11469802630a7b0d32608184045a4f35cb413f59e3d",
+              "size": "213304863"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:948cf57b6eecc898b5f70e06ad08ba88c08b627be570ec631dfcd72f6295194a",
+              "size": "221357024"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:6f03fdf0cc14a7f3900ee59977f62e8626d8b7c208506e52f1fd883ac223427a",
+              "size": "199689745"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-i686-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:d6b227c50e3c8e21d62502b3140e5ab74a4cb502c2b4169c36238b9858a8fb88",
+              "size": "266042967"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "archiveFileName": "xtensa-esp-elf-13.2.0_20240530-x86_64-w64-mingw32_hotfix.zip",
+              "checksum": "SHA-256:155ee97b531236e6a7c763395c68ca793e55e74d2cb4d38a23057a153e01e7d0",
+              "size": "269831985"
+            }
+          ]
+        },
+        {
+          "name": "esp-x32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e",
+              "size": "31010320"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66",
+              "size": "30954580"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d",
+              "size": "28697281"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0",
+              "size": "29890994"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9",
+              "size": "44446611"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1",
+              "size": "37021423"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2",
+              "size": "26302466"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e",
+              "size": "28366035"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d0743ec43cd92c35452a9097f7863281de4e72f04120d63cfbcf9d591a373529",
+              "size": "36942094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:bc1fac0366c6a08e26c45896ca21c8c90efc2cdd431b8ba084e8772e15502d0e",
+              "size": "37134601"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:25efc51d52b71f097ccec763c5c885c8f5026b432fec4b5badd6a5f36fe34d04",
+              "size": "34579556"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e0af0b3b4a6b29a843cd5f47e331a966d9258f7d825b4656c6251490f71b05b2",
+              "size": "35676578"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:bd146fd99a52b2d71c7ce0f62b9e18f3423d6cae7b2b2c954046b0dd7a23142f",
+              "size": "52863941"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:5edc76565bf9d2fadf24e443ddf3df7567354f336a65d4af5b2ee805cdfcec24",
+              "size": "33504923"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:ea4f3ee6b95ad1ad2e07108a21a50037a3e64a420cdeb34b2ba95d612faed898",
+              "size": "31068749"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:13bb97f39173948d1cfb6e651d9b335ea9d52f1fdd0dda1eda3a2d23d8c63644",
+              "size": "33514906"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b5f7cc3e4b5a58db655754083ed9652e4953e71c3b4922fb624e7a034ec24a64",
+              "size": 26947336
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:816acfae38b6b443f4f1590395f68f079243539259d19c7772ae6416c6519444",
+              "size": 27134508
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4dd1bace0633196fddfdcef3cebcc4bbfce22f5a0d2d1e3d618f3d8a6cbfcacc",
+              "size": 25205239
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:27744d09d171be2f55ec15fa7f2d7f8ff94d33f7e130d24ebe082cb6c438618b",
+              "size": 25978028
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:1432faa12d7301133f6ee654d60751b57adcc6cf323ee1ecc393f06f0225eff4",
+              "size": 38386785
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d0b542ef070ea72857f9cf554f176a0a9d868cd59e05ac293ad39402bcc5277d",
+              "size": 21671964
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1678b06aa80b1d689d05548056635efde5b73b98f2c3de5d555bcfc6f374c5d0",
+              "size": 23241302
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:7060df4b6aa133e282147c3651d50222d677d6a0fff92979c500353b099a3f41",
+              "size": 25135265
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2411-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a16942465d33c7f0334c16e83bc6feb62e06eeb79cf19099293480bb8d48c0cd",
+              "size": "593721156"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:22486233d0e0fd58a54ae453b701f195f1432fc6f2e17085b9d6c8d5d9acefb7",
+              "size": "587879927"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:27a72d5d96cdb56dae2a1da5dfde1717c18a8c1f9a1454c8e34a8bd34abe662d",
+              "size": "586531522"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:b7bd6e4cd53a4c55831d48e96a3d500bfffb091bec84a30bc8c3ad687e3eb3a2",
+              "size": "597070471"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:5f8b571e1aedbe9f856f3bdeca6600cd5510ccff1ca102c4f001421eda560585",
+              "size": "602343061"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-aarch64-apple-darwin_signed.tar.gz",
+              "checksum": "SHA-256:a7276042a7eb2d33c2dff7167539e445c32c07d43a2c6827e86d035642503e0b",
+              "size": "578521565"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7",
+              "size": "672055172"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-14.2.0_20241119/riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-14.2.0_20241119-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c",
+              "size": "677812937"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2405-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e7fbfffbb19dcd3764a9848a141bf44e19ad0b48e0bd1515912345c26fe52fba",
+              "size": "294346758"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:a178a895b807ed2e87d5d62153c36a6aae048581f527c0eb152f0a02b8de9571",
+              "size": "288374597"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:4a2f176d0f5bc8a70645975e2a08ea94145fb69b7225c5cdcbd6024a4836aaf5",
+              "size": "287737495"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:7a6f02f1b2effafb18600bbf602818f6923fd320f000fb8659f34acbfda8812f",
+              "size": "299138540"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:a193b4f025d0d836b0a9d9cbe760af1c53e53af66fc332fe98952bc4c456dd9a",
+              "size": "305025700"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7082dd2e2123dea5609a24092d19ac6612ae7e219df1d298de6b2f64cb4af0df",
+              "size": "285458443"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:590bfb10576702639825581cc00c445da6e577012840a787137417e80d15f46d",
+              "size": "366573064"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-13.2.0_20240530-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:413eb9f6adf8fdaf25544d014c850fc09eb38bb93a2fc5ebd107ab1b0de1bb3a",
+              "size": "369820297"
+            }
+          ]
+        },
+        {
+          "name": "esp-rv32",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:1eb0d65990547ee9706b90406600cbc3638814d5feb7c1f7b44bb5416478a5bd",
+              "size": "257615266"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:921fcdc170c7fe5d6a0a30470ed1875c8926d910c19739fc950c8d1836e4c1c5",
+              "size": "253094184"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:f66e06312b58251c2121c1b1df1102565708573b86b2a9fe0c03ea1b0e9a7511",
+              "size": "252558021"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:8abcac0331ef8973d1c705e77523364ebec7e98b37640d4a1d036912f3cbe946",
+              "size": "261248375"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:76a334bc75a4e3891c222c84d7968817f2d0699d2976fc2a1658e56395283bec",
+              "size": "268987133"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:f30571945b257a10a26901bba3c5892e07c192aacf9ed6e8fcd11ca36ed827d2",
+              "size": "252159713"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:a5dfbb6dbf6fc6c6ea9beb2723af059ba3c5b2c86c2f0dc3b21afdc7bb229bf5",
+              "size": "324863847"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:9deae9e0013b2f7bbf017f9c8135755bfa89522f337c7dca35872bf12ec08176",
+              "size": "328092732"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "14.2_20240403-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13",
+              "size": "30707431"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55",
+              "size": "30824065"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7",
+              "size": "29000575"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2",
+              "size": "29947521"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9",
+              "size": "44196117"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320",
+              "size": "36794404"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730",
+              "size": "26486295"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v14.2_20240403/riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-14.2_20240403-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317",
+              "size": "27942579"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "12.1_20231023-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2c78b806be176b1e449e07ff83429d38dfc39a13f89a127ac1ffa6c1230537a0",
+              "size": "36630145"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:33f80117c8777aaff9179e27953e41764c5c46b3c576dc96a37ecc7a368807ec",
+              "size": "36980143"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:292e6ec0a9381c1480bbadf5caae25e86428b68fb5d030c9be7deda5e7f070e0",
+              "size": "34950318"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:68a25fbcfc6371ec4dbe503ec92211977eb2006f0c29e67dbce6b93c70c6b7ec",
+              "size": "35801607"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:322c722e6c12225ed8cd97f95a0375105756dc5113d369958ce0858ad1a90257",
+              "size": "52618688"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c2224b3a8d02451c530cf004c29653292d963a1b4021b4b472b862b6dbe97e0b",
+              "size": "33149392"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:4b42149a99dd87ee7e6dde25c99bad966c7f964253fa8f771593d7cef69f5602",
+              "size": "31635103"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v12.1_20231023/riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-12.1_20231023-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:728231546ad5006d34463f972658b2a89e52f660a42abab08a29bedd4a8046ad",
+              "size": "33400816"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gdb",
+          "version": "11.2_20220823-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6bf5b5d2d407e074af2a74fc826764934ac1625a1751c52fbc0d4d7772061f8f",
+              "size": 26799809
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e54ef67cdb5724fc2da8f0487f19b2c83c08b560fff317f5ffd98fbb230b397a",
+              "size": 27021672
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:86772c6aee8a05b2c75a6b04e9da630e35e8415b64da8ccde92a5fb2d3c7fcf4",
+              "size": 25532577
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i586-linux-gnu.tar.gz",
+              "checksum": "SHA-256:3463be3e24182b7f1bd0fb232020534445b2d0ea0e7093c1b4f4da102b3baf52",
+              "size": 26188698
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-apple-darwin14.tar.gz",
+              "checksum": "SHA-256:a9db1811ebb9271134eba2f7c303fc2587bd4b2a1ae33cd05ff2605cd2fb30d2",
+              "size": 38397584
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-aarch64-apple-darwin21.1.tar.gz",
+              "checksum": "SHA-256:c94fb6d726b8d97e65e23237f5126a41343bca8f22a0414df5f0e6777e36f51c",
+              "size": 21593613
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:20cdee8a1c01428363ef02f4cc8035c65508d6b43560c525733eae94b7c7bb50",
+              "size": 23436802
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/binutils-gdb/releases/download/esp-gdb-v11.2_20220823/riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "archiveFileName": "riscv32-esp-elf-gdb-11.2_20220823-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:add72366485b784b66837ce263548980f1df144d0954c42d75a81f6acbd43cac",
+              "size": 24802315
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20241016-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:e82b0f036dc99244bead5f09a86e91bb2365cbcd1122ac68261e5647942485df",
+              "size": "2398717"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:8f8daf5bd22ec5d2fa9257b0862ec33da18ee677e023fb9a9eb17f74ce208c76",
+              "size": "2271584"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:bc9c020ecf20e2000f76cffa44305fd5bc44d2e688ea78cce423399d33f19767",
+              "size": "2414206"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:02a2dffe801a2d005fa9e614d80ff8173395b2cb0b5d3118d0229d094a9946a7",
+              "size": "2508089"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20241016.tar.gz",
+              "checksum": "SHA-256:c382f9e884d6565cb6089bff5f200f4810994667d885f062c3d3c5625a0fa9d6",
+              "size": "2552569"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:3b5d615e0a72cc771a45dd469031312d5881c01d7b6bc9edb29b8b6bda8c2e90",
+              "size": "2946244"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20241016/openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20241016.zip",
+              "checksum": "SHA-256:5e7b2fd1947d3a8625f6a11db7a2340cf2f41ff4c61284c022c7d7c32b18780a",
+              "size": "2946244"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240821-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:f8c68541fa38307bc0c0763b7e1e3fe4e943d5d45da07d817a73b492e103b652",
+              "size": "2373094"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:4d6e263d84e447354dc685848557d6c284dda7fe007ee451f729a7edfa7baad7",
+              "size": "2251272"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:9d45679f2c4cf450d5e2350047cf57bb76dde2487d30cebce0a72c9173b5c45b",
+              "size": "2390074"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:565c8fabc5f19a6e7a0864a294d74b307eec30b9291d16d3fc90e273f0330cb4",
+              "size": "2485320"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240821.tar.gz",
+              "checksum": "SHA-256:68c5c7cf3d15b9810939a5edabc6ff2c9f4fc32262de91fc292a180bc5cc0637",
+              "size": "2530336"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:463fc2903ddaf03f86ff50836c5c63cc696550b0446140159eddfd2e85570c5d",
+              "size": "2916409"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240821/openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20240821.zip",
+              "checksum": "SHA-256:550f57369f1f1f6cc600b5dffa3378fd6164d8ea8db7c567cf41091771f090cb",
+              "size": "2916408"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20240318-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:cf26c5cef4f6b04aa23cd2778675604e5a74a4ce4d8d17b854d05fbcb782d52c",
+              "size": "2252682"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:9b97a37aa2cab94424a778c25c0b4aa0f90d6ef9cda764a1d9289d061305f4b7",
+              "size": "2132904"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b7e82776ec374983807d3389df09c632ad9bc8341f2075690b6b500319dfeaf4",
+              "size": "2271761"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:b16c3082c94df1079367c44d99f7a8605534cd48aabc18898e46e94a2c8c57e7",
+              "size": "2365588"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20240318.tar.gz",
+              "checksum": "SHA-256:534ec925ae6e35e869e4e4e6e4d2c4a1eb081f97ebcc2dd5efdc52d12f4c2f86",
+              "size": "2406377"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20240318/openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20240318.zip",
+              "checksum": "SHA-256:d379329eba052435173ab0d69c9b15bc164a6ce489e2a67cd11169d2dabff633",
+              "size": "2783915"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230921-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:61e38e0a13a5c1664624ec1c397d7f7d6868554b0d345d3fb1f7294cce38cc4b",
+              "size": "2193783"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6430315dc1b926541c93cef63d2b08982543ad3f9fe6e0d7107c8a518ef20432",
+              "size": "2062058"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:5df16d8a91f013a547f6b3b914c655a9d267996a3b6503031b335ac04a4f8d15",
+              "size": "2206666"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:0a4f764934f488af18cdac2a0d152dd36b4870f3bec1a2d4e25b6b3b7a5258a0",
+              "size": "2305832"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230921.tar.gz",
+              "checksum": "SHA-256:6dce89048f642eb0559a915b6e514f90feb2a95afe21b84f0b0ebf2b27824816",
+              "size": "2341406"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230921.zip",
+              "checksum": "SHA-256:ac9d522a63b0816f64d921547bd55c031788035ced85c067d8e7c2862cb1bd0d",
+              "size": "2710475"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.12.0-esp32-20230419-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:5144e7516cd75a2152b35ecae0a400f7d3d4424c2488fbacc49433564f54c70d",
+              "size": 2126949
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:1c4d900c738fe00730c6033abb6cf1cc6587717dbeee291d5908272d153d329a",
+              "size": 1989161
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:293258fd67618dd352e1096137ad9f2b801926eaf74ffcd570540ae94ad8ee5c",
+              "size": 2129727
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:621aad7d011c6817cde9570dfea42c7bcc699458bf43c37706cb4c2f6475a247",
+              "size": 2237976
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20230419.tar.gz",
+              "checksum": "SHA-256:3af7eac3a7de3939731ec4c13fb5d72a8e6ce5e5d274bb9697f5d93039561e42",
+              "size": 2270699
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230419/openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20230419.zip",
+              "checksum": "SHA-256:f2cb3d9cacfe789c20d3272af846d726a062ce8f2e4ee142bddb27501d7dd7a7",
+              "size": 2619680
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20221026-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:ce63e9b1dfab60cc62da5dc2abcc22ba7036c42afe74671c787eb026744e7d0b",
+              "size": "2051435"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:fe60a3a603e8c6bee47367e40fcb8c0da3a38e01163e9674ebc919b067700506",
+              "size": "1993843"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armel-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:6ef76101cca196a4be30fc74f191eff34abb423e32930a383012b866c9b76135",
+              "size": "2092111"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:8edc666a0a230432554b73df7c62e0b5ec21fb018e7fda13b11a7ca8b6c1763b",
+              "size": "2199855"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-arm64-0.11.0-esp32-20221026.tar.gz",
+              "checksum": "SHA-256:c426c0158ba6488e2f432f7c5b22e79155b5b0fae6d1ad5bbd7894723b43aa12",
+              "size": "2247179"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20221026/openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20221026.zip",
+              "checksum": "SHA-256:e0e789d35308c029c6b53457cf4a42a5620cb1a3014740026c089c2ed4fd77b2",
+              "size": "2493214"
+            }
+          ]
+        },
+        {
+          "name": "openocd-esp32",
+          "version": "v0.11.0-esp32-20220706-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "archiveFileName": "openocd-esp32-win32-0.11.0-esp32-20220706.zip",
+              "checksum": "SHA-256:c3d39eb4365a9947e71f1d3780ce031185bc6437f21186568a5c05f23f57a8d0",
+              "size": "2608736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-macos-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:333ee2ec3c9b5dc6ad4509faae55335cdea7f8bf83a56bfcf5327e4497c8538a",
+              "size": "2077882"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-amd64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:26f1f18dd93eb70a13203848d3fb1cc2e0de1fd6749c7dd771b2de8709735aed",
+              "size": "2011201"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-armhf-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:7f3b57332104e8b8e6194553365a70a9d3754878cfc063d5dc5d839513a63de9",
+              "size": "1902964"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220706/openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "archiveFileName": "openocd-esp32-linux-arm64-0.11.0-esp32-20220706.tar.gz",
+              "checksum": "SHA-256:f97792bc2852937ec0accb9f0eb2e49926c0f747a71f101a4e34aed75d2c6fcc",
+              "size": "1954685"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.9.dev3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:4ecaf51836cbf4ea3c19840018bfef3b0b8cd8fc3c95f6e1e043ca5bbeab9bf0",
+              "size": "64958202"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-armv7.tar.gz",
+              "checksum": "SHA-256:fff818573bce483ee793ac83c8211f6abf764aa3350f198228859f696a0a0b36",
+              "size": "31530030"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-linux-aarch64.tar.gz",
+              "checksum": "SHA-256:5b274bdff2f62e6a07c3c1dfa51b1128924621f661747eca3dbe0f77972f2f06",
+              "size": "33663882"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-amd64.tar.gz",
+              "checksum": "SHA-256:c733c83b58fcf5f642fbb2fddb8ff24640c2c785126cba0821fb70c4a5ceea7a",
+              "size": "32767836"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "archiveFileName": "esptool-v4.9.dev3-macos-arm64.tar.gz",
+              "checksum": "SHA-256:83c195a15981e6a5e7a130db2ccfb21e2d8093912e5b003681f9a5abadd71af7",
+              "size": "30121441"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/3.1.0-RC3/esptool-v4.9.dev3-win64.zip",
+              "archiveFileName": "esptool-v4.9.dev3-win64.zip",
+              "checksum": "SHA-256:890051a4fdc684ff6f4af18d0bb27d274ca940ee0eef716a9455f8c64b25b215",
+              "size": "36072564"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.6-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-src.tar.gz",
+              "archiveFileName": "esptool-v4.6-src.tar.gz",
+              "checksum": "SHA-256:22f9bad0cd1cea14e554ac1f4a6d8f67415ff7029a66ce9130756276e7264e5a",
+              "size": "99141"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-macos.tar.gz",
+              "archiveFileName": "esptool-v4.6-macos.tar.gz",
+              "checksum": "SHA-256:885ec69fcffdcb9e7c6eacd2589f13a45ce6bcb6742bea368ec3a73bcca6dd59",
+              "size": "5851297"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.9/esptool-v4.6-win64.zip",
+              "archiveFileName": "esptool-v4.6-win64.zip",
+              "checksum": "SHA-256:c7c68cd1aa520cbfce488ff6a77818ece272272eb012831b9d9ab1280a7c393f",
+              "size": "6638480"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5.1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-src.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-src.tar.gz",
+              "checksum": "SHA-256:aa06831a7d88d8ccde4ea21241e983a08dbdae967290e181658b0d18bffc8f86",
+              "size": "96922"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5.1-macos.tar.gz",
+              "checksum": "SHA-256:78b52acfd51541ceb97cee893b7d4d49b8ddc284602be8c73ea47e3d849e0956",
+              "size": "5850888"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.7/esptool-v4.5.1-win64.zip",
+              "archiveFileName": "esptool-v4.5.1-win64.zip",
+              "checksum": "SHA-256:64d0c24499d46b80d6bd7a05c98bdacc3455ab6d503cc2a99e35711310216045",
+              "size": "6638448"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-src.tar.gz",
+              "archiveFileName": "esptool-v4.5-src.tar.gz",
+              "checksum": "SHA-256:0f5d20c4624d913c3c994db57da3c4e5a43bd8437351d9b789f79d3f1b057292",
+              "size": "96621"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-macos.tar.gz",
+              "archiveFileName": "esptool-v4.5-macos.tar.gz",
+              "checksum": "SHA-256:adcce051f282a19f78da30717ff0e4334b0edaf16a7f14d185ba4cae464586e2",
+              "size": "5850835"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.6/esptool-v4.5-win64.zip",
+              "archiveFileName": "esptool-v4.5-win64.zip",
+              "checksum": "SHA-256:a55c5f7d490fbd2cd5fdf486d71f2ed13e3304482d54374b6aa23d42c9b98a96",
+              "size": "6639416"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "4.2.1-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-windows.zip",
+              "archiveFileName": "esptool-4.2.1-windows.zip",
+              "checksum": "SHA-256:582560067bfbd9895f4862eb5fdf87558ddee5d4d30e7575c9b8bcb0dd60fd94",
+              "size": "6368279"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-macos.tar.gz",
+              "archiveFileName": "esptool-4.2.1-macos.tar.gz",
+              "checksum": "SHA-256:a984f7ad8bdb40c42d0d368bf4bb21b69a9587aed46b7b6d7de23ca58a3f150d",
+              "size": "5816598"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.4/esptool-4.2.1-linux.tar.gz",
+              "archiveFileName": "esptool-4.2.1-linux.tar.gz",
+              "checksum": "SHA-256:5a45fb77eb6574554ec2f45230d0b350f26f9c24ab3b6c13c4031ebdf72a34ab",
+              "size": "90123"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.3.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-windows.zip",
+              "archiveFileName": "esptool-3.3-windows.zip",
+              "checksum": "SHA-256:55a1d7165414bf4dbd2bb16ca094e555d671958450f5d1536b457a518d2b15df",
+              "size": "7436864"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-macos.tar.gz",
+              "archiveFileName": "esptool-3.3-macos.tar.gz",
+              "checksum": "SHA-256:3e5f7b521ae33c8c63f3b48efc909c08f37bef1a083c0eafa408312c09900afd",
+              "size": "6944975"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.2/esptool-3.3-linux.tar.gz",
+              "archiveFileName": "esptool-3.3-linux.tar.gz",
+              "checksum": "SHA-256:fbe91a49e5f5deca4881f5eed32e8903faf97bfd365fe2d0d1512b80bdb67f5e",
+              "size": "97026"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.1.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-windows.zip",
+              "archiveFileName": "esptool-3.1.0-windows.zip",
+              "checksum": "SHA-256:c9b4f9bc6e94db136c2545c87c00c7ab1441644ca0bac50811bc3c014e22514b",
+              "size": "7411889"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-macos.tar.gz",
+              "archiveFileName": "esptool-3.1.0-macos.tar.gz",
+              "checksum": "SHA-256:1dffcb884665fb616779aea62a68f517aac251ea6dfe95560906c364d6ef3065",
+              "size": "6776909"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/2.0.0-alpha1/esptool-3.1.0-linux.tar.gz",
+              "archiveFileName": "esptool-3.1.0-linux.tar.gz",
+              "checksum": "SHA-256:15eca9896a30e804aa24be6f7a06e39397541b8b09a7a4c48deb65f826e7baad",
+              "size": "80550"
+            }
+          ]
+        },
+        {
+          "name": "esptool_py",
+          "version": "3.0.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-windows.zip",
+              "archiveFileName": "esptool-3.0.0.2-windows.zip",
+              "checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
+              "size": "3434736"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-macos.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
+              "checksum": "SHA-256:2cafab7f1ebce89475b84c115548eaace40b6366d7b3f9862cdb2fc64f806643",
+              "size": "3859642"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/esptool-3.0.0.2-linux.tar.gz",
+              "archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
+              "checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
+              "size": "57526"
+            }
+          ]
+        },
+        {
+          "version": "2.6.1-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-windows.zip",
+              "checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.1-windows.zip",
+              "size": "3422445"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-macos.tar.gz",
+              "checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.1-macos.tar.gz",
+              "size": "3837085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.1-linux.tar.gz",
+              "checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.1-linux.tar.gz",
+              "size": "44762"
+            }
+          ]
+        },
+        {
+          "version": "2.6.0-cn",
+          "name": "esptool_py",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-windows.zip",
+              "checksum": "SHA-256:a73f4cf68db240d7f1d250c5c7f2dfcb53c17a37483729f1bf71f8f43d79a799",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.6.0-windows.zip",
+              "size": "3421208"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-macos.tar.gz",
+              "checksum": "SHA-256:0a881b91547c840fab8c72ae3d031069384278b8c2e5241647e8c8292c5e4a4b",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.6.0-macos.tar.gz",
+              "size": "3835660"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.6.0-linux.tar.gz",
+              "checksum": "SHA-256:6d162f70f395ca31f5008829dd7e833e729f044a9c7355d5be8ce333a054e110",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.6.0-linux.tar.gz",
+              "size": "43535"
+            }
+          ]
+        },
+        {
+          "version": "3.0.0-gnu12-dc7f933-cn",
+          "name": "mklittlefs",
+          "systems": [
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "aarch64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:fc56e389383749e4cf4fab0fcf75cc0ebc41e59383caf6c2eff1c3d9794af200",
+              "size": "44651"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "arm-linux-gnueabihf.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:52b642dd0545eb3bd8dfb75dde6601df21700e4867763fd2696274be279294c5",
+              "size": "37211"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "i686-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:7886051d8ccc54aed0af2e7cdf6ff992bb51638df86f3b545955697720b6d062",
+              "size": "48033"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "i686-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:43740db30ce451454f2337331f10ab4ed41bd83dbf0fa0cb4387107388b59f42",
+              "size": "332655"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:e3edd5e05b70db3c7df6b9d626558348ad04804022fe955c799aeb51808c7dc3",
+              "size": "362608"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "archiveFileName": "x86_64-linux-gnu.mklittlefs-c41e51a.200706.tar.gz",
+              "checksum": "SHA-256:66e84dda0aad747517da3785125e05738a540948aab2b7eaa02855167a1eea53",
+              "size": "46778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/earlephilhower/esp-quick-toolchain/releases/download/3.0.0-gnu12/x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "archiveFileName": "x86_64-w64-mingw32.mklittlefs-c41e51a.200706.zip",
+              "checksum": "SHA-256:2e319077491f8e832e96eb4f2f7a70dd919333cee4b388c394e0e848d031d542",
+              "size": "345132"
+            }
+          ]
+        },
+        {
+          "name": "mkspiffs",
+          "version": "0.2.3-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
+              "checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
+              "size": "249809"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "i386-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
+              "checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
+              "size": "130270"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
+              "checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
+              "size": "50646"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
+              "checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
+              "size": "48751"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
+              "checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
+              "size": "40665"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs2",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "esp-xs3",
+          "version": "2302-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:b14189772d70a96813895fff7731d0f2fec0c825cfc02e002d6d91a0cc4b6b1d",
+              "size": "93104016"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8ef14e0409c2011b41e504a30f70d3e35287313a795d1f2462ad2cd0e2052d37",
+              "size": "94397702"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:e7d217ac2ef52c746a41f8647840b2717edcd8afc15f081bc1c4505e10a189b7",
+              "size": "90684219"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:ea6631f8a5105ae90d7fc462c10ed4f9049924ea8c2f9391d90b339d5f881dac",
+              "size": "89954866"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:ecb90af9cede0982672234da0b1bd7b7f76eadde60aa5c82eefdf37d64ffe49f",
+              "size": "96354023"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:19af109fda024a3a4c989f7ccaa104f9b1b74cfd6c9363e730bb8cb9b50d5dc4",
+              "size": "101712946"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:9851c2cfa355e1fad8abfb643a1c945d27385b1851f3ae468915ea78fcbec940",
+              "size": "118610020"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:a328b3c55631846241bbe7999a309b20b797c8dc50b6e8dccf463e66a2da5fb4",
+              "size": "121846722"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:9edd1e77627688f435561922d14299f6a0021ba1f6ff67e472e1108695a69e53",
+              "size": "90569312"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:3a21a3e310e6b1e7d7bed1f3e59698a5bd29ed3a5ca79fba9265d7dd2f1e0cd2",
+              "size": "86838362"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:89313c4c1d8db1b01624f31b58bf3fbe527160569828ac4301e9daa75c52716d",
+              "size": "86187540"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:a1f165a836f175daa6fbfde4ca99cb93b377f021fbfc41f79a700bd4df965a9a",
+              "size": "92580267"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:dda3d7a43efd995d9a51d5a5741626dbf915df46078aef0b5aea7163ac82398b",
+              "size": "97807647"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:fd147592928ef2d7092ba34b01ecd776fe26ba3d7e3f9b6b215a3b46e981ee2c",
+              "size": "116464819"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:9395315c07de0b9f05c9a6616ba1f05e76ab651053f2f40479163a8e03cfa830",
+              "size": "119511910"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3eb3d68b27fa6ba5af6f88da21cb8face9be0094daaa8960793cfe570ab785ff",
+              "size": "90565318"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:aa534be24e45e06b7080a6a3bb8cd9e3cfb818f5f8bce2244d7cfb5e91336541",
+              "size": "86860292"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:f0e49ce06fe7833ff5d76961dc2dac5449d320f823bb8c05a302cf85a3a6eb04",
+              "size": "86183421"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:06de09b74652de43e5b22db3b7fc992623044baa75e9faaab68317a986715ba3",
+              "size": "92582250"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:96443f69c8569417c780ee749d91ef33cffe22153fffa30a0fbf12107d87381b",
+              "size": "97808961"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:076a4171bdc33e5ced3952efffb233d70263dfa760e636704050597a9edf61db",
+              "size": "112578260"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:c35b7998f7f503e0cb22055d1e279ae14b6b0e09bb3ff3846b17d552ece9c247",
+              "size": "115278695"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:44a0b467b9d2b759ab48b2f27aed684581f33c96e2842992781c4e045992c5b0",
+              "size": "86361217"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:fdacdb2a7bbf6293bcafda9b52463a4da8a2f3b7e1df9f83d35ff9d1efa22012",
+              "size": "84520407"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:e2024096492dfaa50fc6ac336cd8faa2e395e8cebb617753eab0b5f16d3dd0dc",
+              "size": "88375391"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:7bbc6a2b94f009cd8a3351b9c7acf7a5caa1c4d3700500ead60f84965386a61b",
+              "size": "93357296"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:e4f9fdda192abfc9807e3e7fcd6e9fea30c1a0cf3f3c5a5c961b5114fc8c9b7e",
+              "size": "105603626"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "1.22.0-97-gc752ad5-5.2.0-cn",
+          "systems": [
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip",
+              "checksum": "SHA-256:80571e5d5a63494f4fa758bb9d8fb882ba4059853a8c412a84d232dc1c1400e6",
+              "size": "125747216"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-macos-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:b1ce39a563ae359cf363fb7d8ee80cb1e5226fda83188203cff60f16f55e33ef",
+              "size": "50525386"
+            },
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:96f5f6e7611a0ed1dc47048c54c3113fc5cebffbf0ba90d8bfcd497afc7ef9f3",
+              "size": "44225380"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:8094a2c30b474e99ce64dd0ba8f310c4614eb3b3cac884a3aea0fd5f565af119",
+              "size": "45575521"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/arduino-esp32/releases/download/1.0.5-rc5/xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-97-gc752ad5-5.2.0.tar.gz",
+              "checksum": "SHA-256:d70d550f88448fa476b29fa50ef5502ab497a16ac7fa9ca24c6d0a39bb1e681e",
+              "size": "50657803"
+            }
+          ]
+        },
+        {
+          "version": "1.22.0-80-g6c4433a-5.2.0-cn",
+          "name": "xtensa-esp32-elf-gcc",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "checksum": "SHA-256:f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
+              "host": "i686-mingw32",
+              "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip",
+              "size": "125719261"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "46517409"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "44219107"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "checksum": "SHA-256:b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz",
+              "size": "45566336"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "checksum": "SHA-256:9c68c87bb23b1256dc0a1859b515946763e5292dcab4a4159a52fae5618ce861",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "xtensa-esp32-elf-linux-armel-1.22.0-87-gb57bad3-5.2.0.tar.gz",
+              "size": "50655584"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:e8d35938385447cf9c34735fee2a3b2b61cca6be07db77a45856a1c2a347e423",
+              "size": "111766903"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:569988acfc2673369f222037c64bac96990cee08cebeebc4f8860e0d984f8bd9",
+              "size": "106473247"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:6a844f16021e936cc9b87b203978356f57ab2144554f6f2a0f73ffa3d3d316c5",
+              "size": "105576049"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:743d6f03a89329bb09f9550d27fcab677f5cf06b4720793bbcef7883a932681d",
+              "size": "114870843"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:4d32d764e984f3a570aacfb2f4957619540fb4629534d969b2e83997901334c3",
+              "size": "119424029"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:dc8fa7f4933bf5cb08e83bacce6160cc9dfe93d7aad1e8f92599bb81ff5b2e28",
+              "size": "106136827"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:62bb6428d107ed3f44c212c77ecf24804b74c97327b0f0ad2029c656c6dbd6ee",
+              "size": "130847086"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8febfe4a6476efc69012390106c8c660a14418f025137b0513670c72124339cf",
+              "size": "134985117"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:4cd38d6ec31076c0aa083f62ab84ab5c33aa07fafd0af61366186e5f553aa008",
+              "size": "66457613"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:19c77bd91fefab7c8c40a6334f9b985e2d9a1c7fac6d424b692110930dd3682f",
+              "size": "67849099"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:bdcd24676ef2a65b670ca9e0a01768ece47f4dfcfb545a3307f76a054c33b522",
+              "size": "64154532"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:b26723b6ce1c35b90f204eb39e5ab06a6f80fb7895f000e16b6962e4c176ae32",
+              "size": "63448105"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:da3b5c45e4997d14269df1814c92dd7004902bb810608341bc3819c3e506fa0b",
+              "size": "69656104"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:8eb63745b44083edef7cc6fdf3b06999f576b75134bc5e8b0ef881ca439b72d7",
+              "size": "75154138"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:c758062295804b082fbd77fcd59a356f62d4e76372aaa29589cc871603309cba",
+              "size": "82338511"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:1c1e168ff8bc460a9719f3b216d3c1125d29040389786d738244838499362c74",
+              "size": "85579252"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a32451a8edc1104b83cd9971178e61826e957d7db9ad9f81798a8969fd5a954e",
+              "size": "90894048"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:2ac2c94a533a99a091d2159c678c611c712c494b5f68d97913254712047260f9",
+              "size": "87178224"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:da49afee1e2e03eaab3f492718789442d33b562800e2a892679f95b50be24d14",
+              "size": "86569314"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:36d3c4990a5feb68aa8534463bc9e8ee367fe23886f78e1d726f4411c7571462",
+              "size": "92884013"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:de9af641678c93775e932ee5ec4f478f8925cfc1ebc22e41adc4fb85430a0c35",
+              "size": "98224709"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:ccf08afe60046f87b0e81ca17dc5073eda68ab5e7522c163dd5b583d713b7b39",
+              "size": "116924759"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:37c91490b8fc75e638c23785e261eaf553be2dcd106cf6cff5b76981fa02955b",
+              "size": "119912142"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:a6e0947c92b823ca04f062522249f0a428357e0b056f1ff4c6bcabef83cf63a7",
+              "size": "90901736"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:d2e5600fc194b508bd393b236a09fd62ed70afb6c36619d4b106b696a56ca66d",
+              "size": "87176557"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:3fff4199e986dd74660f17ca27d9414cb98f1b911a7f13bb3b22e784cb1156cf",
+              "size": "86581102"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7732f9fb371d36b6b324820e300beecc33c2719921a61cf1cdb5bc625016b346",
+              "size": "92875986"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:e6dd32782fcff8f633299b97d1c671d6b6513390aca2ddbd7543c2cc62e72d7e",
+              "size": "98212907"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:41b917b35f6fbe7d30b7de91c32cf348c406acfa729a1eabc450d040dc46fbe2",
+              "size": "113022469"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:a764c1a0ee743d69f8cbfadbe4426a2c15c0e233b0894244c7cadf3b4d7dd32a",
+              "size": "115696999"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:b127baccfe6949ee7eaf3d0782ea772750a9b8e2732b16ce6bcc9dcd91f7209a",
+              "size": "86687290"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:7ca0d240f11e1c53c01a56257b0c968f876ab405142d1068d8c9b456d939554c",
+              "size": "84916701"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:9941f993ff84d1c606b45ffbeeb7bcdc5a72cf24e787bb9230390510fe3511c6",
+              "size": "88699953"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:4b55b1a9ca7fc945be6fc3513802b6cece9264bee4cbca76013569cec2695973",
+              "size": "93757895"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:c94ec1e45c81b7e4944d216bab4aa41d46849768d7761fd691661dab1a3df828",
+              "size": "106013515"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s2-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:2ff838520a5003d2768b275f5bb5ead69dd2388c3b7cd9043cb59891ba43147f",
+              "size": "112199211"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:6d79d5b14fc7129a9b8208d54e19b05dedb565f50f7a96264c9df84b06ad3be0",
+              "size": "106953064"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:e5bd03b6ad19179b015a93ada9992adc3610036ebf6aeb0835a09c9aadb50a14",
+              "size": "106026829"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:fb45943557b2d201bbb1bdc7514a1872f9bb96c2dfb48b95abdba281cc792f75",
+              "size": "115288662"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:e965236cb80e45282d16f40184af183e013b63b177bd1884736c463eac636564",
+              "size": "119711811"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:78a55eec18650b21378d97494989ffe208748e0f49bb2b2d6756b264e1863919",
+              "size": "106540817"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:1e6dac5162ab75f94b88c47ebeabb6600c652fb4f615ed07c1724d037c02fd19",
+              "size": "131273859"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s2-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:8a785cc4e0838cebe404f82c0ead7a0f9ac5fabc660a742e33a41ddac6326cc1",
+              "size": "135373049"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
+              "size": "66791095"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
+              "size": "68099473"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
+              "size": "64233211"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
+              "size": "63530586"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
+              "size": "70025439"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
+              "size": "75719772"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
+              "size": "82665716"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
+              "size": "86022563"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:59b271d014ff3915b6db1b43b610a45eea15fe5d6877d12cae8a191cc996ed37",
+              "size": "90903617"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:7051b32483e61f98606d71c98e372929428a5165df791dcd5830ed9517763152",
+              "size": "87065204"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:48c8dbbf96eec691a812327dc580042d9718fe989e60c2111ebfd692ac710081",
+              "size": "86455731"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:552dca3f4302ab7ca88a934b0391200198c9d10a4d8ac413fe604cbf8601f950",
+              "size": "92906274"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:e5af78f05d3af07617805d06ebb45ff2fe9b6aed6970a84c35eea28a5d8d5e53",
+              "size": "98553473"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:1b70163acccc5655449de1d149427a54f384156bd35816ec60c422d76d033f05",
+              "size": "116847008"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:58e58575d1938879fd51e822181e54bcb343aa846eb3fca8f616c2cde7bd0041",
+              "size": "120066269"
+            }
+          ]
+        },
+        {
+          "name": "xtensa-esp32s3-elf-gcc",
+          "version": "esp-12.2.0_20230208-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:61495ffe575e00c6998ae7274ff917658c04bded62ece0937c7042d6dcbf46de",
+              "size": "111971129"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-linux-gnu.tar.gz",
+              "checksum": "SHA-256:9008d395be46fcfe68c7de6edc850fc1595f28323a28e7922e5c085bd310cb90",
+              "size": "106616800"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-arm-linux-gnueabi.tar.gz",
+              "checksum": "SHA-256:568857bdac7dea389dffc7fbc6871b4af299150a8ecf1bf965f224d2a1655edb",
+              "size": "105700326"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-linux-gnu.tar.gz",
+              "checksum": "SHA-256:d122738bcc6c2f52d05fa89b2fb1afe6a7894cda8a07a1879aca867a31507ed0",
+              "size": "115098400"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:7defcddb98788b0991416ad2e0cb6a3b248b8030f22d5d76b8832117cc1494ca",
+              "size": "119883189"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-aarch64-apple-darwin.tar.gz",
+              "checksum": "SHA-256:b59e076f8e4b9ca99535d449f9fc4cbb443188051dce4ad934e38f16b095f8d9",
+              "size": "106464677"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip",
+              "checksum": "SHA-256:3ddf51774817e815e5d41c312a90c1159226978fb45fd0d4f7085c567f8b73ab",
+              "size": "131134034"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "archiveFileName": "xtensa-esp32s3-elf-12.2.0_20230208-x86_64-w64-mingw32.zip",
+              "checksum": "SHA-256:1d15ca65e3508388a86d8bed3048c46d07538f5bc88d3e4296f9c03152087cd1",
+              "size": "135381926"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "esp-2021r2-patch5-8.4.0-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "arm64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
+              "checksum": "SHA-256:6e03f2ab1f145be13f8890c6de77b53f52c7bffe3d9d5824549db20298f5ba91",
+              "size": "191209735"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch5-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
+              "checksum": "SHA-256:f7d73e5f9e2df3ea6ca8e2c95d6ca6d23d6b38fd101ea5d3012f3cb3cd59f39f",
+              "size": "192388486"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
+              "checksum": "SHA-256:cf520ae3a72f65b9758ea187524b105b8b7546566d738c32e60a0df9846ef1af",
+              "size": "188626914"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
+              "checksum": "SHA-256:2dc3536214caa1697f6834bb4701d05894ca55b53589fc5b54064b050ef93799",
+              "size": "188624050"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
+              "checksum": "SHA-256:165d6d53e76d79f5ade7e2b7ade54b2b495ecfda0d1184d84d6343659d0e3bdb",
+              "size": "194606113"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
+              "checksum": "SHA-256:d6d4cef216cbf28d6fbb88f3e127d4f42a376d9497c260bf8c1ad9cef440f839",
+              "size": "199411930"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
+              "checksum": "SHA-256:1e0cfcfbc8f82c441261cadd21742f66d716ec18c18bf10ed7c7d5b0bee6752f",
+              "size": "257844437"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
+              "checksum": "SHA-256:b08f568e8fe5069dd521b87da21b8e56117e5c2c3b492f73a51966a46d3379a4",
+              "size": "259712666"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-patch3-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz",
+              "checksum": "SHA-256:179cbad579790ad35e0f414a18d90017c0f158c397022411a8e9867db2174f15",
+              "size": "106843321"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-arm64.tar.gz",
+              "checksum": "SHA-256:fb339d476c79c76db8f903b265cab6bb6950d5ed954dec644445252d3378023c",
+              "size": "103277393"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-armel.tar.gz",
+              "checksum": "SHA-256:51a6296d8334b7452dba44b2b62e87afd7fd1c74bafa1aa29b1f4ab72cb9e5e0",
+              "size": "103062256"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-i686.tar.gz",
+              "checksum": "SHA-256:fef60f7ef37ffaa50416d8f244cdbd710d6729dae41ef06c4ec0e50a1f3b7dd7",
+              "size": "109460025"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-macos.tar.gz",
+              "checksum": "SHA-256:4aacc1742a76349d790b1ac8e9e9d963daefda5346dbd6741cfe8e7a35a44e4e",
+              "size": "113703959"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win32.zip",
+              "checksum": "SHA-256:eb2a442d7f551ebeb842995ec372ec4b364314ca2d7aae779399a74972f7d6bc",
+              "size": "144711970"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-win64.zip",
+              "checksum": "SHA-256:f5607e5187317d521f0474cade83f8eb590f2d165d95c3779b6ce11fbac21d1f",
+              "size": "146606480"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r2-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz",
+              "checksum": "SHA-256:812d735063da9d063b374b59f55832a96c41fbd27ddaef19000a75de8607ba21",
+              "size": "106837189"
+            },
+            {
+              "host": "aarch64-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-arm64.tar.gz",
+              "checksum": "SHA-256:712f1fbc3e08304a6f32aa18b346b16bbcb413b507b3d4c7c3211bf0d7dc4813",
+              "size": "103273444"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz",
+              "checksum": "SHA-256:80a3342cda2cd4b6b75ebb2b36d5d12fce7d375cfadadcff01ec3a907f0a16a2",
+              "size": "103058744"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-i686.tar.gz",
+              "checksum": "SHA-256:7f0162a81558ab0ed09d6c5d356def25b5cb3d5c2d61358f20152fa260ccc8ae",
+              "size": "109447789"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz",
+              "checksum": "SHA-256:3ff7e5427907cf8e271c1f959b70fb01e39625c3caf61a6567e7b38aa0c11578",
+              "size": "113672945"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win32.zip",
+              "checksum": "SHA-256:c8ff08883c1456c278fad85e1c43b7c6e251d525683214168655550e85c5b82e",
+              "size": "140809778"
+            },
+            {
+              "host": "x86_64-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2/riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r2-win64.zip",
+              "checksum": "SHA-256:6c04cb4728db928ec6473e63146b695b6dec686a0d40dd73dd3353f05247b19e",
+              "size": "142365782"
+            }
+          ]
+        },
+        {
+          "name": "riscv32-esp-elf-gcc",
+          "version": "gcc8_4_0-esp-2021r1-cn",
+          "systems": [
+            {
+              "host": "x86_64-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
+              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
+              "size": "152812483"
+            },
+            {
+              "host": "arm-linux-gnueabihf",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
+              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
+              "size": "151726623"
+            },
+            {
+              "host": "i686-pc-linux-gnu",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
+              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
+              "size": "155430963"
+            },
+            {
+              "host": "x86_64-apple-darwin",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
+              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
+              "size": "159836199"
+            },
+            {
+              "host": "i686-mingw32",
+              "url": "https://dl.espressif.cn/github_assets/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
+              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
+              "size": "191266312"
+            }
+          ]
+        },
+        {
+          "version": "2.3.1-cn",
+          "name": "esptool",
+          "systems": [
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-windows.zip",
+              "checksum": "SHA-256:c187763d0faac7da7c30a292a23c759bbc256fcd084dc8846ed284000cb0fe29",
+              "host": "i686-mingw32",
+              "archiveFileName": "esptool-2.3.1-windows.zip",
+              "size": "3396085"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-macos.tar.gz",
+              "checksum": "SHA-256:cd922418f02e0ca11dc066b36a22646a1b441da00d762b4464ca598c902c5ecb",
+              "host": "x86_64-apple-darwin",
+              "archiveFileName": "esptool-2.3.1-macos.tar.gz",
+              "size": "3810932"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "x86_64-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "i686-pc-linux-gnu",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            },
+            {
+              "url": "https://dl.espressif.cn/dl/esptool-2.3.1-linux.tar.gz",
+              "checksum": "SHA-256:cff30841dad80ed5d7d2d58a31843b63afa57528979a9c839806568167691d8e",
+              "host": "arm-linux-gnueabihf",
+              "archiveFileName": "esptool-2.3.1-linux.tar.gz",
+              "size": "39563"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/runtime-tests-results/RUNTIME_TESTS_REPORT.md b/runtime-tests-results/RUNTIME_TESTS_REPORT.md
new file mode 100644
index 00000000000..4825c3b2c5b
--- /dev/null
+++ b/runtime-tests-results/RUNTIME_TESTS_REPORT.md
@@ -0,0 +1,37 @@
+## Runtime Tests Report
+
+:white_check_mark: **The test workflows are passing.** :white_check_mark:
+
+### Validation Tests
+
+#### Hardware
+
+Test|ESP32|ESP32-C3|ESP32-C6|ESP32-H2|ESP32-P4|ESP32-S2|ESP32-S3
+-|:-:|:-:|:-:|:-:|:-:|:-:|:-:
+democfg|2/2 :white_check_mark:|-|1/1 :white_check_mark:|-|-|1/1 :white_check_mark:|1/1 :white_check_mark:
+hello_world|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:
+nvs|2/2 :white_check_mark:|2/2 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|2/2 :white_check_mark:|3/3 :white_check_mark:
+periman|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|-|1/1 :white_check_mark:|1/1 :white_check_mark:
+psram|10/10 :white_check_mark:|-|-|-|8/8 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:
+timer|3/3 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:
+touch|3/3 :white_check_mark:|-|-|-|3/3 :white_check_mark:|3/3 :white_check_mark:|3/3 :white_check_mark:
+uart|11/11 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|11/11 :white_check_mark:|10/10 :white_check_mark:
+unity|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:
+#### Wokwi
+
+Test|ESP32|ESP32-C3|ESP32-C6|ESP32-H2|ESP32-P4|ESP32-S2|ESP32-S3
+-|:-:|:-:|:-:|:-:|:-:|:-:|:-:
+gpio|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:
+hello_world|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:
+i2c_master|7/7 :white_check_mark:|7/7 :white_check_mark:|7/7 :white_check_mark:|6/6 :white_check_mark:|6/6 :white_check_mark:|7/7 :white_check_mark:|7/7 :white_check_mark:
+nvs|2/2 :white_check_mark:|2/2 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|2/2 :white_check_mark:|3/3 :white_check_mark:
+psram|10/10 :white_check_mark:|-|-|-|8/8 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:
+timer|3/3 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:|4/4 :white_check_mark:
+uart|11/11 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:|10/10 :white_check_mark:
+unity|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:|2/2 :white_check_mark:
+wifi|2/2 :white_check_mark:|1/1 :white_check_mark:|1/1 :white_check_mark:|-|-|2/2 :white_check_mark:|3/3 :white_check_mark:
+
+
+Generated on: 2025/05/17 03:09:43
+
+[Build, Hardware and QEMU run](https://github.com/espressif/arduino-esp32/actions/runs/15080719368) / [Wokwi run](https://github.com/espressif/arduino-esp32/actions/runs/15081010769)
diff --git a/runtime-tests-results/badge.svg b/runtime-tests-results/badge.svg
new file mode 100644
index 00000000000..7e6be97fbf1
--- /dev/null
+++ b/runtime-tests-results/badge.svg
@@ -0,0 +1,14 @@
+<svg width="141.3" height="20" viewBox="0 0 1413 200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Runtime Tests: passing">
+  <title>Runtime Tests: passing</title>
+  <g>
+    <rect fill="#555" width="895" height="200"/>
+    <rect fill="#3C1" x="895" width="518" height="200"/>
+  </g>
+  <g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110">
+    <text x="60" y="148" textLength="795" fill="#000" opacity="0.1">Runtime Tests</text>
+    <text x="50" y="138" textLength="795">Runtime Tests</text>
+    <text x="950" y="148" textLength="418" fill="#000" opacity="0.1">passing</text>
+    <text x="940" y="138" textLength="418">passing</text>
+  </g>
+  
+</svg>
\ No newline at end of file
diff --git a/runtime-tests-results/table_generator.py b/runtime-tests-results/table_generator.py
new file mode 100644
index 00000000000..af149ed544d
--- /dev/null
+++ b/runtime-tests-results/table_generator.py
@@ -0,0 +1,104 @@
+import json
+import sys
+import os
+from datetime import datetime
+
+SUCCESS_SYMBOL = ":white_check_mark:"
+FAILURE_SYMBOL = ":x:"
+ERROR_SYMBOL = ":fire:"
+
+# Load the JSON file passed as argument to the script
+with open(sys.argv[1], "r") as f:
+    data = json.load(f)
+    tests = sorted(data["stats"]["suite_details"], key=lambda x: x["name"])
+
+# Generate the table
+
+print("## Runtime Tests Report")
+print("")
+
+try:
+    if os.environ["IS_FAILING"] == "true":
+        print(f"{FAILURE_SYMBOL} **The test workflows are failing. Please check the run logs.** {FAILURE_SYMBOL}")
+        print("")
+    else:
+        print(f"{SUCCESS_SYMBOL} **The test workflows are passing.** {SUCCESS_SYMBOL}")
+        print("")
+except KeyError:
+    pass
+
+print("### Validation Tests")
+print("")
+
+proc_test_data = {}
+target_list = []
+
+for test in tests:
+    if test["name"].startswith("performance_"):
+        continue
+
+    _, platform, target, test_name = test["name"].split("_", 3)
+    test_name = test_name[:-1]
+
+    if target not in target_list:
+        target_list.append(target)
+
+    if platform not in proc_test_data:
+        proc_test_data[platform] = {}
+
+    if test_name not in proc_test_data[platform]:
+        proc_test_data[platform][test_name] = {}
+
+    if target not in proc_test_data[platform][test_name]:
+        proc_test_data[platform][test_name][target] = {
+            "failures": 0,
+            "total": 0,
+            "errors": 0
+        }
+
+    proc_test_data[platform][test_name][target]["total"] += test["tests"]
+    proc_test_data[platform][test_name][target]["failures"] += test["failures"]
+    proc_test_data[platform][test_name][target]["errors"] += test["errors"]
+
+target_list = sorted(target_list)
+
+for platform in proc_test_data:
+    print(f"#### {platform.capitalize()}")
+    print("")
+    print("Test", end="")
+
+    for target in target_list:
+        # Make target name uppercase and add hyfen if not esp32
+        if target != "esp32":
+            target = target.replace("esp32", "esp32-")
+
+        print(f"|{target.upper()}", end="")
+
+    print("")
+    print("-" + "|:-:" * len(target_list))
+
+    for test_name, targets in proc_test_data[platform].items():
+        print(f"{test_name}", end="")
+        for target in target_list:
+            if target in targets:
+                test_data = targets[target]
+                if test_data["errors"] > 0:
+                    print(f"|Error {ERROR_SYMBOL}", end="")
+                else:
+                    print(f"|{test_data['total']-test_data['failures']}/{test_data['total']}", end="")
+                    if test_data["failures"] > 0:
+                        print(f" {FAILURE_SYMBOL}", end="")
+                    else:
+                        print(f" {SUCCESS_SYMBOL}", end="")
+            else:
+                print("|-", end="")
+        print("")
+
+print("\n")
+print(f"Generated on: {datetime.now().strftime('%Y/%m/%d %H:%M:%S')}")
+print("")
+
+try:
+    print(f"[Build, Hardware and QEMU run](https://github.com/{os.environ['GITHUB_REPOSITORY']}/actions/runs/{os.environ['BUILD_RUN_ID']}) / [Wokwi run](https://github.com/{os.environ['GITHUB_REPOSITORY']}/actions/runs/{os.environ['WOKWI_RUN_ID']})")
+except KeyError:
+    pass
diff --git a/runtime-tests-results/unity_results.json b/runtime-tests-results/unity_results.json
new file mode 100644
index 00000000000..73cab67bab4
--- /dev/null
+++ b/runtime-tests-results/unity_results.json
@@ -0,0 +1,2717 @@
+{
+  "title": "All 50 tests pass in 2h 11m 46s",
+  "summary": "190 files  190 suites   2h 11m 46s ⏱️\n 50 tests  50 ✅ 0 💤 0 ❌\n489 runs  489 ✅ 0 💤 0 ❌\n\nResults for commit 13cd0d3c.\n",
+  "conclusion": "success",
+  "stats": {
+    "files": 190,
+    "errors": [],
+    "suites": 190,
+    "duration": 7906,
+    "suite_details": [
+      {
+        "name": "validation_wokwi_esp32c6_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_wifi1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_uart0",
+        "tests": 11,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_psramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_democfg0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_wifi1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_touch0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_democfg0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_psramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_wifi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_touch0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_i2c_master0",
+        "tests": 6,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_psram0",
+        "tests": 8,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_wifi2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_touch0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_i2c_master0",
+        "tests": 7,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_timer0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_uart0",
+        "tests": 11,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_democfg0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_touch0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_i2c_master0",
+        "tests": 7,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_uart0",
+        "tests": 11,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_wifi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_democfg1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_wifi1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_timer0",
+        "tests": 3,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s2_wifi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32_wifi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_i2c_master0",
+        "tests": 7,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_psram0",
+        "tests": 8,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_timer0",
+        "tests": 4,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_i2c_master0",
+        "tests": 6,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_i2c_master0",
+        "tests": 7,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32h2_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_democfg0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_linpack_double0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s2_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32_periman0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_psramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_gpio0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32h2_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c3_wifi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32p4_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32h2_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_nvs1",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s2_coremark0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c3_linpack_float0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_nvs0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_psram0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_i2c_master0",
+        "tests": 7,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32p4_uart0",
+        "tests": 10,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32c6_unity0",
+        "tests": 2,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_fibonacci0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32s3_nvs2",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_wokwi_esp32s3_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32s3_psramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c6_nvs3",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "validation_hardware_esp32c3_hello_world0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32c6_superpi0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      },
+      {
+        "name": "performance_hardware_esp32p4_ramspeed0",
+        "tests": 1,
+        "skipped": 0,
+        "failures": 0,
+        "errors": 0
+      }
+    ],
+    "tests": 50,
+    "tests_succ": 50,
+    "tests_skip": 0,
+    "tests_fail": 0,
+    "tests_error": 0,
+    "runs": 489,
+    "runs_succ": 489,
+    "runs_skip": 0,
+    "runs_fail": 0,
+    "runs_error": 0,
+    "commit": "13cd0d3c3fb6d6f719c55cdb671d6807874427b5"
+  },
+  "annotations": [
+    {
+      "path": ".github",
+      "start_line": 0,
+      "end_line": 0,
+      "annotation_level": "notice",
+      "message": "There are 50 tests, see \"Raw output\" for the full list of tests.",
+      "title": "50 tests found",
+      "raw_details": "auto_baudrate_test\nbasic_transmission_test\nbegin_when_running_test\nchange_baudrate_test\nchange_clock\nchange_cpu_frequency_test\nchange_pins_test\ndisabled_uart_calls_test\nenabled_uart_calls_test\nend_when_stopped_test\nperformance.coremark.test_coremark ‑ test_coremark\nperformance.fibonacci.test_fibonacci ‑ test_fibonacci\nperformance.linpack_double.test_linpack_double ‑ test_linpack_double\nperformance.linpack_float.test_linpack_float ‑ test_linpack_float\nperformance.psramspeed.test_psramspeed ‑ test_psramspeed\nperformance.ramspeed.test_ramspeed ‑ test_ramspeed\nperformance.superpi.test_superpi ‑ test_superpi\nperiman_test\npsram_found\nresize_buffers_test\nrtc_run_clock\nrtc_set_time\nscan_bus\nscan_bus_with_wifi\nswap_pins\ntest_api\ntest_calloc_success\ntest_fail\ntest_malloc_fail\ntest_malloc_success\ntest_memcpy\ntest_memset_all_ones\ntest_memset_all_zeroes\ntest_memset_alternating\ntest_memset_random\ntest_pass\ntest_realloc_success\ntest_touch_errors\ntest_touch_interrtupt\ntest_touch_read\ntimer_clock_select_test\ntimer_divider_test\ntimer_interrupt_test\ntimer_read_test\nvalidation.democfg.test_democfg ‑ test_cfg\nvalidation.gpio.test_gpio ‑ test_gpio\nvalidation.hello_world.test_hello_world ‑ test_hello_world\nvalidation.nvs.test_nvs ‑ test_nvs\nvalidation.periman.test_periman ‑ test_periman\nvalidation.wifi.test_wifi ‑ test_wifi"
+    }
+  ],
+  "check_url": "https://github.com/espressif/arduino-esp32/runs/42397580637",
+  "formatted": {
+    "stats": {
+      "files": "190",
+      "errors": [],
+      "suites": "190",
+      "duration": "7 906",
+      "suite_details": [
+        {
+          "name": "validation_wokwi_esp32c6_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_wifi1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_uart0",
+          "tests": 11,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_psramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_democfg0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_wifi1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_touch0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_democfg0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_psramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_wifi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_touch0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_i2c_master0",
+          "tests": 6,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_psram0",
+          "tests": 8,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_wifi2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_touch0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_i2c_master0",
+          "tests": 7,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_timer0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_uart0",
+          "tests": 11,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_democfg0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_touch0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_i2c_master0",
+          "tests": 7,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_uart0",
+          "tests": 11,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_wifi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_democfg1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_wifi1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_timer0",
+          "tests": 3,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s2_wifi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32_wifi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_i2c_master0",
+          "tests": 7,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_psram0",
+          "tests": 8,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_timer0",
+          "tests": 4,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_i2c_master0",
+          "tests": 6,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_i2c_master0",
+          "tests": 7,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32h2_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_democfg0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_linpack_double0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s2_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32_periman0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_psramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_gpio0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32h2_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c3_wifi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32p4_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32h2_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_nvs1",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s2_coremark0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c3_linpack_float0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_nvs0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_psram0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_i2c_master0",
+          "tests": 7,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32p4_uart0",
+          "tests": 10,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32c6_unity0",
+          "tests": 2,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_fibonacci0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32s3_nvs2",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_wokwi_esp32s3_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32s3_psramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c6_nvs3",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "validation_hardware_esp32c3_hello_world0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32c6_superpi0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        },
+        {
+          "name": "performance_hardware_esp32p4_ramspeed0",
+          "tests": 1,
+          "skipped": 0,
+          "failures": 0,
+          "errors": 0
+        }
+      ],
+      "tests": "50",
+      "tests_succ": "50",
+      "tests_skip": "0",
+      "tests_fail": "0",
+      "tests_error": "0",
+      "runs": "489",
+      "runs_succ": "489",
+      "runs_skip": "0",
+      "runs_fail": "0",
+      "runs_error": "0",
+      "commit": "13cd0d3c3fb6d6f719c55cdb671d6807874427b5"
+    }
+  }
+}
\ No newline at end of file
diff --git a/v2.x_cli_compile/cli_compile_0.json b/v2.x_cli_compile/cli_compile_0.json
new file mode 100644
index 00000000000..6f63890ad62
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_0.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 733453,
+                            "flash_percentage": 23,
+                            "ram_bytes": 46064,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "ArduinoOTA/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 753785,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44472,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 679917,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40280,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 680201,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40280,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 679985,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40280,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 899133,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 899973,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44548,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 899761,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44308,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 899565,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44212,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 905453,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 910809,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44364,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 908393,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44356,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 708858,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41008,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ArduinoOTA/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 729334,
+                            "flash_percentage": 23,
+                            "ram_bytes": 39440,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 657066,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35424,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 657346,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35424,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 657126,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35424,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 650294,
+                            "flash_percentage": 20,
+                            "ram_bytes": 36824,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 230542,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14624,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 247170,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14568,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 229042,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14568,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 202942,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14360,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 762032,
+                            "flash_percentage": 24,
+                            "ram_bytes": 40044,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ArduinoOTA/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 780802,
+                            "flash_percentage": 24,
+                            "ram_bytes": 38452,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 703804,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34468,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 704128,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34468,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 703872,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34468,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_extended_scan",
+                    "sizes": [{
+                            "flash_bytes": 973122,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38428,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_multi_advertising",
+                    "sizes": [{
+                            "flash_bytes": 974370,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38820,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_advertising",
+                    "sizes": [{
+                            "flash_bytes": 973934,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38556,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE5_periodic_sync",
+                    "sizes": [{
+                            "flash_bytes": 973470,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38444,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 978734,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38428,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "ArduinoOTA/examples/BasicOTA",
+                    "sizes": [{
+                            "flash_bytes": 785461,
+                            "flash_percentage": 24,
+                            "ram_bytes": 48732,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "ArduinoOTA/examples/OTAWebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 806125,
+                            "flash_percentage": 25,
+                            "ram_bytes": 47148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 738633,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43404,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPMulticastServer",
+                    "sizes": [{
+                            "flash_bytes": 739073,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43404,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "AsyncUDP/examples/AsyncUDPServer",
+                    "sizes": [{
+                            "flash_bytes": 738697,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43404,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_Beacon_Scanner",
+                    "sizes": [{
+                            "flash_bytes": 1137393,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39120,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1141173,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39316,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 1138433,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39208,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_client",
+                    "sizes": [{
+                            "flash_bytes": 1148561,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39168,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 1144745,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39128,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_notify",
+                    "sizes": [{
+                            "flash_bytes": 1142397,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39136,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_1.json b/v2.x_cli_compile/cli_compile_1.json
new file mode 100644
index 00000000000..517579dad21
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_1.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "BLE/examples/BLE_client",
+                    "sizes": [{
+                            "flash_bytes": 915981,
+                            "flash_percentage": 29,
+                            "ram_bytes": 44244,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 912589,
+                            "flash_percentage": 29,
+                            "ram_bytes": 44204,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_notify",
+                    "sizes": [{
+                            "flash_bytes": 910357,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44204,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_scan",
+                    "sizes": [{
+                            "flash_bytes": 902425,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server",
+                    "sizes": [{
+                            "flash_bytes": 907013,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 910385,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44204,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_uart",
+                    "sizes": [{
+                            "flash_bytes": 910673,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44204,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "BLE/examples/BLE_write",
+                    "sizes": [{
+                            "flash_bytes": 907381,
+                            "flash_percentage": 28,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 671909,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41576,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 272193,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18648,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 274157,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18584,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 270385,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18584,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 199414,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14328,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 227774,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14424,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 226870,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14608,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 245642,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14752,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 236114,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 247898,
+                            "flash_percentage": 7,
+                            "ram_bytes": 15192,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1404190,
+                            "flash_percentage": 44,
+                            "ram_bytes": 62028,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 237822,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14564,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 257362,
+                            "flash_percentage": 8,
+                            "ram_bytes": 17768,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 257498,
+                            "flash_percentage": 8,
+                            "ram_bytes": 17768,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "BLE/examples/BLE_EddystoneTLM_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 981922,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38548,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_EddystoneURL_Beacon",
+                    "sizes": [{
+                            "flash_bytes": 980790,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38540,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_client",
+                    "sizes": [{
+                            "flash_bytes": 977826,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38492,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_iBeacon",
+                    "sizes": [{
+                            "flash_bytes": 989884,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38436,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_notify",
+                    "sizes": [{
+                            "flash_bytes": 987582,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38444,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_scan",
+                    "sizes": [{
+                            "flash_bytes": 974340,
+                            "flash_percentage": 30,
+                            "ram_bytes": 38428,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server",
+                    "sizes": [{
+                            "flash_bytes": 981480,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38428,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 987584,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38444,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_uart",
+                    "sizes": [{
+                            "flash_bytes": 987888,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38444,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_write",
+                    "sizes": [{
+                            "flash_bytes": 981814,
+                            "flash_percentage": 31,
+                            "ram_bytes": 38428,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "BLE/examples/BLE_scan",
+                    "sizes": [{
+                            "flash_bytes": 1134401,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39120,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server",
+                    "sizes": [{
+                            "flash_bytes": 1138925,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39120,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_server_multiconnect",
+                    "sizes": [{
+                            "flash_bytes": 1142429,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39136,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_uart",
+                    "sizes": [{
+                            "flash_bytes": 1142721,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39128,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BLE/examples/BLE_write",
+                    "sizes": [{
+                            "flash_bytes": 1139281,
+                            "flash_percentage": 36,
+                            "ram_bytes": 39120,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/DiscoverConnect",
+                    "sizes": [{
+                            "flash_bytes": 1116957,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39920,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/GetLocalMAC",
+                    "sizes": [{
+                            "flash_bytes": 1115381,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39912,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBT",
+                    "sizes": [{
+                            "flash_bytes": 1114041,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39912,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBTM",
+                    "sizes": [{
+                            "flash_bytes": 1115189,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39928,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/SerialToSerialBT_SSP_pairing",
+                    "sizes": [{
+                            "flash_bytes": 1115057,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39896,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "BluetoothSerial/examples/bt_classic_device_discovery",
+                    "sizes": [{
+                            "flash_bytes": 1115309,
+                            "flash_percentage": 35,
+                            "ram_bytes": 39896,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_10.json b/v2.x_cli_compile/cli_compile_10.json
new file mode 100644
index 00000000000..c3b93826c99
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_10.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "USB/examples/SystemControl",
+                    "sizes": [{
+                            "flash_bytes": 292873,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30948,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 318185,
+                            "flash_percentage": 10,
+                            "ram_bytes": 39484,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "USB/examples/USBSerial",
+                    "sizes": [{
+                            "flash_bytes": 308673,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31140,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/USBVendor",
+                    "sizes": [{
+                            "flash_bytes": 313389,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31316,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 705457,
+                            "flash_percentage": 22,
+                            "ram_bytes": 42208,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 835661,
+                            "flash_percentage": 26,
+                            "ram_bytes": 42384,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 335081,
+                            "flash_percentage": 10,
+                            "ram_bytes": 19412,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 751097,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44272,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 787821,
+                            "flash_percentage": 25,
+                            "ram_bytes": 44256,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 749929,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44272,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 764649,
+                            "flash_percentage": 24,
+                            "ram_bytes": 46512,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 764677,
+                            "flash_percentage": 24,
+                            "ram_bytes": 46480,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "USB/examples/Mouse/ButtonMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 254326,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26604,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/SystemControl",
+                    "sizes": [{
+                            "flash_bytes": 254070,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26604,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/USBMSC",
+                    "sizes": [{
+                            "flash_bytes": 279870,
+                            "flash_percentage": 8,
+                            "ram_bytes": 35012,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "USB/examples/USBSerial",
+                    "sizes": [{
+                            "flash_bytes": 270362,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26668,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/USBVendor",
+                    "sizes": [{
+                            "flash_bytes": 276842,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26844,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 681082,
+                            "flash_percentage": 21,
+                            "ram_bytes": 37168,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 813902,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37520,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 309166,
+                            "flash_percentage": 9,
+                            "ram_bytes": 15236,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 727014,
+                            "flash_percentage": 23,
+                            "ram_bytes": 39232,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 763678,
+                            "flash_percentage": 24,
+                            "ram_bytes": 39240,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 792906,
+                            "flash_percentage": 25,
+                            "ram_bytes": 40492,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 792958,
+                            "flash_percentage": 25,
+                            "ram_bytes": 40476,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 790220,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37988,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1024044,
+                            "flash_percentage": 32,
+                            "ram_bytes": 43308,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 846650,
+                            "flash_percentage": 26,
+                            "ram_bytes": 38484,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 755340,
+                            "flash_percentage": 24,
+                            "ram_bytes": 36100,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1058324,
+                            "flash_percentage": 33,
+                            "ram_bytes": 41748,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 780340,
+                            "flash_percentage": 24,
+                            "ram_bytes": 38452,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 703022,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34444,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 700432,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34428,
+                            "ram_percentage": 10
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 317473,
+                            "flash_percentage": 10,
+                            "ram_bytes": 22008,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 794537,
+                            "flash_percentage": 25,
+                            "ram_bytes": 45056,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 1095117,
+                            "flash_percentage": 34,
+                            "ram_bytes": 39136,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Ticker/examples/Arguments",
+                    "sizes": [{
+                            "flash_bytes": 281621,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 255057,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21136,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 755561,
+                            "flash_percentage": 24,
+                            "ram_bytes": 44884,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 897525,
+                            "flash_percentage": 28,
+                            "ram_bytes": 45492,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 345101,
+                            "flash_percentage": 10,
+                            "ram_bytes": 22160,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 803733,
+                            "flash_percentage": 25,
+                            "ram_bytes": 47056,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 850021,
+                            "flash_percentage": 27,
+                            "ram_bytes": 47188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 802185,
+                            "flash_percentage": 25,
+                            "ram_bytes": 46948,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_11.json b/v2.x_cli_compile/cli_compile_11.json
new file mode 100644
index 00000000000..9b4528f3d20
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_11.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 752489,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44000,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1018517,
+                            "flash_percentage": 32,
+                            "ram_bytes": 48940,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 809813,
+                            "flash_percentage": 25,
+                            "ram_bytes": 44524,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 718389,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41904,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1045437,
+                            "flash_percentage": 33,
+                            "ram_bytes": 47600,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 753065,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44456,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 677473,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40256,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 674981,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40232,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 700697,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41976,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 697177,
+                            "flash_percentage": 22,
+                            "ram_bytes": 40456,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 701089,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41976,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 764693,
+                            "flash_percentage": 24,
+                            "ram_bytes": 41424,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 725518,
+                            "flash_percentage": 23,
+                            "ram_bytes": 39232,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 740446,
+                            "flash_percentage": 23,
+                            "ram_bytes": 41456,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 740502,
+                            "flash_percentage": 23,
+                            "ram_bytes": 41440,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 728090,
+                            "flash_percentage": 23,
+                            "ram_bytes": 38968,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 994962,
+                            "flash_percentage": 31,
+                            "ram_bytes": 44080,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 784970,
+                            "flash_percentage": 24,
+                            "ram_bytes": 39492,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 695826,
+                            "flash_percentage": 22,
+                            "ram_bytes": 37048,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1020510,
+                            "flash_percentage": 32,
+                            "ram_bytes": 42572,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 728630,
+                            "flash_percentage": 23,
+                            "ram_bytes": 39440,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 654638,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35384,
+                            "ram_percentage": 10
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 726770,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35956,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 725302,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34644,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 727264,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35956,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 799774,
+                            "flash_percentage": 25,
+                            "ram_bytes": 35652,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 715168,
+                            "flash_percentage": 22,
+                            "ram_bytes": 35740,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 716186,
+                            "flash_percentage": 22,
+                            "ram_bytes": 35692,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 702186,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34436,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 849896,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36332,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 703020,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34428,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 715576,
+                            "flash_percentage": 22,
+                            "ram_bytes": 35724,
+                            "ram_percentage": 10
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "WebServer/examples/HttpAdvancedAuth",
+                    "sizes": [{
+                            "flash_bytes": 817509,
+                            "flash_percentage": 25,
+                            "ram_bytes": 49180,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/HttpBasicAuth",
+                    "sizes": [{
+                            "flash_bytes": 817557,
+                            "flash_percentage": 25,
+                            "ram_bytes": 49148,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/MultiHomedServers",
+                    "sizes": [{
+                            "flash_bytes": 804797,
+                            "flash_percentage": 25,
+                            "ram_bytes": 46676,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/PathArgServer",
+                    "sizes": [{
+                            "flash_bytes": 1094305,
+                            "flash_percentage": 34,
+                            "ram_bytes": 53232,
+                            "ram_percentage": 16
+                            }]
+                    },
+{"name": "WebServer/examples/SDWebServer",
+                    "sizes": [{
+                            "flash_bytes": 864613,
+                            "flash_percentage": 27,
+                            "ram_bytes": 47492,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WebServer/examples/SimpleAuthentification",
+                    "sizes": [{
+                            "flash_bytes": 778725,
+                            "flash_percentage": 24,
+                            "ram_bytes": 45036,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WebServer/examples/UploadHugeFile",
+                    "sizes": [{
+                            "flash_bytes": 1112361,
+                            "flash_percentage": 35,
+                            "ram_bytes": 51564,
+                            "ram_percentage": 15
+                            }]
+                    },
+{"name": "WebServer/examples/WebUpdate",
+                    "sizes": [{
+                            "flash_bytes": 805493,
+                            "flash_percentage": 25,
+                            "ram_bytes": 47132,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Initiator",
+                    "sizes": [{
+                            "flash_bytes": 734717,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43364,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 733409,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43364,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 750993,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44652,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_12.json b/v2.x_cli_compile/cli_compile_12.json
new file mode 100644
index 00000000000..7a26a6e4cbc
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_12.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 687657,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41560,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 688485,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41504,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 677117,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40240,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 814697,
+                            "flash_percentage": 25,
+                            "ram_bytes": 42152,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 677545,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40232,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 687997,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41544,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 685413,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41872,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 676917,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40248,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 675849,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40240,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 676717,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40240,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 709529,
+                            "flash_percentage": 22,
+                            "ram_bytes": 40572,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 693085,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41584,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WiFi/examples/FTM/FTM_Responder",
+                    "sizes": [{
+                            "flash_bytes": 652082,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35376,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/SimpleWiFiServer",
+                    "sizes": [{
+                            "flash_bytes": 676218,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36920,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 674310,
+                            "flash_percentage": 21,
+                            "ram_bytes": 35584,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 676626,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36920,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 664838,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36688,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 665662,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36632,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 654286,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35384,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 793206,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37280,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 654690,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35376,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 665198,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36672,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 713012,
+                            "flash_percentage": 22,
+                            "ram_bytes": 36044,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 702622,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34444,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 701748,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34428,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 702242,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34428,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 879906,
+                            "flash_percentage": 27,
+                            "ram_bytes": 35428,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 719826,
+                            "flash_percentage": 22,
+                            "ram_bytes": 35764,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 709610,
+                            "flash_percentage": 22,
+                            "ram_bytes": 36060,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 839004,
+                            "flash_percentage": 26,
+                            "ram_bytes": 36676,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 839094,
+                            "flash_percentage": 26,
+                            "ram_bytes": 36684,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 840196,
+                            "flash_percentage": 26,
+                            "ram_bytes": 36676,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "WiFi/examples/WPS",
+                    "sizes": [{
+                            "flash_bytes": 756549,
+                            "flash_percentage": 24,
+                            "ram_bytes": 43572,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiAccessPoint",
+                    "sizes": [{
+                            "flash_bytes": 751401,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44652,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiBlueToothSwitch",
+                    "sizes": [{
+                            "flash_bytes": 906021,
+                            "flash_percentage": 28,
+                            "ram_bytes": 47400,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClient",
+                    "sizes": [{
+                            "flash_bytes": 747085,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44668,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientBasic",
+                    "sizes": [{
+                            "flash_bytes": 748045,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientConnect",
+                    "sizes": [{
+                            "flash_bytes": 735465,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43372,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 878801,
+                            "flash_percentage": 27,
+                            "ram_bytes": 45292,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientEvents",
+                    "sizes": [{
+                            "flash_bytes": 736073,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43364,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiClientStaticIP",
+                    "sizes": [{
+                            "flash_bytes": 747517,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44660,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 744733,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44972,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 735481,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43364,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_13.json b/v2.x_cli_compile/cli_compile_13.json
new file mode 100644
index 00000000000..8dd562a7833
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_13.json
@@ -0,0 +1,318 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 683305,
+                            "flash_percentage": 21,
+                            "ram_bytes": 41888,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 814525,
+                            "flash_percentage": 25,
+                            "ram_bytes": 42504,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 814637,
+                            "flash_percentage": 25,
+                            "ram_bytes": 42512,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 815737,
+                            "flash_percentage": 25,
+                            "ram_bytes": 42504,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 851277,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42936,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 855233,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42496,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1320897,
+                            "flash_percentage": 41,
+                            "ram_bytes": 61324,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 278529,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18944,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 276833,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18880,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 271601,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18880,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WiFi/examples/WiFiIPv6",
+                    "sizes": [{
+                            "flash_bytes": 662542,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36984,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiMulti",
+                    "sizes": [{
+                            "flash_bytes": 654030,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35376,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 652950,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35368,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 653582,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35368,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 686330,
+                            "flash_percentage": 21,
+                            "ram_bytes": 35676,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 670310,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36728,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 660422,
+                            "flash_percentage": 20,
+                            "ram_bytes": 37000,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 793202,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37632,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 793294,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37640,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 794398,
+                            "flash_percentage": 25,
+                            "ram_bytes": 37632,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "WiFiClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 876754,
+                            "flash_percentage": 27,
+                            "ram_bytes": 37020,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 877266,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36676,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1444508,
+                            "flash_percentage": 45,
+                            "ram_bytes": 55620,
+                            "ram_percentage": 16
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 257648,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13988,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 255672,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13924,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 250308,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13916,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "WiFi/examples/WiFiScan",
+                    "sizes": [{
+                            "flash_bytes": 734289,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43348,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiScanDualAntenna",
+                    "sizes": [{
+                            "flash_bytes": 735285,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43348,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiSmartConfig",
+                    "sizes": [{
+                            "flash_bytes": 770425,
+                            "flash_percentage": 24,
+                            "ram_bytes": 43664,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiTelnetToSerial",
+                    "sizes": [{
+                            "flash_bytes": 753097,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44708,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFi/examples/WiFiUDPClient",
+                    "sizes": [{
+                            "flash_bytes": 742617,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44988,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientInsecure",
+                    "sizes": [{
+                            "flash_bytes": 877873,
+                            "flash_percentage": 27,
+                            "ram_bytes": 45612,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientPSK",
+                    "sizes": [{
+                            "flash_bytes": 877989,
+                            "flash_percentage": 27,
+                            "ram_bytes": 45620,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecure",
+                    "sizes": [{
+                            "flash_bytes": 879085,
+                            "flash_percentage": 27,
+                            "ram_bytes": 45612,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 915593,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46084,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 920025,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46624,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 1585685,
+                            "flash_percentage": 50,
+                            "ram_bytes": 56432,
+                            "ram_percentage": 17
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_14.json b/v2.x_cli_compile/cli_compile_14.json
new file mode 100644
index 00000000000..22a3b4bc22d
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_14.json
@@ -0,0 +1,84 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "WiFiClientSecure/examples/WiFiClientSecureEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 829754,
+                            "flash_percentage": 26,
+                            "ram_bytes": 38064,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiClientSecure/examples/WiFiClientShowPeerCredentials",
+                    "sizes": [{
+                            "flash_bytes": 833762,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37624,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WiFiProv/examples/WiFiProv",
+                    "sizes": [{
+                            "flash_bytes": 764982,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35452,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 250942,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14920,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 249274,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14856,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 244174,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14848,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "Wire/examples/WireMaster",
+                    "sizes": [{
+                            "flash_bytes": 295169,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21872,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Wire/examples/WireScan",
+                    "sizes": [{
+                            "flash_bytes": 293413,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21800,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Wire/examples/WireSlave",
+                    "sizes": [{
+                            "flash_bytes": 287861,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21800,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_2.json b/v2.x_cli_compile/cli_compile_2.json
new file mode 100644
index 00000000000..04770dd8d9a
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_2.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 242345,
+                            "flash_percentage": 7,
+                            "ram_bytes": 18264,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 238709,
+                            "flash_percentage": 7,
+                            "ram_bytes": 18248,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 253901,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18344,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 268637,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18632,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 273853,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18920,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 263089,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18544,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 291357,
+                            "flash_percentage": 9,
+                            "ram_bytes": 19376,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 2967053,
+                            "flash_percentage": 94,
+                            "ram_bytes": 71596,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 264625,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18580,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 278557,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19492,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 278701,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19492,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 284889,
+                            "flash_percentage": 9,
+                            "ram_bytes": 19772,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 263422,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18056,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Master",
+                    "sizes": [{
+                            "flash_bytes": 688810,
+                            "flash_percentage": 21,
+                            "ram_bytes": 35496,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Slave",
+                    "sizes": [{
+                            "flash_bytes": 656806,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35436,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Master",
+                    "sizes": [{
+                            "flash_bytes": 688094,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36184,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Slave",
+                    "sizes": [{
+                            "flash_bytes": 656914,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35436,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 253062,
+                            "flash_percentage": 8,
+                            "ram_bytes": 15024,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 237138,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14536,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 236906,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 236258,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 209654,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14544,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 698876,
+                            "flash_percentage": 22,
+                            "ram_bytes": 35876,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 264286,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13900,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 266024,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13836,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 245826,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13724,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 224888,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13492,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 221018,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13476,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 227380,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13532,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 249166,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13748,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 248742,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13836,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 243042,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13692,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "BluetoothSerial/examples/bt_remove_paired_devices",
+                    "sizes": [{
+                            "flash_bytes": 1090293,
+                            "flash_percentage": 34,
+                            "ram_bytes": 39168,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "DNSServer/examples/CaptivePortal",
+                    "sizes": [{
+                            "flash_bytes": 728341,
+                            "flash_percentage": 23,
+                            "ram_bytes": 44668,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_class",
+                    "sizes": [{
+                            "flash_bytes": 288981,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21568,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_extra",
+                    "sizes": [{
+                            "flash_bytes": 291089,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21512,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "EEPROM/examples/eeprom_write",
+                    "sizes": [{
+                            "flash_bytes": 287469,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21620,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/LEDCSoftwareFade",
+                    "sizes": [{
+                            "flash_bytes": 256305,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21216,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/SigmaDelta",
+                    "sizes": [{
+                            "flash_bytes": 252253,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21152,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcFrequency",
+                    "sizes": [{
+                            "flash_bytes": 267993,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21288,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogOut/ledcWrite_RGB",
+                    "sizes": [{
+                            "flash_bytes": 285697,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21584,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/AnalogRead",
+                    "sizes": [{
+                            "flash_bytes": 288073,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ArduinoStackSize",
+                    "sizes": [{
+                            "flash_bytes": 279625,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21472,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_3.json b/v2.x_cli_compile/cli_compile_3.json
new file mode 100644
index 00000000000..cf0a1d57d8b
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_3.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Master",
+                    "sizes": [{
+                            "flash_bytes": 712225,
+                            "flash_percentage": 22,
+                            "ram_bytes": 40360,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Slave",
+                    "sizes": [{
+                            "flash_bytes": 679693,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40308,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Master",
+                    "sizes": [{
+                            "flash_bytes": 711545,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41048,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Slave",
+                    "sizes": [{
+                            "flash_bytes": 679805,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40308,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 281305,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19376,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 263821,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18576,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 263877,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18552,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 263329,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18552,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 250625,
+                            "flash_percentage": 7,
+                            "ram_bytes": 18640,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 268089,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19176,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 266585,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19168,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 267241,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19176,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 240978,
+                            "flash_percentage": 7,
+                            "ram_bytes": 15120,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 239498,
+                            "flash_percentage": 7,
+                            "ram_bytes": 15128,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 240150,
+                            "flash_percentage": 7,
+                            "ram_bytes": 15128,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 243746,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14824,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 245994,
+                            "flash_percentage": 7,
+                            "ram_bytes": 16832,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 244178,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14888,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWriteNeoPixel",
+                    "sizes": [{
+                            "flash_bytes": 243694,
+                            "flash_percentage": 7,
+                            "ram_bytes": 17872,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 257594,
+                            "flash_percentage": 8,
+                            "ram_bytes": 17768,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 238886,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14568,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 237706,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14536,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 268090,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14212,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 243722,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13728,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 257176,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14720,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Master",
+                    "sizes": [{
+                            "flash_bytes": 736754,
+                            "flash_percentage": 23,
+                            "ram_bytes": 34548,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Slave",
+                    "sizes": [{
+                            "flash_bytes": 703450,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34500,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Master",
+                    "sizes": [{
+                            "flash_bytes": 735584,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35244,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Slave",
+                    "sizes": [{
+                            "flash_bytes": 703750,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34500,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 255990,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14060,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 243776,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13708,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 243862,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13692,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/CI/CIBoardsTest",
+                    "sizes": [{
+                            "flash_bytes": 298857,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21880,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Camera/CameraWebServer",
+                    "sizes": [{
+                            "flash_bytes": 1517793,
+                            "flash_percentage": 48,
+                            "ram_bytes": 71228,
+                            "ram_percentage": 21
+                            }]
+                    },
+{"name": "ESP32/examples/ChipID/GetChipID",
+                    "sizes": [{
+                            "flash_bytes": 281809,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21516,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/ExternalWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 296449,
+                            "flash_percentage": 9,
+                            "ram_bytes": 22792,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/SmoothBlink_ULP_Code",
+                    "sizes": [{
+                            "flash_bytes": 299281,
+                            "flash_percentage": 9,
+                            "ram_bytes": 22792,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TimerWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 296425,
+                            "flash_percentage": 9,
+                            "ram_bytes": 22792,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/DeepSleep/TouchWakeUp",
+                    "sizes": [{
+                            "flash_bytes": 305029,
+                            "flash_percentage": 9,
+                            "ram_bytes": 23304,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Master",
+                    "sizes": [{
+                            "flash_bytes": 772993,
+                            "flash_percentage": 24,
+                            "ram_bytes": 43484,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_Basic_Slave",
+                    "sizes": [{
+                            "flash_bytes": 738261,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43424,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Master",
+                    "sizes": [{
+                            "flash_bytes": 772257,
+                            "flash_percentage": 24,
+                            "ram_bytes": 44172,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESP32/examples/ESPNow/ESPNow_MultiSlave_Slave",
+                    "sizes": [{
+                            "flash_bytes": 738353,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43424,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_4.json b/v2.x_cli_compile/cli_compile_4.json
new file mode 100644
index 00000000000..5124bd62660
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_4.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 235717,
+                            "flash_percentage": 7,
+                            "ram_bytes": 18168,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 272793,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19040,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 275249,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21048,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 273217,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19088,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWriteNeoPixel",
+                    "sizes": [{
+                            "flash_bytes": 272317,
+                            "flash_percentage": 8,
+                            "ram_bytes": 22072,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 278781,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19484,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 265845,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18584,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 264661,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18552,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 264013,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18544,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 263857,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18560,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 263973,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18576,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 264465,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18544,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 237062,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 236878,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 236886,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14536,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 237802,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14528,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 242086,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14552,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 242598,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14560,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 196166,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14248,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 678354,
+                            "flash_percentage": 21,
+                            "ram_bytes": 36784,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 228974,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14592,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 228606,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14576,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 243220,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13692,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 232886,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13684,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 246928,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13980,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 246388,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13972,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 247024,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13980,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/HWCDC_Events",
+                    "sizes": [{
+                            "flash_bytes": 261638,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14076,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 252396,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13972,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 255006,
+                            "flash_percentage": 8,
+                            "ram_bytes": 15988,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 252918,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14020,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWriteNeoPixel",
+                    "sizes": [{
+                            "flash_bytes": 251926,
+                            "flash_percentage": 8,
+                            "ram_bytes": 17012,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/FreeRTOS/BasicMultiThreading",
+                    "sizes": [{
+                            "flash_bytes": 286609,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Mutex",
+                    "sizes": [{
+                            "flash_bytes": 280717,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21588,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Queue",
+                    "sizes": [{
+                            "flash_bytes": 280429,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/FreeRTOS/Semaphore",
+                    "sizes": [{
+                            "flash_bytes": 279865,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/BlinkRGB",
+                    "sizes": [{
+                            "flash_bytes": 248525,
+                            "flash_percentage": 7,
+                            "ram_bytes": 21040,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 284697,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/FunctionalInterruptStruct",
+                    "sizes": [{
+                            "flash_bytes": 283161,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21968,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/GPIO/GPIOInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 283833,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/HallSensor",
+                    "sizes": [{
+                            "flash_bytes": 284369,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21480,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/I2S/HiFreq_ADC",
+                    "sizes": [{
+                            "flash_bytes": 303785,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21616,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTCallback",
+                    "sizes": [{
+                            "flash_bytes": 287729,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_5.json b/v2.x_cli_compile/cli_compile_5.json
new file mode 100644
index 00000000000..65fa35be282
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_5.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 269105,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18576,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 269429,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18584,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 235717,
+                            "flash_percentage": 7,
+                            "ram_bytes": 18168,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 701753,
+                            "flash_percentage": 22,
+                            "ram_bytes": 41640,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 270801,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18624,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 270381,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18600,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchButtonV2",
+                    "sizes": [{
+                            "flash_bytes": 268945,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18856,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 268845,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18856,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 269041,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18832,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 700313,
+                            "flash_percentage": 22,
+                            "ram_bytes": 42152,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 716257,
+                            "flash_percentage": 22,
+                            "ram_bytes": 43440,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 318437,
+                            "flash_percentage": 10,
+                            "ram_bytes": 19292,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "ESP32/examples/Touch/TouchButtonV2",
+                    "sizes": [{
+                            "flash_bytes": 227110,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14824,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 227010,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14824,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 227170,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14816,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 677466,
+                            "flash_percentage": 21,
+                            "ram_bytes": 37304,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 693046,
+                            "flash_percentage": 22,
+                            "ram_bytes": 38592,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 291278,
+                            "flash_percentage": 9,
+                            "ram_bytes": 15268,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 714470,
+                            "flash_percentage": 22,
+                            "ram_bytes": 36908,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 831282,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37656,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 831274,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37656,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 836662,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37688,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 257350,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14720,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 246020,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13724,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 244732,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13700,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 244158,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13692,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 243942,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13700,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 244150,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13708,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 244458,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13692,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 248880,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13700,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 249204,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13700,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 217764,
+                            "flash_percentage": 6,
+                            "ram_bytes": 13412,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/RMT/RMTLoopback",
+                    "sizes": [{
+                            "flash_bytes": 290085,
+                            "flash_percentage": 9,
+                            "ram_bytes": 23984,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTReadXJT",
+                    "sizes": [{
+                            "flash_bytes": 288193,
+                            "flash_percentage": 9,
+                            "ram_bytes": 22024,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/RMT/RMTWriteNeoPixel",
+                    "sizes": [{
+                            "flash_bytes": 287549,
+                            "flash_percentage": 9,
+                            "ram_bytes": 25024,
+                            "ram_percentage": 7
+                            }]
+                    },
+{"name": "ESP32/examples/ResetReason",
+                    "sizes": [{
+                            "flash_bytes": 296533,
+                            "flash_percentage": 9,
+                            "ram_bytes": 22792,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceiveError_BREAK_Demo",
+                    "sizes": [{
+                            "flash_bytes": 282477,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/OnReceive_Demo",
+                    "sizes": [{
+                            "flash_bytes": 281269,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21480,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxFIFOFull_Demo",
+                    "sizes": [{
+                            "flash_bytes": 280581,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/RxTimeout_Demo",
+                    "sizes": [{
+                            "flash_bytes": 280401,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21472,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_All_CPU_Freqs",
+                    "sizes": [{
+                            "flash_bytes": 280413,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21488,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Serial/Serial_STD_Func_OnReceive",
+                    "sizes": [{
+                            "flash_bytes": 281417,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21580,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/TWAI/TWAIreceive",
+                    "sizes": [{
+                            "flash_bytes": 286217,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21520,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_6.json b/v2.x_cli_compile/cli_compile_6.json
new file mode 100644
index 00000000000..9bb544916aa
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_6.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 737869,
+                            "flash_percentage": 23,
+                            "ram_bytes": 41764,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 852737,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42512,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 852737,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42512,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 858141,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42560,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 886677,
+                            "flash_percentage": 28,
+                            "ram_bytes": 42936,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 851773,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42704,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 851605,
+                            "flash_percentage": 27,
+                            "ram_bytes": 42512,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 757517,
+                            "flash_percentage": 24,
+                            "ram_bytes": 42380,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 756841,
+                            "flash_percentage": 24,
+                            "ram_bytes": 42380,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 880541,
+                            "flash_percentage": 27,
+                            "ram_bytes": 43324,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 768921,
+                            "flash_percentage": 24,
+                            "ram_bytes": 44544,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "I2S/examples/ADCPlotter",
+                    "sizes": [{
+                            "flash_bytes": 282029,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18712,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 864882,
+                            "flash_percentage": 27,
+                            "ram_bytes": 38080,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 830258,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37848,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 830106,
+                            "flash_percentage": 26,
+                            "ram_bytes": 37656,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 731334,
+                            "flash_percentage": 23,
+                            "ram_bytes": 37312,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 730674,
+                            "flash_percentage": 23,
+                            "ram_bytes": 37312,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 856254,
+                            "flash_percentage": 27,
+                            "ram_bytes": 38264,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 744978,
+                            "flash_percentage": 23,
+                            "ram_bytes": 39520,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "I2S/examples/ADCPlotter",
+                    "sizes": [{
+                            "flash_bytes": 237090,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14672,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "I2S/examples/FullDuplex",
+                    "sizes": [{
+                            "flash_bytes": 237122,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14672,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "I2S/examples/InputSerialPlotter",
+                    "sizes": [{
+                            "flash_bytes": 237098,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14672,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 726508,
+                            "flash_percentage": 23,
+                            "ram_bytes": 35828,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 250806,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13724,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 250408,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13708,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 728660,
+                            "flash_percentage": 23,
+                            "ram_bytes": 36348,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 746362,
+                            "flash_percentage": 23,
+                            "ram_bytes": 37628,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 300304,
+                            "flash_percentage": 9,
+                            "ram_bytes": 14436,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 764694,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35948,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 875318,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36700,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 875310,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36700,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 881022,
+                            "flash_percentage": 28,
+                            "ram_bytes": 36740,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "ESP32/examples/TWAI/TWAItransmit",
+                    "sizes": [{
+                            "flash_bytes": 286477,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21520,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Template/ExampleTemplate",
+                    "sizes": [{
+                            "flash_bytes": 248525,
+                            "flash_percentage": 7,
+                            "ram_bytes": 21040,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Time/SimpleTime",
+                    "sizes": [{
+                            "flash_bytes": 761717,
+                            "flash_percentage": 24,
+                            "ram_bytes": 45916,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/RepeatTimer",
+                    "sizes": [{
+                            "flash_bytes": 287233,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21536,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Timer/WatchdogTimer",
+                    "sizes": [{
+                            "flash_bytes": 286809,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21504,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchButton",
+                    "sizes": [{
+                            "flash_bytes": 288249,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchInterrupt",
+                    "sizes": [{
+                            "flash_bytes": 287429,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESP32/examples/Touch/TouchRead",
+                    "sizes": [{
+                            "flash_bytes": 287521,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21976,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS-SD_Extended",
+                    "sizes": [{
+                            "flash_bytes": 760809,
+                            "flash_percentage": 24,
+                            "ram_bytes": 45276,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "ESPmDNS/examples/mDNS_Web_Server",
+                    "sizes": [{
+                            "flash_bytes": 777689,
+                            "flash_percentage": 24,
+                            "ram_bytes": 46564,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Ethernet/examples/ETH_LAN8720",
+                    "sizes": [{
+                            "flash_bytes": 783325,
+                            "flash_percentage": 24,
+                            "ram_bytes": 44644,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_7.json b/v2.x_cli_compile/cli_compile_7.json
new file mode 100644
index 00000000000..fd7e182c50f
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_7.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "I2S/examples/FullDuplex",
+                    "sizes": [{
+                            "flash_bytes": 282061,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18720,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "I2S/examples/InputSerialPlotter",
+                    "sizes": [{
+                            "flash_bytes": 282037,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18712,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "I2S/examples/SimpleTone",
+                    "sizes": [{
+                            "flash_bytes": 282009,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18720,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 852253,
+                            "flash_percentage": 27,
+                            "ram_bytes": 44088,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 851725,
+                            "flash_percentage": 27,
+                            "ram_bytes": 43968,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 304769,
+                            "flash_percentage": 9,
+                            "ram_bytes": 19096,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 738317,
+                            "flash_percentage": 23,
+                            "ram_bytes": 41680,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 680053,
+                            "flash_percentage": 21,
+                            "ram_bytes": 40296,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 270653,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18568,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 271357,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18576,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1668329,
+                            "flash_percentage": 53,
+                            "ram_bytes": 66484,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1655465,
+                            "flash_percentage": 52,
+                            "ram_bytes": 66596,
+                            "ram_percentage": 20
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "I2S/examples/SimpleTone",
+                    "sizes": [{
+                            "flash_bytes": 237074,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14680,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 830682,
+                            "flash_percentage": 26,
+                            "ram_bytes": 39216,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 830158,
+                            "flash_percentage": 26,
+                            "ram_bytes": 39096,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 278218,
+                            "flash_percentage": 8,
+                            "ram_bytes": 15072,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 715518,
+                            "flash_percentage": 22,
+                            "ram_bytes": 36824,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 657194,
+                            "flash_percentage": 20,
+                            "ram_bytes": 35440,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 243678,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14552,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 244394,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14552,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1109890,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40412,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1097046,
+                            "flash_percentage": 34,
+                            "ram_bytes": 40536,
+                            "ram_percentage": 12
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 909746,
+                            "flash_percentage": 28,
+                            "ram_bytes": 37044,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 874404,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36892,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 874028,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36700,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 771178,
+                            "flash_percentage": 24,
+                            "ram_bytes": 36324,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 770794,
+                            "flash_percentage": 24,
+                            "ram_bytes": 36324,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 901396,
+                            "flash_percentage": 28,
+                            "ram_bytes": 37284,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 796606,
+                            "flash_percentage": 25,
+                            "ram_bytes": 38540,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 890348,
+                            "flash_percentage": 28,
+                            "ram_bytes": 38260,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 889830,
+                            "flash_percentage": 28,
+                            "ram_bytes": 38148,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 289886,
+                            "flash_percentage": 9,
+                            "ram_bytes": 14236,
+                            "ram_percentage": 4
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "Ethernet/examples/ETH_TLK110",
+                    "sizes": [{
+                            "flash_bytes": 783329,
+                            "flash_percentage": 24,
+                            "ram_bytes": 44644,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "FFat/examples/FFat_Test",
+                    "sizes": [{
+                            "flash_bytes": 337917,
+                            "flash_percentage": 10,
+                            "ram_bytes": 22480,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "FFat/examples/FFat_time",
+                    "sizes": [{
+                            "flash_bytes": 799617,
+                            "flash_percentage": 25,
+                            "ram_bytes": 45252,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "HTTPClient/examples/Authorization",
+                    "sizes": [{
+                            "flash_bytes": 917653,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46648,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 917637,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46648,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/BasicHttpsClient",
+                    "sizes": [{
+                            "flash_bytes": 923193,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46848,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/HTTPClientEnterprise",
+                    "sizes": [{
+                            "flash_bytes": 952337,
+                            "flash_percentage": 30,
+                            "ram_bytes": 47088,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/ReuseConnection",
+                    "sizes": [{
+                            "flash_bytes": 916593,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46840,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPClient/examples/StreamHttpClient",
+                    "sizes": [{
+                            "flash_bytes": 916417,
+                            "flash_percentage": 29,
+                            "ram_bytes": 46648,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdate",
+                    "sizes": [{
+                            "flash_bytes": 808953,
+                            "flash_percentage": 25,
+                            "ram_bytes": 46060,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdate/examples/httpUpdateSPIFFS",
+                    "sizes": [{
+                            "flash_bytes": 808257,
+                            "flash_percentage": 25,
+                            "ram_bytes": 46060,
+                            "ram_percentage": 14
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_8.json b/v2.x_cli_compile/cli_compile_8.json
new file mode 100644
index 00000000000..a18568cffcb
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_8.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1671221,
+                            "flash_percentage": 53,
+                            "ram_bytes": 67084,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1678461,
+                            "flash_percentage": 53,
+                            "ram_bytes": 66516,
+                            "ram_percentage": 20
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 332685,
+                            "flash_percentage": 10,
+                            "ram_bytes": 19732,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 752357,
+                            "flash_percentage": 23,
+                            "ram_bytes": 42188,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_Test",
+                    "sizes": [{
+                            "flash_bytes": 346101,
+                            "flash_percentage": 11,
+                            "ram_bytes": 19612,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_time",
+                    "sizes": [{
+                            "flash_bytes": 768401,
+                            "flash_percentage": 24,
+                            "ram_bytes": 42112,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 258209,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18712,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 298757,
+                            "flash_percentage": 9,
+                            "ram_bytes": 19088,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 732945,
+                            "flash_percentage": 23,
+                            "ram_bytes": 41664,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SimpleBLE/examples/SimpleBleDevice",
+                    "sizes": [{
+                            "flash_bytes": 863333,
+                            "flash_percentage": 27,
+                            "ram_bytes": 44188,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "Ticker/examples/Arguments",
+                    "sizes": [{
+                            "flash_bytes": 275141,
+                            "flash_percentage": 8,
+                            "ram_bytes": 19024,
+                            "ram_percentage": 5
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 254001,
+                            "flash_percentage": 8,
+                            "ram_bytes": 18656,
+                            "ram_percentage": 5
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1112582,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40996,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1119890,
+                            "flash_percentage": 35,
+                            "ram_bytes": 40452,
+                            "ram_percentage": 12
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 303722,
+                            "flash_percentage": 9,
+                            "ram_bytes": 15540,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 727066,
+                            "flash_percentage": 23,
+                            "ram_bytes": 37164,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 216082,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14632,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 272610,
+                            "flash_percentage": 8,
+                            "ram_bytes": 15064,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 710170,
+                            "flash_percentage": 22,
+                            "ram_bytes": 36816,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Ticker/examples/Arguments",
+                    "sizes": [{
+                            "flash_bytes": 246510,
+                            "flash_percentage": 7,
+                            "ram_bytes": 14824,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 212970,
+                            "flash_percentage": 6,
+                            "ram_bytes": 14568,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "USB/examples/CompositeDevice",
+                    "sizes": [{
+                            "flash_bytes": 314226,
+                            "flash_percentage": 9,
+                            "ram_bytes": 27244,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 767682,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35852,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 705940,
+                            "flash_percentage": 22,
+                            "ram_bytes": 34484,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 245088,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13716,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 249070,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13716,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1797460,
+                            "flash_percentage": 57,
+                            "ram_bytes": 59012,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1783272,
+                            "flash_percentage": 56,
+                            "ram_bytes": 59076,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1799672,
+                            "flash_percentage": 57,
+                            "ram_bytes": 59284,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1822800,
+                            "flash_percentage": 57,
+                            "ram_bytes": 60604,
+                            "ram_percentage": 18
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 311602,
+                            "flash_percentage": 9,
+                            "ram_bytes": 14660,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 776168,
+                            "flash_percentage": 24,
+                            "ram_bytes": 36172,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "HTTPUpdate/examples/httpUpdateSecure",
+                    "sizes": [{
+                            "flash_bytes": 936209,
+                            "flash_percentage": 29,
+                            "ram_bytes": 47180,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "HTTPUpdateServer/examples/WebUpdater",
+                    "sizes": [{
+                            "flash_bytes": 821853,
+                            "flash_percentage": 26,
+                            "ram_bytes": 47220,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "I2S/examples/ADCPlotter",
+                    "sizes": [{
+                            "flash_bytes": 304429,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "I2S/examples/FullDuplex",
+                    "sizes": [{
+                            "flash_bytes": 304441,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "I2S/examples/InputSerialPlotter",
+                    "sizes": [{
+                            "flash_bytes": 304437,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21648,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "I2S/examples/SimpleTone",
+                    "sizes": [{
+                            "flash_bytes": 304417,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21656,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Insights/examples/DiagnosticsSmokeTest",
+                    "sizes": [{
+                            "flash_bytes": 915669,
+                            "flash_percentage": 29,
+                            "ram_bytes": 47188,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "Insights/examples/MinimalDiagnostics",
+                    "sizes": [{
+                            "flash_bytes": 915121,
+                            "flash_percentage": 29,
+                            "ram_bytes": 47068,
+                            "ram_percentage": 14
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_test",
+                    "sizes": [{
+                            "flash_bytes": 323293,
+                            "flash_percentage": 10,
+                            "ram_bytes": 22016,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "LittleFS/examples/LITTLEFS_time",
+                    "sizes": [{
+                            "flash_bytes": 799829,
+                            "flash_percentage": 25,
+                            "ram_bytes": 45072,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "NetBIOS/examples/ESP_NBNST",
+                    "sizes": [{
+                            "flash_bytes": 738973,
+                            "flash_percentage": 23,
+                            "ram_bytes": 43420,
+                            "ram_percentage": 13
+                            }]
+                    }
+]
+}
+]}
diff --git a/v2.x_cli_compile/cli_compile_9.json b/v2.x_cli_compile/cli_compile_9.json
new file mode 100644
index 00000000000..556236bb7f0
--- /dev/null
+++ b/v2.x_cli_compile/cli_compile_9.json
@@ -0,0 +1,366 @@
+{"boards": [
+{ "board": "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app",
+                "target": "esp32s3",
+                "sketches": [
+{"name": "USB/examples/CompositeDevice",
+                    "sizes": [{
+                            "flash_bytes": 352577,
+                            "flash_percentage": 11,
+                            "ram_bytes": 31724,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/ConsumerControl",
+                    "sizes": [{
+                            "flash_bytes": 292873,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30948,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/CustomHIDDevice",
+                    "sizes": [{
+                            "flash_bytes": 310913,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31300,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/FirmwareMSC",
+                    "sizes": [{
+                            "flash_bytes": 340761,
+                            "flash_percentage": 10,
+                            "ram_bytes": 31356,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Gamepad",
+                    "sizes": [{
+                            "flash_bytes": 311237,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31308,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/HIDVendor",
+                    "sizes": [{
+                            "flash_bytes": 313353,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31380,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardLogout",
+                    "sizes": [{
+                            "flash_bytes": 293909,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30964,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardMessage",
+                    "sizes": [{
+                            "flash_bytes": 294045,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30964,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardReprogram",
+                    "sizes": [{
+                            "flash_bytes": 294249,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30964,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardSerial",
+                    "sizes": [{
+                            "flash_bytes": 311161,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31308,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/KeyboardAndMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 311761,
+                            "flash_percentage": 9,
+                            "ram_bytes": 31316,
+                            "ram_percentage": 9
+                            }]
+                    },
+{"name": "USB/examples/Mouse/ButtonMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 293133,
+                            "flash_percentage": 9,
+                            "ram_bytes": 30948,
+                            "ram_percentage": 9
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32s2",
+                "sketches": [
+{"name": "USB/examples/ConsumerControl",
+                    "sizes": [{
+                            "flash_bytes": 254062,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26604,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/CustomHIDDevice",
+                    "sizes": [{
+                            "flash_bytes": 274350,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26820,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/FirmwareMSC",
+                    "sizes": [{
+                            "flash_bytes": 302338,
+                            "flash_percentage": 9,
+                            "ram_bytes": 26868,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/Gamepad",
+                    "sizes": [{
+                            "flash_bytes": 274690,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26836,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/HIDVendor",
+                    "sizes": [{
+                            "flash_bytes": 276810,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26916,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardLogout",
+                    "sizes": [{
+                            "flash_bytes": 255094,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26620,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardMessage",
+                    "sizes": [{
+                            "flash_bytes": 255230,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26620,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardReprogram",
+                    "sizes": [{
+                            "flash_bytes": 255442,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26620,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/Keyboard/KeyboardSerial",
+                    "sizes": [{
+                            "flash_bytes": 272854,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26836,
+                            "ram_percentage": 8
+                            }]
+                    },
+{"name": "USB/examples/KeyboardAndMouseControl",
+                    "sizes": [{
+                            "flash_bytes": 275222,
+                            "flash_percentage": 8,
+                            "ram_bytes": 26844,
+                            "ram_percentage": 8
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32c3:PartitionScheme=huge_app",
+                "target": "esp32c3",
+                "sketches": [
+{"name": "SPIFFS/examples/SPIFFS_Test",
+                    "sizes": [{
+                            "flash_bytes": 283072,
+                            "flash_percentage": 8,
+                            "ram_bytes": 14228,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "SPIFFS/examples/SPIFFS_time",
+                    "sizes": [{
+                            "flash_bytes": 761398,
+                            "flash_percentage": 24,
+                            "ram_bytes": 35852,
+                            "ram_percentage": 10
+                            }]
+                    },
+{"name": "Ticker/examples/Arguments",
+                    "sizes": [{
+                            "flash_bytes": 254262,
+                            "flash_percentage": 8,
+                            "ram_bytes": 13956,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Ticker/examples/Blinker",
+                    "sizes": [{
+                            "flash_bytes": 236012,
+                            "flash_percentage": 7,
+                            "ram_bytes": 13700,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "Update/examples/AWS_S3_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 731638,
+                            "flash_percentage": 23,
+                            "ram_bytes": 36188,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/HTTPS_OTA_Update",
+                    "sizes": [{
+                            "flash_bytes": 871088,
+                            "flash_percentage": 27,
+                            "ram_bytes": 36580,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "Update/examples/SD_Update",
+                    "sizes": [{
+                            "flash_bytes": 312918,
+                            "flash_percentage": 9,
+                            "ram_bytes": 14324,
+                            "ram_percentage": 4
+                            }]
+                    },
+{"name": "WebServer/examples/AdvancedWebServer",
+                    "sizes": [{
+                            "flash_bytes": 789266,
+                            "flash_percentage": 25,
+                            "ram_bytes": 38268,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/FSBrowser",
+                    "sizes": [{
+                            "flash_bytes": 824582,
+                            "flash_percentage": 26,
+                            "ram_bytes": 38204,
+                            "ram_percentage": 11
+                            }]
+                    },
+{"name": "WebServer/examples/HelloServer",
+                    "sizes": [{
+                            "flash_bytes": 788116,
+                            "flash_percentage": 25,
+                            "ram_bytes": 38268,
+                            "ram_percentage": 11
+                            }]
+                    }
+]
+},
+{ "board": "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app",
+                "target": "esp32",
+                "sketches": [
+{"name": "Preferences/examples/Prefs2Struct",
+                    "sizes": [{
+                            "flash_bytes": 287413,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "Preferences/examples/StartCounter",
+                    "sizes": [{
+                            "flash_bytes": 288141,
+                            "flash_percentage": 9,
+                            "ram_bytes": 21496,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustom",
+                    "sizes": [{
+                            "flash_bytes": 1934577,
+                            "flash_percentage": 61,
+                            "ram_bytes": 62368,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerCustomAirCooler",
+                    "sizes": [{
+                            "flash_bytes": 1912137,
+                            "flash_percentage": 60,
+                            "ram_bytes": 62504,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSonoffDualR3",
+                    "sizes": [{
+                            "flash_bytes": 1937737,
+                            "flash_percentage": 61,
+                            "ram_bytes": 62864,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "RainMaker/examples/RMakerSwitch",
+                    "sizes": [{
+                            "flash_bytes": 1945433,
+                            "flash_percentage": 61,
+                            "ram_bytes": 62408,
+                            "ram_percentage": 19
+                            }]
+                    },
+{"name": "SD/examples/SD_Test",
+                    "sizes": [{
+                            "flash_bytes": 342761,
+                            "flash_percentage": 10,
+                            "ram_bytes": 22488,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD/examples/SD_time",
+                    "sizes": [{
+                            "flash_bytes": 804281,
+                            "flash_percentage": 25,
+                            "ram_bytes": 45260,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_Test",
+                    "sizes": [{
+                            "flash_bytes": 365289,
+                            "flash_percentage": 11,
+                            "ram_bytes": 22852,
+                            "ram_percentage": 6
+                            }]
+                    },
+{"name": "SD_MMC/examples/SDMMC_time",
+                    "sizes": [{
+                            "flash_bytes": 830225,
+                            "flash_percentage": 26,
+                            "ram_bytes": 45672,
+                            "ram_percentage": 13
+                            }]
+                    },
+{"name": "SPI/examples/SPI_Multiple_Buses",
+                    "sizes": [{
+                            "flash_bytes": 260045,
+                            "flash_percentage": 8,
+                            "ram_bytes": 21208,
+                            "ram_percentage": 6
+                            }]
+                    }
+]
+}
+]}