Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

esp-web-flasher

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

esp-web-flasher - npm Package Compare versions

Comparing version 3.1.2 to 3.1.3

dist/stubs/esp32c3.json

30

dist/const.d.ts

@@ -24,2 +24,4 @@ export interface Logger {

"16MB": number;
"32MB": number;
"64MB": number;
};

@@ -49,2 +51,21 @@ export declare const FLASH_MODES: {

};
export declare const getFlashSizes: (chipFamily: ChipFamily) => {
"512KB": number;
"256KB": number;
"1MB": number;
"2MB": number;
"4MB": number;
"2MB-c1": number;
"4MB-c1": number;
"8MB": number;
"16MB": number;
} | {
"1MB": number;
"2MB": number;
"4MB": number;
"8MB": number;
"16MB": number;
"32MB": number;
"64MB": number;
};
export declare const FLASH_WRITE_SIZE = 1024;

@@ -71,2 +92,9 @@ export declare const STUB_FLASH_WRITE_SIZE = 16384;

export declare const ESP8266_SPI_W0_OFFS = 64;
export declare const ESP32C3_SPI_REG_BASE = 1610620928;
export declare const ESP32C3_SPI_USR_OFFS = 24;
export declare const ESP32C3_SPI_USR1_OFFS = 28;
export declare const ESP32C3_SPI_USR2_OFFS = 32;
export declare const ESP32C3_SPI_MOSI_DLEN_OFFS = 36;
export declare const ESP32C3_SPI_MISO_DLEN_OFFS = 40;
export declare const ESP32C3_SPI_W0_OFFS = 88;
export interface SpiFlashAddresses {

@@ -92,3 +120,3 @@ regBase: number;

export declare const CHIP_DETECT_MAGIC_VALUES: {
4293968129: {
[-999167]: {
name: string;

@@ -95,0 +123,0 @@ family: number;

@@ -20,2 +20,4 @@ import { toByteArray } from "./util";

"16MB": 0x40,
"32MB": 0x19,
"64MB": 0x1a,
};

@@ -45,2 +47,16 @@ export const FLASH_MODES = {

};
export const getFlashSizes = (chipFamily) => {
switch (chipFamily) {
case CHIP_FAMILY_ESP32:
return ESP32_FLASH_SIZES;
case CHIP_FAMILY_ESP32S2:
return ESP32_FLASH_SIZES;
case CHIP_FAMILY_ESP8266:
return FLASH_SIZES;
case CHIP_FAMILY_ESP32C3:
return ESP32_FLASH_SIZES;
default:
return FLASH_SIZES;
}
};
export const FLASH_WRITE_SIZE = 0x400;

@@ -67,2 +83,9 @@ export const STUB_FLASH_WRITE_SIZE = 0x4000;

export const ESP8266_SPI_W0_OFFS = 0x40;
export const ESP32C3_SPI_REG_BASE = 0x60002000;
export const ESP32C3_SPI_USR_OFFS = 0x18;
export const ESP32C3_SPI_USR1_OFFS = 0x1c;
export const ESP32C3_SPI_USR2_OFFS = 0x20;
export const ESP32C3_SPI_MOSI_DLEN_OFFS = 0x24;
export const ESP32C3_SPI_MISO_DLEN_OFFS = 0x28;
export const ESP32C3_SPI_W0_OFFS = 0x58;
const UART_DATE_REG_ADDR = 0x60000078;

@@ -80,3 +103,3 @@ export const SYNC_PACKET = toByteArray("\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");

export const CHIP_DETECT_MAGIC_VALUES = {
0xfff0c101: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
[-999167]: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },

@@ -167,2 +190,12 @@ 0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },

};
case CHIP_FAMILY_ESP32C3:
return {
regBase: ESP32C3_SPI_REG_BASE,
usrOffs: ESP32C3_SPI_USR_OFFS,
usr1Offs: ESP32C3_SPI_USR1_OFFS,
usr2Offs: ESP32C3_SPI_USR2_OFFS,
mosiDlenOffs: ESP32C3_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32C3_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32C3_SPI_W0_OFFS,
};
default:

@@ -169,0 +202,0 @@ return {

7

dist/esp_loader.d.ts

@@ -121,9 +121,2 @@ /// <reference types="w3c-web-serial" />

updateImageFlashParams(offset: number, image: ArrayBuffer): ArrayBuffer;
getFlashSizes(): {
"1MB": number;
"2MB": number;
"4MB": number;
"8MB": number;
"16MB": number;
};
flashId(): Promise<number>;

@@ -130,0 +123,0 @@ getChipFamily(): ChipFamily;

@@ -1,2 +0,2 @@

import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SPI_SET_PARAMS, ESP_SYNC, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, CHIP_ERASE_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ESP32_BOOTLOADER_FLASH_OFFSET, BOOTLOADER_FLASH_OFFSET, ESP_IMAGE_MAGIC, FLASH_SIZES, ESP32_FLASH_SIZES, FLASH_FREQUENCIES, FLASH_MODES, getSpiFlashAddresses, getUartDateRegAddress, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, } from "./const";
import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SPI_SET_PARAMS, ESP_SYNC, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, CHIP_ERASE_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ESP32_BOOTLOADER_FLASH_OFFSET, BOOTLOADER_FLASH_OFFSET, ESP_IMAGE_MAGIC, getFlashSizes, FLASH_FREQUENCIES, FLASH_MODES, getSpiFlashAddresses, getUartDateRegAddress, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, } from "./const";
import { getStubCode } from "./stubs";

@@ -40,3 +40,3 @@ import { pack, sleep, slipEncode, toHex, unpack } from "./util";

if (chip === undefined) {
throw new Error(`Unknown Chip: ${toHex(chipMagicValue)}`);
throw new Error(`Unknown Chip: Hex: ${toHex(chipMagicValue, 8).toLowerCase()} Number: ${chipMagicValue}`);
}

@@ -677,5 +677,7 @@ this.chipName = chip.name;

this.logger.log("Image being flashed is a bootloader");
let flashMode = FLASH_MODES["dio"]; // For now we always select dio, a common value supported by many flash chips and ESP boards
let flashFreq = FLASH_FREQUENCIES["40m"]; // For now we always select 40m, a common value supported by many flash chips and ESP boards
let flashSize = this.getFlashSizes()[this.flashSize ? this.flashSize : "4MB"]; // If size was autodetected we use it otherwise we default to 4MB
// For now we always select dio, a common value supported by many flash chips and ESP boards
let flashMode = FLASH_MODES["dio"];
// For now we always select 40m, a common value supported by many flash chips and ESP boards
let flashFreq = FLASH_FREQUENCIES["40m"];
let flashSize = getFlashSizes(this.getChipFamily())[this.flashSize ? this.flashSize : "4MB"]; // If size was autodetected we use it otherwise we default to 4MB
let flashParams = pack("BB", flashMode, flashSize + flashFreq);

@@ -694,8 +696,2 @@ let imageFlashParams = new Uint8Array(image, 2, 2);

}
getFlashSizes() {
if (this.getChipFamily() == CHIP_FAMILY_ESP32) {
return ESP32_FLASH_SIZES;
}
return FLASH_SIZES;
}
async flashId() {

@@ -702,0 +698,0 @@ let SPIFLASH_RDID = 0x9f;

@@ -5,3 +5,3 @@ import { Logger } from "./const";

export { ESPLoader } from "./esp_loader";
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, } from "./const";
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C3, } from "./const";
export declare const connect: (logger: Logger) => Promise<ESPLoader>;
import { ESP_ROM_BAUD } from "./const";
import { ESPLoader } from "./esp_loader";
export { ESPLoader } from "./esp_loader";
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, } from "./const";
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C3, } from "./const";
export const connect = async (logger) => {

@@ -6,0 +6,0 @@ // - Request a port and open a connection.

@@ -1,2 +0,2 @@

import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, } from "../const";
import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C3 } from "../const";
import { toByteArray } from "../util";

@@ -14,2 +14,5 @@ export const getStubCode = async (chipFamily) => {

}
else if (chipFamily == CHIP_FAMILY_ESP32C3) {
stubcode = await import("./esp32c3.json");
}
// Base64 decode the text and data

@@ -16,0 +19,0 @@ return {

@@ -105,4 +105,10 @@ /**

export const toHex = (value, size = 2) => {
return "0x" + value.toString(16).toUpperCase().padStart(size, "0");
let hex = value.toString(16).toUpperCase();
if (hex.startsWith("-")) {
return "-0x" + hex.substring(1).padStart(size, "0");
}
else {
return "0x" + hex.padStart(size, "0");
}
};
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

@@ -1,1 +0,1 @@

const t=t=>{let e=[];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e},e=t=>{let e=[];for(let a=0;a<t.length;a++){let i=t.charCodeAt(a);i<=255&&e.push(i)}return e},a=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw new Error("Pack format to Argument count mismatch");let i=[],s=!0;const r=(t,e)=>{for(let a=0;a<e;a++)s?i.push(t>>8*a&255):i.push(t>>8*(e-a)&255)};for(let i=0;i<t.length;i++)if("<"==t[i])s=!0;else if(">"==t[i])s=!1;else if("B"==t[i])r(e[a],1),a++;else if("H"==t[i])r(e[a],2),a++;else{if("I"!=t[i])throw new Error(`Unhandled character "${t[i]}" in pack format`);r(e[a],4),a++}return i},i=(t,e)=>{let a=0,i=[];for(let s of t)if("B"==s)i.push(255&e[a]),a+=1;else if("H"==s)i.push(255&e[a]|(255&e[a+1])<<8),a+=2;else{if("I"!=s)throw new Error(`Unhandled character "${s}" in unpack format`);i.push(255&e[a]|(255&e[a+1])<<8|(255&e[a+2])<<16|(255&e[a+3])<<24),a+=4}return i},s=(t,e=2)=>"0x"+t.toString(16).toUpperCase().padStart(e,"0"),r=t=>new Promise((e=>setTimeout(e,t))),n={"512KB":0,"256KB":16,"1MB":32,"2MB":48,"4MB":64,"2MB-c1":80,"4MB-c1":96,"8MB":128,"16MB":144},l={"1MB":0,"2MB":16,"4MB":32,"8MB":48,"16MB":64},o=2,h=0,d={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},_=e(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),f=33382,c=50,u=12882,g={4293968129:{name:"ESP8266",family:33382},15736195:{name:"ESP32",family:c},1990:{name:"ESP32-S2",family:u},9:{name:"ESP32-S3",family:12883},3942662454:{name:"ESP32-S3(beta2)",family:12883},1763790959:{name:"ESP32-C3",family:12835},456216687:{name:"ESP32-C3",family:12835},3391540258:{name:"ESP32-H2",family:12914},228687983:{name:"ESP32-C6(beta)",family:12838}},w=(t,e)=>{let a=Math.floor(t*(e/486));return a<3e3?3e3:a},m=async t=>{let a;return t==c?a=await import("./esp32-9a0a29d9.js"):t==u?a=await import("./esp32s2-70924167.js"):33382==t&&(a=await import("./esp8266-695df45b.js")),{...a,text:e(atob(a.text)),data:e(atob(a.data))}};function p(t){let e=t.length;for(;--e>=0;)t[e]=0}const b=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]),k=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]),y=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),v=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),x=new Array(576);p(x);const z=new Array(60);p(z);const S=new Array(512);p(S);const E=new Array(256);p(E);const U=new Array(29);p(U);const A=new Array(30);function R(t,e,a,i,s){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=t&&t.length}let I,B,F;function D(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}p(A);const O=t=>t<256?S[t]:S[256+(t>>>7)],Z=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},C=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,Z(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},T=(t,e,a)=>{C(t,a[2*e],a[2*e+1])},L=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},M=(t,e,a)=>{const i=new Array(16);let s,r,n=0;for(s=1;s<=15;s++)i[s]=n=n+a[s-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=L(i[e]++,e))}},N=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},P=t=>{t.bi_valid>8?Z(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},H=(t,e,a,i)=>{const s=2*e,r=2*a;return t[s]<t[r]||t[s]===t[r]&&i[e]<=i[a]},$=(t,e,a)=>{const i=t.heap[a];let s=a<<1;for(;s<=t.heap_len&&(s<t.heap_len&&H(e,t.heap[s+1],t.heap[s],t.depth)&&s++,!H(e,i,t.heap[s],t.depth));)t.heap[a]=t.heap[s],a=s,s<<=1;t.heap[a]=i},j=(t,e,a)=>{let i,s,r,n,l=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*l]<<8|t.pending_buf[t.d_buf+2*l+1],s=t.pending_buf[t.l_buf+l],l++,0===i?T(t,s,e):(r=E[s],T(t,r+256+1,e),n=b[r],0!==n&&(s-=U[r],C(t,s,n)),i--,r=O(i),T(t,r,a),n=k[r],0!==n&&(i-=A[r],C(t,i,n)))}while(l<t.last_lit);T(t,256,e)},K=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,l,o,h=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=h=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)o=t.heap[++t.heap_len]=h<2?++h:0,a[2*o]=1,t.depth[o]=0,t.opt_len--,s&&(t.static_len-=i[2*o+1]);for(e.max_code=h,n=t.heap_len>>1;n>=1;n--)$(t,a,n);o=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],$(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=l,a[2*o]=a[2*n]+a[2*l],t.depth[o]=(t.depth[n]>=t.depth[l]?t.depth[n]:t.depth[l])+1,a[2*n+1]=a[2*l+1]=o,t.heap[1]=o++,$(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,s=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,o=e.stat_desc.max_length;let h,d,_,f,c,u,g=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>o&&(f=o,g++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=l&&(c=n[d-l]),u=a[2*d],t.opt_len+=u*(f+c),r&&(t.static_len+=u*(s[2*d+1]+c)));if(0!==g){do{for(f=o-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[o]--,g-=2}while(g>0);for(f=o;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),M(a,h,t.bl_count)},W=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)s=n,n=e[2*(i+1)+1],++l<o&&s===n||(l<h?t.bl_tree[2*s]+=l:0!==s?(s!==r&&t.bl_tree[2*s]++,t.bl_tree[32]++):l<=10?t.bl_tree[34]++:t.bl_tree[36]++,l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4))},Y=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),i=0;i<=a;i++)if(s=n,n=e[2*(i+1)+1],!(++l<o&&s===n)){if(l<h)do{T(t,s,t.bl_tree)}while(0!=--l);else 0!==s?(s!==r&&(T(t,s,t.bl_tree),l--),T(t,16,t.bl_tree),C(t,l-3,2)):l<=10?(T(t,17,t.bl_tree),C(t,l-3,3)):(T(t,18,t.bl_tree),C(t,l-11,7));l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4)}};let G=!1;const q=(t,e,a,i)=>{C(t,0+(i?1:0),3),((t,e,a,i)=>{P(t),i&&(Z(t,a),Z(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var X={_tr_init:t=>{G||((()=>{let t,e,a,i,s;const r=new Array(16);for(a=0,i=0;i<28;i++)for(U[i]=a,t=0;t<1<<b[i];t++)E[a++]=i;for(E[a-1]=i,s=0,i=0;i<16;i++)for(A[i]=s,t=0;t<1<<k[i];t++)S[s++]=i;for(s>>=7;i<30;i++)for(A[i]=s<<7,t=0;t<1<<k[i]-7;t++)S[256+s++]=i;for(e=0;e<=15;e++)r[e]=0;for(t=0;t<=143;)x[2*t+1]=8,t++,r[8]++;for(;t<=255;)x[2*t+1]=9,t++,r[9]++;for(;t<=279;)x[2*t+1]=7,t++,r[7]++;for(;t<=287;)x[2*t+1]=8,t++,r[8]++;for(M(x,287,r),t=0;t<30;t++)z[2*t+1]=5,z[2*t]=L(t,5);I=new R(x,b,257,286,15),B=new R(z,k,0,30,15),F=new R(new Array(0),y,0,19,7)})(),G=!0),t.l_desc=new D(t.dyn_ltree,I),t.d_desc=new D(t.dyn_dtree,B),t.bl_desc=new D(t.bl_tree,F),t.bi_buf=0,t.bi_valid=0,N(t)},_tr_stored_block:q,_tr_flush_block:(t,e,a,i)=>{let s,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),K(t,t.l_desc),K(t,t.d_desc),n=(t=>{let e;for(W(t,t.dyn_ltree,t.l_desc.max_code),W(t,t.dyn_dtree,t.d_desc.max_code),K(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*v[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=a+5,a+4<=s&&-1!==e?q(t,e,a,i):4===t.strategy||r===s?(C(t,2+(i?1:0),3),j(t,x,z)):(C(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(C(t,e-257,5),C(t,a-1,5),C(t,i-4,4),s=0;s<i;s++)C(t,t.bl_tree[2*v[s]+1],3);Y(t,t.dyn_ltree,e-1),Y(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),j(t,t.dyn_ltree,t.dyn_dtree)),N(t),i&&P(t)},_tr_tally:(t,e,a)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(E[a]+256+1)]++,t.dyn_dtree[2*O(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{C(t,2,3),T(t,256,x),(t=>{16===t.bi_valid?(Z(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var J=(t,e,a,i)=>{let s=65535&t|0,r=t>>>16&65535|0,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{s=s+e[i++]|0,r=r+s|0}while(--n);s%=65521,r%=65521}return s|r<<16|0};const Q=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var V=(t,e,a,i)=>{const s=Q,r=i+a;t^=-1;for(let a=i;a<r;a++)t=t>>>8^s[255&(t^e[a])];return-1^t},tt={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"},et={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:at,_tr_stored_block:it,_tr_flush_block:st,_tr_tally:rt,_tr_align:nt}=X,{Z_NO_FLUSH:lt,Z_PARTIAL_FLUSH:ot,Z_FULL_FLUSH:ht,Z_FINISH:dt,Z_BLOCK:_t,Z_OK:ft,Z_STREAM_END:ct,Z_STREAM_ERROR:ut,Z_DATA_ERROR:gt,Z_BUF_ERROR:wt,Z_DEFAULT_COMPRESSION:mt,Z_FILTERED:pt,Z_HUFFMAN_ONLY:bt,Z_RLE:kt,Z_FIXED:yt,Z_DEFAULT_STRATEGY:vt,Z_UNKNOWN:xt,Z_DEFLATED:zt}=et,St=(t,e)=>(t.msg=tt[e],e),Et=t=>(t<<1)-(t>4?9:0),Ut=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let At=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Rt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},It=(t,e)=>{st(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Rt(t.strm)},Bt=(t,e)=>{t.pending_buf[t.pending++]=e},Ft=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Dt=(t,e,a,i)=>{let s=t.avail_in;return s>i&&(s=i),0===s?0:(t.avail_in-=s,e.set(t.input.subarray(t.next_in,t.next_in+s),a),1===t.state.wrap?t.adler=J(t.adler,e,s,a):2===t.state.wrap&&(t.adler=V(t.adler,e,s,a)),t.next_in+=s,t.total_in+=s,s)},Ot=(t,e)=>{let a,i,s=t.max_chain_length,r=t.strstart,n=t.prev_length,l=t.nice_match;const o=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[r+n-1],u=h[r+n];t.prev_length>=t.good_match&&(s>>=2),l>t.lookahead&&(l=t.lookahead);do{if(a=e,h[a+n]===u&&h[a+n-1]===c&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<f);if(i=258-(f-r),r=f-258,i>n){if(t.match_start=e,n=i,i>=l)break;c=h[r+n-1],u=h[r+n]}}}while((e=_[e&d])>o&&0!=--s);return n<=t.lookahead?n:t.lookahead},Zt=t=>{const e=t.w_size;let a,i,s,r,n;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{s=t.head[--a],t.head[a]=s>=e?s-e:0}while(--i);i=e,a=i;do{s=t.prev[--a],t.prev[a]=s>=e?s-e:0}while(--i);r+=e}if(0===t.strm.avail_in)break;if(i=Dt(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=i,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=At(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=At(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},Ct=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(Zt(t),t.lookahead<262&&e===lt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=At(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=Ot(t,a)),t.match_length>=3)if(i=rt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=At(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=At(t,t.ins_h,t.window[t.strstart+1]);else i=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===dt?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,s;for(;;){if(t.lookahead<262){if(Zt(t),t.lookahead<262&&e===lt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=At(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=Ot(t,a),t.match_length<=5&&(t.strategy===pt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){s=t.strstart+t.lookahead-3,i=rt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=s&&(t.ins_h=At(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(It(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=rt(t,0,t.window[t.strstart-1]),i&&It(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=rt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===dt?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2};function Lt(t,e,a,i,s){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=s}const Mt=[new Lt(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Zt(t),0===t.lookahead&&e===lt)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,It(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(It(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(It(t,!1),t.strm.avail_out),1)})),new Lt(4,4,8,4,Ct),new Lt(4,5,16,8,Ct),new Lt(4,6,32,32,Ct),new Lt(4,4,16,16,Tt),new Lt(8,16,32,32,Tt),new Lt(8,16,128,128,Tt),new Lt(8,32,128,256,Tt),new Lt(32,128,258,1024,Tt),new Lt(32,258,258,4096,Tt)];function Nt(){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=zt,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),Ut(this.dyn_ltree),Ut(this.dyn_dtree),Ut(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),Ut(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Ut(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Pt=t=>{if(!t||!t.state)return St(t,ut);t.total_in=t.total_out=0,t.data_type=xt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=lt,at(e),ft},Ht=t=>{const e=Pt(t);var a;return e===ft&&((a=t.state).window_size=2*a.w_size,Ut(a.head),a.max_lazy_match=Mt[a.level].max_lazy,a.good_match=Mt[a.level].good_length,a.nice_match=Mt[a.level].nice_length,a.max_chain_length=Mt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},$t=(t,e,a,i,s,r)=>{if(!t)return ut;let n=1;if(e===mt&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||a!==zt||i<8||i>15||e<0||e>9||r<0||r>yt)return St(t,ut);8===i&&(i=9);const l=new Nt;return t.state=l,l.strm=t,l.wrap=n,l.gzhead=null,l.w_bits=i,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+3-1)/3),l.window=new Uint8Array(2*l.w_size),l.head=new Uint16Array(l.hash_size),l.prev=new Uint16Array(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new Uint8Array(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=r,l.method=a,Ht(t)};var jt={deflateInit:(t,e)=>$t(t,e,zt,15,8,vt),deflateInit2:$t,deflateReset:Ht,deflateResetKeep:Pt,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?ut:(t.state.gzhead=e,ft):ut,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>_t||e<0)return t?St(t,ut):ut;const s=t.state;if(!t.output||!t.input&&0!==t.avail_in||666===s.status&&e!==dt)return St(t,0===t.avail_out?wt:ut);s.strm=t;const r=s.last_flush;if(s.last_flush=e,42===s.status)if(2===s.wrap)t.adler=0,Bt(s,31),Bt(s,139),Bt(s,8),s.gzhead?(Bt(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),Bt(s,255&s.gzhead.time),Bt(s,s.gzhead.time>>8&255),Bt(s,s.gzhead.time>>16&255),Bt(s,s.gzhead.time>>24&255),Bt(s,9===s.level?2:s.strategy>=bt||s.level<2?4:0),Bt(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(Bt(s,255&s.gzhead.extra.length),Bt(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=V(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,9===s.level?2:s.strategy>=bt||s.level<2?4:0),Bt(s,3),s.status=113);else{let e=zt+(s.w_bits-8<<4)<<8,a=-1;a=s.strategy>=bt||s.level<2?0:s.level<6?1:6===s.level?2:3,e|=a<<6,0!==s.strstart&&(e|=32),e+=31-e%31,s.status=113,Ft(s,e),0!==s.strstart&&(Ft(s,t.adler>>>16),Ft(s,65535&t.adler)),t.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),Rt(t),a=s.pending,s.pending!==s.pending_buf_size));)Bt(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),Rt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,Bt(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),Rt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,Bt(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=V(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Rt(t),s.pending+2<=s.pending_buf_size&&(Bt(s,255&t.adler),Bt(s,t.adler>>8&255),t.adler=0,s.status=113)):s.status=113),0!==s.pending){if(Rt(t),0===t.avail_out)return s.last_flush=-1,ft}else if(0===t.avail_in&&Et(e)<=Et(r)&&e!==dt)return St(t,wt);if(666===s.status&&0!==t.avail_in)return St(t,wt);if(0!==t.avail_in||0!==s.lookahead||e!==lt&&666!==s.status){let a=s.strategy===bt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Zt(t),0===t.lookahead)){if(e===lt)return 1;break}if(t.match_length=0,a=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):s.strategy===kt?((t,e)=>{let a,i,s,r;const n=t.window;for(;;){if(t.lookahead<=258){if(Zt(t),t.lookahead<=258&&e===lt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(s=t.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){r=t.strstart+258;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<r);t.match_length=258-(r-s),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=rt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):Mt[s.level].func(s,e);if(3!==a&&4!==a||(s.status=666),1===a||3===a)return 0===t.avail_out&&(s.last_flush=-1),ft;if(2===a&&(e===ot?nt(s):e!==_t&&(it(s,0,0,!1),e===ht&&(Ut(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),Rt(t),0===t.avail_out))return s.last_flush=-1,ft}return e!==dt?ft:s.wrap<=0?ct:(2===s.wrap?(Bt(s,255&t.adler),Bt(s,t.adler>>8&255),Bt(s,t.adler>>16&255),Bt(s,t.adler>>24&255),Bt(s,255&t.total_in),Bt(s,t.total_in>>8&255),Bt(s,t.total_in>>16&255),Bt(s,t.total_in>>24&255)):(Ft(s,t.adler>>>16),Ft(s,65535&t.adler)),Rt(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?ft:ct)},deflateEnd:t=>{if(!t||!t.state)return ut;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?St(t,ut):(t.state=null,113===e?St(t,gt):ft)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return ut;const i=t.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return ut;if(1===s&&(t.adler=J(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===s&&(Ut(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const r=t.avail_in,n=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Zt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=At(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Zt(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,t.next_in=n,t.input=l,t.avail_in=r,i.wrap=s,ft},deflateInfo:"pako deflate (from Nodeca project)"};const Kt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Wt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Kt(a,e)&&(t[e]=a[e])}}return t},Yt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,s=t.length;e<s;e++){let s=t[e];a.set(s,i),i+=s.length}return a};let Gt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Gt=!1}const qt=new Uint8Array(256);for(let t=0;t<256;t++)qt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;qt[254]=qt[254]=1;var Xt=t=>{let e,a,i,s,r,n=t.length,l=0;for(s=0;s<n;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(l),r=0,s=0;r<l;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e},Jt=(t,e)=>{let a,i;const s=e||t.length,r=new Array(2*s);for(i=0,a=0;a<s;){let e=t[a++];if(e<128){r[i++]=e;continue}let n=qt[e];if(n>4)r[i++]=65533,a+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&a<s;)e=e<<6|63&t[a++],n--;n>1?r[i++]=65533:e<65536?r[i++]=e:(e-=65536,r[i++]=55296|e>>10&1023,r[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Gt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(r,i)},Qt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+qt[t[a]]>e?a:e};var Vt=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 te=Object.prototype.toString,{Z_NO_FLUSH:ee,Z_SYNC_FLUSH:ae,Z_FULL_FLUSH:ie,Z_FINISH:se,Z_OK:re,Z_STREAM_END:ne,Z_DEFAULT_COMPRESSION:le,Z_DEFAULT_STRATEGY:oe,Z_DEFLATED:he}=et;function de(t){this.options=Wt({level:le,method:he,chunkSize:16384,windowBits:15,memLevel:8,strategy:oe},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Vt,this.strm.avail_out=0;let a=jt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==re)throw new Error(tt[a]);if(e.header&&jt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Xt(e.dictionary):"[object ArrayBuffer]"===te.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=jt.deflateSetDictionary(this.strm,t),a!==re)throw new Error(tt[a]);this._dict_set=!0}}function _e(t,e){const a=new de(e);if(a.push(t,!0),a.err)throw a.msg||tt[a.err];return a.result}de.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let s,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?se:ee,"string"==typeof t?a.input=Xt(t):"[object ArrayBuffer]"===te.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(r===ae||r===ie)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(s=jt.deflate(a,r),s===ne)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),s=jt.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===re;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},de.prototype.onData=function(t){this.chunks.push(t)},de.prototype.onEnd=function(t){t===re&&(this.result=Yt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var fe={Deflate:de,deflate:_e,deflateRaw:function(t,e){return(e=e||{}).raw=!0,_e(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,_e(t,e)},constants:et};var ce=function(t,e){let a,i,s,r,n,l,o,h,d,_,f,c,u,g,w,m,p,b,k,y,v,x,z,S;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),s=t.next_out,S=t.output,r=s-(e-t.avail_out),n=s+(t.avail_out-257),l=E.dmax,o=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,g=E.distcode,w=(1<<E.lenbits)-1,m=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),p=u[f&w];e:for(;;){if(b=p>>>24,f>>>=b,c-=b,b=p>>>16&255,0===b)S[s++]=65535&p;else{if(!(16&b)){if(0==(64&b)){p=u[(65535&p)+(f&(1<<b)-1)];continue e}if(32&b){E.mode=12;break t}t.msg="invalid literal/length code",E.mode=30;break t}k=65535&p,b&=15,b&&(c<b&&(f+=z[a++]<<c,c+=8),k+=f&(1<<b)-1,f>>>=b,c-=b),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),p=g[f&m];a:for(;;){if(b=p>>>24,f>>>=b,c-=b,b=p>>>16&255,!(16&b)){if(0==(64&b)){p=g[(65535&p)+(f&(1<<b)-1)];continue a}t.msg="invalid distance code",E.mode=30;break t}if(y=65535&p,b&=15,c<b&&(f+=z[a++]<<c,c+=8,c<b&&(f+=z[a++]<<c,c+=8)),y+=f&(1<<b)-1,y>l){t.msg="invalid distance too far back",E.mode=30;break t}if(f>>>=b,c-=b,b=s-r,y>b){if(b=y-b,b>h&&E.sane){t.msg="invalid distance too far back",E.mode=30;break t}if(v=0,x=_,0===d){if(v+=o-b,b<k){k-=b;do{S[s++]=_[v++]}while(--b);v=s-y,x=S}}else if(d<b){if(v+=o+d-b,b-=d,b<k){k-=b;do{S[s++]=_[v++]}while(--b);if(v=0,d<k){b=d,k-=b;do{S[s++]=_[v++]}while(--b);v=s-y,x=S}}}else if(v+=d-b,b<k){k-=b;do{S[s++]=_[v++]}while(--b);v=s-y,x=S}for(;k>2;)S[s++]=x[v++],S[s++]=x[v++],S[s++]=x[v++],k-=3;k&&(S[s++]=x[v++],k>1&&(S[s++]=x[v++]))}else{v=s-y;do{S[s++]=S[v++],S[s++]=S[v++],S[s++]=S[v++],k-=3}while(k>2);k&&(S[s++]=S[v++],k>1&&(S[s++]=S[v++]))}break}}break}}while(a<i&&s<n);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=s,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=s<n?n-s+257:257-(s-n),E.hold=f,E.bits=c};const ue=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]),ge=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]),we=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]),me=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 pe=(t,e,a,i,s,r,n,l)=>{const o=l.bits;let h,d,_,f,c,u,g=0,w=0,m=0,p=0,b=0,k=0,y=0,v=0,x=0,z=0,S=null,E=0;const U=new Uint16Array(16),A=new Uint16Array(16);let R,I,B,F=null,D=0;for(g=0;g<=15;g++)U[g]=0;for(w=0;w<i;w++)U[e[a+w]]++;for(b=o,p=15;p>=1&&0===U[p];p--);if(b>p&&(b=p),0===p)return s[r++]=20971520,s[r++]=20971520,l.bits=1,0;for(m=1;m<p&&0===U[m];m++);for(b<m&&(b=m),v=1,g=1;g<=15;g++)if(v<<=1,v-=U[g],v<0)return-1;if(v>0&&(0===t||1!==p))return-1;for(A[1]=0,g=1;g<15;g++)A[g+1]=A[g]+U[g];for(w=0;w<i;w++)0!==e[a+w]&&(n[A[e[a+w]]++]=w);if(0===t?(S=F=n,u=19):1===t?(S=ue,E-=257,F=ge,D-=257,u=256):(S=we,F=me,u=-1),z=0,w=0,g=m,c=r,k=b,y=0,_=-1,x=1<<b,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){R=g-y,n[w]<u?(I=0,B=n[w]):n[w]>u?(I=F[D+n[w]],B=S[E+n[w]]):(I=96,B=0),h=1<<g-y,d=1<<k,m=d;do{d-=h,s[c+(z>>y)+d]=R<<24|I<<16|B|0}while(0!==d);for(h=1<<g-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,w++,0==--U[g]){if(g===p)break;g=e[a+n[w]]}if(g>b&&(z&f)!==_){for(0===y&&(y=b),c+=m,k=g-y,v=1<<k;k+y<p&&(v-=U[k+y],!(v<=0));)k++,v<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,s[_]=b<<24|k<<16|c-r|0}}return 0!==z&&(s[c+z]=g-y<<24|64<<16|0),l.bits=b,0};const{Z_FINISH:be,Z_BLOCK:ke,Z_TREES:ye,Z_OK:ve,Z_STREAM_END:xe,Z_NEED_DICT:ze,Z_STREAM_ERROR:Se,Z_DATA_ERROR:Ee,Z_MEM_ERROR:Ue,Z_BUF_ERROR:Ae,Z_DEFLATED:Re}=et,Ie=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){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 Fe=t=>{if(!t||!t.state)return Se;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ve},De=t=>{if(!t||!t.state)return Se;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Fe(t)},Oe=(t,e)=>{let a;if(!t||!t.state)return Se;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Se:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,De(t))},Ze=(t,e)=>{if(!t)return Se;const a=new Be;t.state=a,a.window=null;const i=Oe(t,e);return i!==ve&&(t.state=null),i};let Ce,Te,Le=!0;const Me=t=>{if(Le){Ce=new Int32Array(512),Te=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(pe(1,t.lens,0,288,Ce,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;pe(2,t.lens,0,32,Te,0,t.work,{bits:5}),Le=!1}t.lencode=Ce,t.lenbits=9,t.distcode=Te,t.distbits=5},Ne=(t,e,a,i)=>{let s;const r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),i>=r.wsize?(r.window.set(e.subarray(a-r.wsize,a),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>i&&(s=i),r.window.set(e.subarray(a-i,a-i+s),r.wnext),(i-=s)?(r.window.set(e.subarray(a-i,a),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var Pe={inflateReset:De,inflateReset2:Oe,inflateResetKeep:Fe,inflateInit:t=>Ze(t,15),inflateInit2:Ze,inflate:(t,e)=>{let a,i,s,r,n,l,o,h,d,_,f,c,u,g,w,m,p,b,k,y,v,x,z=0;const S=new Uint8Array(4);let E,U;const A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return Se;a=t.state,12===a.mode&&(a.mode=13),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,_=l,f=o,x=ve;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){a.check=0,S[0]=255&h,S[1]=h>>>8&255,a.check=V(a.check,S,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=30;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=30;break}if(h>>>=4,d-=4,v=8+(15&h),0===a.wbits)a.wbits=v;else if(v>a.wbits){t.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,t.adler=a.check=1,a.mode=512&h?10:12,h=0,d=0;break;case 2:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==Re){t.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=V(a.check,S,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,a.check=V(a.check,S,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=V(a.check,S,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=V(a.check,S,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(c=a.length,c>l&&(c=l),c&&(a.head&&(v=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(r,r+c),v)),512&a.flags&&(a.check=V(a.check,i,c,r)),l-=c,r+=c,a.length-=c),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===l)break t;c=0;do{v=i[r+c++],a.head&&v&&a.length<65536&&(a.head.name+=String.fromCharCode(v))}while(v&&c<l);if(512&a.flags&&(a.check=V(a.check,i,c,r)),l-=c,r+=c,v)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===l)break t;c=0;do{v=i[r+c++],a.head&&v&&a.length<65536&&(a.head.comment+=String.fromCharCode(v))}while(v&&c<l);if(512&a.flags&&(a.check=V(a.check,i,c,r)),l-=c,r+=c,v)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=30;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}t.adler=a.check=Ie(h),h=0,d=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,ze;t.adler=a.check=1,a.mode=12;case 12:if(e===ke||e===ye)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Me(a),a.mode=20,e===ye){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ye)break t;case 15:a.mode=16;case 16:if(c=a.length,c){if(c>l&&(c=l),c>o&&(c=o),0===c)break t;s.set(i.subarray(r,r+c),n),l-=c,r+=c,o-=c,n+=c,a.length-=c;break}a.mode=12;break;case 17:for(;d<14;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.lens[A[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[A[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=pe(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(p<16)h>>>=w,d-=w,a.lens[a.have++]=p;else{if(16===p){for(U=w+2;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h>>>=w,d-=w,0===a.have){t.msg="invalid bit length repeat",a.mode=30;break}v=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===p){for(U=w+3;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,c=3+(7&h),h>>>=3,d-=3}else{for(U=w+7;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=30;break}for(;c--;)a.lens[a.have++]=v}}if(30===a.mode)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,E={bits:a.lenbits},x=pe(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=pe(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=30;break}if(a.mode=20,e===ye)break t;case 20:a.mode=21;case 21:if(l>=6&&o>=258){t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,ce(t,f),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(b=w,k=m,y=p;z=a.lencode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,a.length=p,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg="invalid literal/length code",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<<a.distbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(b=w,k=m,y=p;z=a.distcode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,64&m){t.msg="invalid distance code",a.mode=30;break}a.offset=p,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===o)break t;if(c=f-o,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=30;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),g=a.window}else g=s,u=n-a.offset,c=a.length;c>o&&(c=o),o-=c,a.length-=c;do{s[n++]=g[u++]}while(--c);0===a.length&&(a.mode=21);break;case 26:if(0===o)break t;s[n++]=a.length,o--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===l)break t;l--,h|=i[r++]<<d,d+=8}if(f-=o,t.total_out+=f,a.total+=f,f&&(t.adler=a.check=a.flags?V(a.check,s,f,n-f):J(a.check,s,f,n-f)),f=o,(a.flags?h:Ie(h))!==a.check){t.msg="incorrect data check",a.mode=30;break}h=0,d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=30;break}h=0,d=0}a.mode=29;case 29:x=xe;break t;case 30:x=Ee;break t;case 31:return Ue;case 32:default:return Se}return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<30&&(a.mode<27||e!==be))&&Ne(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,a.wrap&&f&&(t.adler=a.check=a.flags?V(a.check,s,f,t.next_out-f):J(a.check,s,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===_&&0===f||e===be)&&x===ve&&(x=Ae),x},inflateEnd:t=>{if(!t||!t.state)return Se;let e=t.state;return e.window&&(e.window=null),t.state=null,ve},inflateGetHeader:(t,e)=>{if(!t||!t.state)return Se;const a=t.state;return 0==(2&a.wrap)?Se:(a.head=e,e.done=!1,ve)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,s,r;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?Se:11===i.mode&&(s=1,s=J(s,e,a,0),s!==i.check)?Ee:(r=Ne(t,e,a,a),r?(i.mode=31,Ue):(i.havedict=1,ve))):Se},inflateInfo:"pako inflate (from Nodeca project)"};var He=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 $e=Object.prototype.toString,{Z_NO_FLUSH:je,Z_FINISH:Ke,Z_OK:We,Z_STREAM_END:Ye,Z_NEED_DICT:Ge,Z_STREAM_ERROR:qe,Z_DATA_ERROR:Xe,Z_MEM_ERROR:Je}=et;function Qe(t){this.options=Wt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Vt,this.strm.avail_out=0;let a=Pe.inflateInit2(this.strm,e.windowBits);if(a!==We)throw new Error(tt[a]);if(this.header=new He,Pe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Xt(e.dictionary):"[object ArrayBuffer]"===$e.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Pe.inflateSetDictionary(this.strm,e.dictionary),a!==We)))throw new Error(tt[a])}Qe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let r,n,l;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Ke:je,"[object ArrayBuffer]"===$e.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),r=Pe.inflate(a,n),r===Ge&&s&&(r=Pe.inflateSetDictionary(a,s),r===We?r=Pe.inflate(a,n):r===Xe&&(r=Ge));a.avail_in>0&&r===Ye&&a.state.wrap>0&&0!==t[a.next_in];)Pe.inflateReset(a),r=Pe.inflate(a,n);switch(r){case qe:case Xe:case Ge:case Je:return this.onEnd(r),this.ended=!0,!1}if(l=a.avail_out,a.next_out&&(0===a.avail_out||r===Ye))if("string"===this.options.to){let t=Qt(a.output,a.next_out),e=a.next_out-t,s=Jt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(s)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(r!==We||0!==l){if(r===Ye)return r=Pe.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Qe.prototype.onData=function(t){this.chunks.push(t)},Qe.prototype.onEnd=function(t){t===We&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Yt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Ve,deflate:ta,deflateRaw:ea,gzip:aa}=fe;var ia=ta;class sa extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.stopReadLoop=!1,this.flashSize=null}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t,e=await this.readRegister(1073745920),a=g[e];if(void 0===a)throw new Error(`Unknown Chip: ${s(e)}`);this.chipName=a.name,this.chipFamily=a.family,33382==this.chipFamily?t=1072693328:(this.chipFamily==c||this.chipFamily==u)&&(t=1610719232);for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(t+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;!this.stopReadLoop;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected"),this.connected=!1,this.dispatchEvent(new Event("disconnect"))}this.logger.debug("Finished read loop")}async hardReset(t=!1){this.logger.log("Try hard reset."),await this.port.setSignals({dataTerminalReady:!1,requestToSend:!0}),await this.port.setSignals({dataTerminalReady:t,requestToSend:!1}),await new Promise((t=>setTimeout(t,1e3)))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],i=this._efuses[1],s=this._efuses[2],r=this._efuses[3];if(33382==this.chipFamily){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(0==(i>>16&255))t=[24,254,52];else{if(1!=(i>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=i>>8&255,e[4]=255&i,e[5]=a>>24&255}else if(this.chipFamily==c)e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i;else{if(this.chipFamily!=u)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i}return e}async readRegister(t){this.debug&&this.logger.debug("Reading Register",t);let e=a("I",t),s=(await this.checkCommand(10,e))[0];return i("I",s)[0]}async checkCommand(t,e,a=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,a);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let l=0;if(this.IS_STUB||33382==this.chipFamily?l=2:[c,u].includes(this.chipFamily)?l=4:[2,4].includes(n.length)&&(l=n.length),n.length<l)throw new Error("Didn't get enough status bytes");let o=n.slice(-l,n.length);if(n=n.slice(0,-l),this.debug&&(this.logger.debug("status",o),this.logger.debug("value",r),this.logger.debug("data",n)),1==o[0])throw 5==o[1]?new Error("Invalid (unsupported) command "+s(t)):new Error("Command failure error code "+s(o[1]));return[r,n]}async sendCommand(e,i,s=0){this._inputBuffer.length=0;let r=[192,0];r.push(e),r=r.concat(a("H",i.length)),r=r.concat(t(a("I",s))),r=r.concat(t(i)),r.push(192),this.debug&&this.logger.debug("Writing "+r.length+" byte"+(1==r.length?"":"s")+":",r),await this.writeToStream(r)}async getResponse(t,e=3e3){let a=[],i=0,s=!1,n=Date.now();for(;Date.now()-n<e;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?s=!0:s?(221==t?a.push(220):220==t?a.push(192):a=a.concat([219,t]),s=!1):a.push(t)}else await r(10);if(a.length>0&&192!=a[0]&&a.shift(),a.length>1&&1!=a[1]&&a.shift(),a.length>2&&a[2]!=t&&a.shift(),a.length>4&&(i=a[3]+(a[4]<<8)),a.length==i+10)break}if(a.length!=i+10)return this.logger.log("Timed out after "+e+" milliseconds"),[null,null];this.debug&&this.logger.debug("Reading "+a.length+" byte"+(1==a.length?"":"s")+":",a);let l=a.slice(5,9),o=a.slice(9,-1);return this.debug&&this.logger.debug("value:",l,"data:",o),[l,o]}async readBuffer(t=3e3){let e=[],a=!1,i=Date.now();for(;Date.now()-i<t;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?a=!0:a?(221==t?e.push(220):220==t?e.push(192):e=e.concat([219,t]),a=!1):e.push(t)}else await r(10);if(e.length>0&&192!=e[0]&&e.shift(),e.length>1&&192==e[e.length-1])break}if(e.length<2)return this.logger.log("Timed out after "+t+" milliseconds"),null;this.debug&&this.logger.debug("Reading "+e.length+" byte"+(1==e.length?"":"s")+":",e);let s=e.slice(1,-1);return this.debug&&this.logger.debug("data:",s),s}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(33382==this.chipFamily)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=a("<II",t,this.IS_STUB?115200:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e,a;try{this.stopReadLoop=!0,await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),null===(a=this._reader)||void 0===a||a.releaseLock(),await this.port.close(),await this.port.open({baudRate:t}),this.stopReadLoop=!1,this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(await this._sync())return await r(100),!0;await r(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,_);for(let t=0;t<8;t++){let[t,e]=await this.getResponse(8,100);if(null!==e&&(e.length>1&&0==e[0]&&0==e[1]))return!0}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,a=0,i=!1){this.updateImageFlashParams(a,t);let r,n=t.byteLength,l=0;i?(r=ia(new Uint8Array(t),{level:9}).buffer,l=r.byteLength,this.logger.log(`Writing data with filesize: ${n}. Compressed Size: ${l}`),await this.flashDeflBegin(n,l,a)):(this.logger.log(`Writing data with filesize: ${n}`),r=t,await this.flashBegin(n,a));let o=[],h=0,d=0,_=0,f=Date.now(),c=this.getFlashWriteSize(),u=i?l:n;for(;u-_>0;)this.debug&&this.logger.log(`Writing at ${s(a+h*c,8)} `),u-_>=c?o=Array.from(new Uint8Array(r,_,c)):(o=Array.from(new Uint8Array(r,_,u-_)),i||(o=o.concat(new Array(c-o.length).fill(255)))),i?await this.flashDeflBlock(o,h,2e3):await this.flashBlock(o,h,2e3),h+=1,d+=i?Math.round(o.length*n/l):o.length,_+=c,e(d,u);this.logger.log("Took "+(Date.now()-f)+"ms to write "+u+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,i=100){await this.checkCommand(3,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t),i)}async flashDeflBlock(t,e,i=100){await this.checkCommand(17,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async flashBegin(t=0,e=0,i=!1){let r,n,l=this.getFlashWriteSize();[c,u].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0)),this.chipFamily==c&&(n=a("<IIIIII",0,this._flashsize,65536,4096,256,65535),await this.checkCommand(11,n));let o,h=Math.floor((t+l-1)/l);r=33382==this.chipFamily?this.getEraseSize(e,t):t,o=this.IS_STUB?3e3:w(3e4,t);let d=Date.now();return n=a("<IIII",r,h,l,e),this.chipFamily==u&&(n=n.concat(a("<I",i?1:0))),this.logger.log("Erase size "+r+", blocks "+h+", block size "+l+", offset "+s(e,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,n,0,o),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-d)+"ms to erase "+h+" bytes"),h}async flashDeflBegin(t=0,e=0,i=0,s=!1){let r,n=this.getFlashWriteSize(),l=Math.floor((e+n-1)/n),o=Math.floor((t+n-1)/n),h=0,d=0;return this.IS_STUB?(h=t,d=3e3):(h=o*n,d=w(3e4,h)),r=a("<IIII",h,l,n,i),await this.checkCommand(16,r,0,d),l}async flashFinish(){let t=a("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=a("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){var t;return this.chipFamily==c||(null===(t=this._parent)||void 0===t?void 0:t.chipFamily)==c?4096:0}updateImageFlashParams(t,e){if(e.byteLength<8)return e;var i=Array.from(new Uint8Array(e,0,4));let r=i[0],n=i[2],l=i[3];if(this.logger.debug(`Image header, Magic=${s(r)}, FlashMode=${s(n)}, FlashSizeFreq=${s(l)}`),t!=this.getBootloaderOffset())return e;if(233!=r)return this.logger.log("Warning: Image file at %s doesn't look like an image file, so not changing any flash settings.",s(t,4)),e;this.logger.log("Image being flashed is a bootloader");let d=o,_=h,f=this.getFlashSizes()[this.flashSize?this.flashSize:"4MB"],c=a("BB",d,f+_),u=new Uint8Array(e,2,2);return c[0]!=u[0]||c[1]!=u[1]?(u[0]=c[0],u[1]=c[1],this.logger.log(`Patching Flash parameters header bytes to ${s(c[0],2)} ${s(c[1],2)}`)):this.logger.log("Flash parameters header did not need patching."),e}getFlashSizes(){return this.getChipFamily()==c?l:n}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,i=4294967295,s=0,r=0){let n=a("<IIII",t,e,i,s);r>0&&n.concat(a("<IIII",(t=>{switch(t){case c:case u:case 33382:return 1610612856;default:return-1}})(this.getChipFamily()),0,0,r)),await this.checkCommand(9,n)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let i=t.regBase+t.mosiDlenOffs,s=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(i,e-1),a>0&&await this.writeRegister(s,a-1)}else{let i=t.regBase+t.usr1Offs,s=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(i,s)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,a=0){let r=(t=>{switch(t){case c:case u:return{regBase:1072963584,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128};case 33382:return{regBase:1610613248,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64};default:return{regBase:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1}}})(this.getChipFamily()),n=r.regBase,l=n+0,o=n+r.usrOffs,h=n+r.usr2Offs,d=n+r.w0Offs,_=1<<18;if(a>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let f=8*e.length,g=await this.readRegister(o),w=await this.readRegister(h),m=1<<31;if(a>0&&(m|=268435456),f>0&&(m|=134217728),await this.setDataLengths(r,f,a),await this.writeRegister(o,m),await this.writeRegister(h,7<<28|t),0==f)await this.writeRegister(d,0);else{e.concat(new Array(e.length%4).fill(0));let t=i("I".repeat(Math.floor(e.length/4)),e),a=d;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${s(e)} to register offset ${s(a)}`),await this.writeRegister(a,e),a+=4}await this.writeRegister(l,_),await this.waitDone(l,_);let p=await this.readRegister(d);return await this.writeRegister(o,g),await this.writeRegister(h,w),p}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,a=t>>16&255;this.logger.debug(`FlashId: ${s(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${a.toString(16)}`),this.flashSize=d[a],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,i=Math.floor((e+a-1)/a),s=16-Math.floor(t/a)%16;return i<s&&(s=i),i<2*s?Math.floor((i+1)/2*a):(i-s)*a}async memBegin(t,e,i,s){return await this.checkCommand(5,a("<IIII",t,e,i,s))}async memBlock(t,e){return await this.checkCommand(7,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?3e3:50,i=a("<II",0==t?1:0,t);return await this.checkCommand(6,i,0,e)}async runStub(){const t=await m(this.chipFamily);let e=2048;this.logger.log("Uploading stub...");for(let a of["text","data"])if(Object.keys(t).includes(a)){let i=t[a+"_start"],s=t[a].length,r=Math.floor((s+e-1)/e);await this.memBegin(s,r,e,i);for(let i of Array(r).keys()){let r=i*e,n=r+e;n>s&&(n=s),await this.memBlock(t[a].slice(r,n),i)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const a=await this.readBuffer(100),i=String.fromCharCode(...a);if("OHAI"!=i)throw new Error("Failed to start stub. Unexpected response: "+i);this.logger.log("Stub is now running...");const s=new ra(this.port,this.logger,this);return await s.detectFlashSize(),s}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(this._reader&&await this._reader.cancel(),await this.port.writable.getWriter().close(),await this.port.close(),this.connected=!1)}}class ra extends sa{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,a,i){let r=await m(this.chipFamily),n=i,l=i+t;console.log(n,l),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&l>t)throw new Error("Software loader is resident at "+s(t,8)+"-"+s(e,8)+". Can't load binary at overlapping address range "+s(n,8)+"-"+s(l,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,6e5)}}const na=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:115200}),t.log("Connected successfully."),new sa(e,t)};export{c as CHIP_FAMILY_ESP32,u as CHIP_FAMILY_ESP32S2,f as CHIP_FAMILY_ESP8266,sa as ESPLoader,na as connect};
const t=t=>{let e=[];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e},e=t=>{let e=[];for(let a=0;a<t.length;a++){let i=t.charCodeAt(a);i<=255&&e.push(i)}return e},a=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw new Error("Pack format to Argument count mismatch");let i=[],s=!0;const r=(t,e)=>{for(let a=0;a<e;a++)s?i.push(t>>8*a&255):i.push(t>>8*(e-a)&255)};for(let i=0;i<t.length;i++)if("<"==t[i])s=!0;else if(">"==t[i])s=!1;else if("B"==t[i])r(e[a],1),a++;else if("H"==t[i])r(e[a],2),a++;else{if("I"!=t[i])throw new Error(`Unhandled character "${t[i]}" in pack format`);r(e[a],4),a++}return i},i=(t,e)=>{let a=0,i=[];for(let s of t)if("B"==s)i.push(255&e[a]),a+=1;else if("H"==s)i.push(255&e[a]|(255&e[a+1])<<8),a+=2;else{if("I"!=s)throw new Error(`Unhandled character "${s}" in unpack format`);i.push(255&e[a]|(255&e[a+1])<<8|(255&e[a+2])<<16|(255&e[a+3])<<24),a+=4}return i},s=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},r=t=>new Promise((e=>setTimeout(e,t))),n={"512KB":0,"256KB":16,"1MB":32,"2MB":48,"4MB":64,"2MB-c1":80,"4MB-c1":96,"8MB":128,"16MB":144},l={"1MB":0,"2MB":16,"4MB":32,"8MB":48,"16MB":64,"32MB":25,"64MB":26},o=2,h=0,d={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},f=e(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),c=33382,_=50,u=12882,g=12835,w={[-999167]:{name:"ESP8266",family:c},15736195:{name:"ESP32",family:_},1990:{name:"ESP32-S2",family:u},9:{name:"ESP32-S3",family:12883},3942662454:{name:"ESP32-S3(beta2)",family:12883},1763790959:{name:"ESP32-C3",family:g},456216687:{name:"ESP32-C3",family:g},3391540258:{name:"ESP32-H2",family:12914},228687983:{name:"ESP32-C6(beta)",family:12838}},m=(t,e)=>{let a=Math.floor(t*(e/486));return a<3e3?3e3:a},p=async t=>{let a;return t==_?a=await import("./esp32-9a0a29d9.js"):t==u?a=await import("./esp32s2-70924167.js"):t==c?a=await import("./esp8266-695df45b.js"):t==g&&(a=await import("./esp32c3-a57b2c5e.js")),{...a,text:e(atob(a.text)),data:e(atob(a.data))}};function b(t){let e=t.length;for(;--e>=0;)t[e]=0}const k=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]),y=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]),v=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),z=new Array(576);b(z);const S=new Array(60);b(S);const E=new Array(512);b(E);const U=new Array(256);b(U);const A=new Array(29);b(A);const R=new Array(30);function B(t,e,a,i,s){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=t&&t.length}let I,F,D;function O(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}b(R);const Z=t=>t<256?E[t]:E[256+(t>>>7)],C=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},T=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,C(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},M=(t,e,a)=>{T(t,a[2*e],a[2*e+1])},L=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},N=(t,e,a)=>{const i=new Array(16);let s,r,n=0;for(s=1;s<=15;s++)i[s]=n=n+a[s-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=L(i[e]++,e))}},P=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},H=t=>{t.bi_valid>8?C(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},$=(t,e,a,i)=>{const s=2*e,r=2*a;return t[s]<t[r]||t[s]===t[r]&&i[e]<=i[a]},j=(t,e,a)=>{const i=t.heap[a];let s=a<<1;for(;s<=t.heap_len&&(s<t.heap_len&&$(e,t.heap[s+1],t.heap[s],t.depth)&&s++,!$(e,i,t.heap[s],t.depth));)t.heap[a]=t.heap[s],a=s,s<<=1;t.heap[a]=i},W=(t,e,a)=>{let i,s,r,n,l=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*l]<<8|t.pending_buf[t.d_buf+2*l+1],s=t.pending_buf[t.l_buf+l],l++,0===i?M(t,s,e):(r=U[s],M(t,r+256+1,e),n=k[r],0!==n&&(s-=A[r],T(t,s,n)),i--,r=Z(i),M(t,r,a),n=y[r],0!==n&&(i-=R[r],T(t,i,n)))}while(l<t.last_lit);M(t,256,e)},K=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,l,o,h=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=h=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)o=t.heap[++t.heap_len]=h<2?++h:0,a[2*o]=1,t.depth[o]=0,t.opt_len--,s&&(t.static_len-=i[2*o+1]);for(e.max_code=h,n=t.heap_len>>1;n>=1;n--)j(t,a,n);o=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],j(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=l,a[2*o]=a[2*n]+a[2*l],t.depth[o]=(t.depth[n]>=t.depth[l]?t.depth[n]:t.depth[l])+1,a[2*n+1]=a[2*l+1]=o,t.heap[1]=o++,j(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,s=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,o=e.stat_desc.max_length;let h,d,f,c,_,u,g=0;for(c=0;c<=15;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],c=a[2*a[2*d+1]+1]+1,c>o&&(c=o,g++),a[2*d+1]=c,d>i||(t.bl_count[c]++,_=0,d>=l&&(_=n[d-l]),u=a[2*d],t.opt_len+=u*(c+_),r&&(t.static_len+=u*(s[2*d+1]+_)));if(0!==g){do{for(c=o-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[o]--,g-=2}while(g>0);for(c=o;0!==c;c--)for(d=t.bl_count[c];0!==d;)f=t.heap[--h],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),d--)}})(t,e),N(a,h,t.bl_count)},Y=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)s=n,n=e[2*(i+1)+1],++l<o&&s===n||(l<h?t.bl_tree[2*s]+=l:0!==s?(s!==r&&t.bl_tree[2*s]++,t.bl_tree[32]++):l<=10?t.bl_tree[34]++:t.bl_tree[36]++,l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4))},G=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),i=0;i<=a;i++)if(s=n,n=e[2*(i+1)+1],!(++l<o&&s===n)){if(l<h)do{M(t,s,t.bl_tree)}while(0!=--l);else 0!==s?(s!==r&&(M(t,s,t.bl_tree),l--),M(t,16,t.bl_tree),T(t,l-3,2)):l<=10?(M(t,17,t.bl_tree),T(t,l-3,3)):(M(t,18,t.bl_tree),T(t,l-11,7));l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4)}};let q=!1;const X=(t,e,a,i)=>{T(t,0+(i?1:0),3),((t,e,a,i)=>{H(t),i&&(C(t,a),C(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var J={_tr_init:t=>{q||((()=>{let t,e,a,i,s;const r=new Array(16);for(a=0,i=0;i<28;i++)for(A[i]=a,t=0;t<1<<k[i];t++)U[a++]=i;for(U[a-1]=i,s=0,i=0;i<16;i++)for(R[i]=s,t=0;t<1<<y[i];t++)E[s++]=i;for(s>>=7;i<30;i++)for(R[i]=s<<7,t=0;t<1<<y[i]-7;t++)E[256+s++]=i;for(e=0;e<=15;e++)r[e]=0;for(t=0;t<=143;)z[2*t+1]=8,t++,r[8]++;for(;t<=255;)z[2*t+1]=9,t++,r[9]++;for(;t<=279;)z[2*t+1]=7,t++,r[7]++;for(;t<=287;)z[2*t+1]=8,t++,r[8]++;for(N(z,287,r),t=0;t<30;t++)S[2*t+1]=5,S[2*t]=L(t,5);I=new B(z,k,257,286,15),F=new B(S,y,0,30,15),D=new B(new Array(0),v,0,19,7)})(),q=!0),t.l_desc=new O(t.dyn_ltree,I),t.d_desc=new O(t.dyn_dtree,F),t.bl_desc=new O(t.bl_tree,D),t.bi_buf=0,t.bi_valid=0,P(t)},_tr_stored_block:X,_tr_flush_block:(t,e,a,i)=>{let s,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),K(t,t.l_desc),K(t,t.d_desc),n=(t=>{let e;for(Y(t,t.dyn_ltree,t.l_desc.max_code),Y(t,t.dyn_dtree,t.d_desc.max_code),K(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*x[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=a+5,a+4<=s&&-1!==e?X(t,e,a,i):4===t.strategy||r===s?(T(t,2+(i?1:0),3),W(t,z,S)):(T(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(T(t,e-257,5),T(t,a-1,5),T(t,i-4,4),s=0;s<i;s++)T(t,t.bl_tree[2*x[s]+1],3);G(t,t.dyn_ltree,e-1),G(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),W(t,t.dyn_ltree,t.dyn_dtree)),P(t),i&&H(t)},_tr_tally:(t,e,a)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(U[a]+256+1)]++,t.dyn_dtree[2*Z(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{T(t,2,3),M(t,256,z),(t=>{16===t.bi_valid?(C(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var Q=(t,e,a,i)=>{let s=65535&t|0,r=t>>>16&65535|0,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{s=s+e[i++]|0,r=r+s|0}while(--n);s%=65521,r%=65521}return s|r<<16|0};const V=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var tt=(t,e,a,i)=>{const s=V,r=i+a;t^=-1;for(let a=i;a<r;a++)t=t>>>8^s[255&(t^e[a])];return-1^t},et={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"},at={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:it,_tr_stored_block:st,_tr_flush_block:rt,_tr_tally:nt,_tr_align:lt}=J,{Z_NO_FLUSH:ot,Z_PARTIAL_FLUSH:ht,Z_FULL_FLUSH:dt,Z_FINISH:ft,Z_BLOCK:ct,Z_OK:_t,Z_STREAM_END:ut,Z_STREAM_ERROR:gt,Z_DATA_ERROR:wt,Z_BUF_ERROR:mt,Z_DEFAULT_COMPRESSION:pt,Z_FILTERED:bt,Z_HUFFMAN_ONLY:kt,Z_RLE:yt,Z_FIXED:vt,Z_DEFAULT_STRATEGY:xt,Z_UNKNOWN:zt,Z_DEFLATED:St}=at,Et=(t,e)=>(t.msg=et[e],e),Ut=t=>(t<<1)-(t>4?9:0),At=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let Rt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Bt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},It=(t,e)=>{rt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Bt(t.strm)},Ft=(t,e)=>{t.pending_buf[t.pending++]=e},Dt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Ot=(t,e,a,i)=>{let s=t.avail_in;return s>i&&(s=i),0===s?0:(t.avail_in-=s,e.set(t.input.subarray(t.next_in,t.next_in+s),a),1===t.state.wrap?t.adler=Q(t.adler,e,s,a):2===t.state.wrap&&(t.adler=tt(t.adler,e,s,a)),t.next_in+=s,t.total_in+=s,s)},Zt=(t,e)=>{let a,i,s=t.max_chain_length,r=t.strstart,n=t.prev_length,l=t.nice_match;const o=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,f=t.prev,c=t.strstart+258;let _=h[r+n-1],u=h[r+n];t.prev_length>=t.good_match&&(s>>=2),l>t.lookahead&&(l=t.lookahead);do{if(a=e,h[a+n]===u&&h[a+n-1]===_&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<c);if(i=258-(c-r),r=c-258,i>n){if(t.match_start=e,n=i,i>=l)break;_=h[r+n-1],u=h[r+n]}}}while((e=f[e&d])>o&&0!=--s);return n<=t.lookahead?n:t.lookahead},Ct=t=>{const e=t.w_size;let a,i,s,r,n;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{s=t.head[--a],t.head[a]=s>=e?s-e:0}while(--i);i=e,a=i;do{s=t.prev[--a],t.prev[a]=s>=e?s-e:0}while(--i);r+=e}if(0===t.strm.avail_in)break;if(i=Ot(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=i,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=Rt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=Rt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},Tt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(Ct(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=nt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+1]);else i=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2},Mt=(t,e)=>{let a,i,s;for(;;){if(t.lookahead<262){if(Ct(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=Zt(t,a),t.match_length<=5&&(t.strategy===bt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){s=t.strstart+t.lookahead-3,i=nt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=s&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(It(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=nt(t,0,t.window[t.strstart-1]),i&&It(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=nt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2};function Lt(t,e,a,i,s){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=s}const Nt=[new Lt(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Ct(t),0===t.lookahead&&e===ot)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,It(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(It(t,!1),t.strm.avail_out),1)})),new Lt(4,4,8,4,Tt),new Lt(4,5,16,8,Tt),new Lt(4,6,32,32,Tt),new Lt(4,4,16,16,Mt),new Lt(8,16,32,32,Mt),new Lt(8,16,128,128,Mt),new Lt(8,32,128,256,Mt),new Lt(32,128,258,1024,Mt),new Lt(32,258,258,4096,Mt)];function Pt(){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=St,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),At(this.dyn_ltree),At(this.dyn_dtree),At(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),At(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),At(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ht=t=>{if(!t||!t.state)return Et(t,gt);t.total_in=t.total_out=0,t.data_type=zt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=ot,it(e),_t},$t=t=>{const e=Ht(t);var a;return e===_t&&((a=t.state).window_size=2*a.w_size,At(a.head),a.max_lazy_match=Nt[a.level].max_lazy,a.good_match=Nt[a.level].good_length,a.nice_match=Nt[a.level].nice_length,a.max_chain_length=Nt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},jt=(t,e,a,i,s,r)=>{if(!t)return gt;let n=1;if(e===pt&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||a!==St||i<8||i>15||e<0||e>9||r<0||r>vt)return Et(t,gt);8===i&&(i=9);const l=new Pt;return t.state=l,l.strm=t,l.wrap=n,l.gzhead=null,l.w_bits=i,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+3-1)/3),l.window=new Uint8Array(2*l.w_size),l.head=new Uint16Array(l.hash_size),l.prev=new Uint16Array(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new Uint8Array(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=r,l.method=a,$t(t)};var Wt={deflateInit:(t,e)=>jt(t,e,St,15,8,xt),deflateInit2:jt,deflateReset:$t,deflateResetKeep:Ht,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?gt:(t.state.gzhead=e,_t):gt,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>ct||e<0)return t?Et(t,gt):gt;const s=t.state;if(!t.output||!t.input&&0!==t.avail_in||666===s.status&&e!==ft)return Et(t,0===t.avail_out?mt:gt);s.strm=t;const r=s.last_flush;if(s.last_flush=e,42===s.status)if(2===s.wrap)t.adler=0,Ft(s,31),Ft(s,139),Ft(s,8),s.gzhead?(Ft(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),Ft(s,255&s.gzhead.time),Ft(s,s.gzhead.time>>8&255),Ft(s,s.gzhead.time>>16&255),Ft(s,s.gzhead.time>>24&255),Ft(s,9===s.level?2:s.strategy>=kt||s.level<2?4:0),Ft(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(Ft(s,255&s.gzhead.extra.length),Ft(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=tt(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,9===s.level?2:s.strategy>=kt||s.level<2?4:0),Ft(s,3),s.status=113);else{let e=St+(s.w_bits-8<<4)<<8,a=-1;a=s.strategy>=kt||s.level<2?0:s.level<6?1:6===s.level?2:3,e|=a<<6,0!==s.strstart&&(e|=32),e+=31-e%31,s.status=113,Dt(s,e),0!==s.strstart&&(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),t.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending!==s.pending_buf_size));)Ft(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,Ft(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,Ft(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Bt(t),s.pending+2<=s.pending_buf_size&&(Ft(s,255&t.adler),Ft(s,t.adler>>8&255),t.adler=0,s.status=113)):s.status=113),0!==s.pending){if(Bt(t),0===t.avail_out)return s.last_flush=-1,_t}else if(0===t.avail_in&&Ut(e)<=Ut(r)&&e!==ft)return Et(t,mt);if(666===s.status&&0!==t.avail_in)return Et(t,mt);if(0!==t.avail_in||0!==s.lookahead||e!==ot&&666!==s.status){let a=s.strategy===kt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ct(t),0===t.lookahead)){if(e===ot)return 1;break}if(t.match_length=0,a=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):s.strategy===yt?((t,e)=>{let a,i,s,r;const n=t.window;for(;;){if(t.lookahead<=258){if(Ct(t),t.lookahead<=258&&e===ot)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(s=t.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){r=t.strstart+258;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<r);t.match_length=258-(r-s),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=nt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):Nt[s.level].func(s,e);if(3!==a&&4!==a||(s.status=666),1===a||3===a)return 0===t.avail_out&&(s.last_flush=-1),_t;if(2===a&&(e===ht?lt(s):e!==ct&&(st(s,0,0,!1),e===dt&&(At(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),Bt(t),0===t.avail_out))return s.last_flush=-1,_t}return e!==ft?_t:s.wrap<=0?ut:(2===s.wrap?(Ft(s,255&t.adler),Ft(s,t.adler>>8&255),Ft(s,t.adler>>16&255),Ft(s,t.adler>>24&255),Ft(s,255&t.total_in),Ft(s,t.total_in>>8&255),Ft(s,t.total_in>>16&255),Ft(s,t.total_in>>24&255)):(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),Bt(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?_t:ut)},deflateEnd:t=>{if(!t||!t.state)return gt;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?Et(t,gt):(t.state=null,113===e?Et(t,wt):_t)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return gt;const i=t.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return gt;if(1===s&&(t.adler=Q(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===s&&(At(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const r=t.avail_in,n=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ct(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=Rt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ct(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,t.next_in=n,t.input=l,t.avail_in=r,i.wrap=s,_t},deflateInfo:"pako deflate (from Nodeca project)"};const Kt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Yt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Kt(a,e)&&(t[e]=a[e])}}return t},Gt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,s=t.length;e<s;e++){let s=t[e];a.set(s,i),i+=s.length}return a};let qt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){qt=!1}const Xt=new Uint8Array(256);for(let t=0;t<256;t++)Xt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Xt[254]=Xt[254]=1;var Jt=t=>{let e,a,i,s,r,n=t.length,l=0;for(s=0;s<n;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(l),r=0,s=0;r<l;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e},Qt=(t,e)=>{let a,i;const s=e||t.length,r=new Array(2*s);for(i=0,a=0;a<s;){let e=t[a++];if(e<128){r[i++]=e;continue}let n=Xt[e];if(n>4)r[i++]=65533,a+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&a<s;)e=e<<6|63&t[a++],n--;n>1?r[i++]=65533:e<65536?r[i++]=e:(e-=65536,r[i++]=55296|e>>10&1023,r[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&qt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(r,i)},Vt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Xt[t[a]]>e?a:e};var te=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 ee=Object.prototype.toString,{Z_NO_FLUSH:ae,Z_SYNC_FLUSH:ie,Z_FULL_FLUSH:se,Z_FINISH:re,Z_OK:ne,Z_STREAM_END:le,Z_DEFAULT_COMPRESSION:oe,Z_DEFAULT_STRATEGY:he,Z_DEFLATED:de}=at;function fe(t){this.options=Yt({level:oe,method:de,chunkSize:16384,windowBits:15,memLevel:8,strategy:he},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new te,this.strm.avail_out=0;let a=Wt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ne)throw new Error(et[a]);if(e.header&&Wt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Jt(e.dictionary):"[object ArrayBuffer]"===ee.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Wt.deflateSetDictionary(this.strm,t),a!==ne)throw new Error(et[a]);this._dict_set=!0}}function ce(t,e){const a=new fe(e);if(a.push(t,!0),a.err)throw a.msg||et[a.err];return a.result}fe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let s,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?re:ae,"string"==typeof t?a.input=Jt(t):"[object ArrayBuffer]"===ee.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(r===ie||r===se)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(s=Wt.deflate(a,r),s===le)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),s=Wt.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===ne;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},fe.prototype.onData=function(t){this.chunks.push(t)},fe.prototype.onEnd=function(t){t===ne&&(this.result=Gt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var _e={Deflate:fe,deflate:ce,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ce(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ce(t,e)},constants:at};var ue=function(t,e){let a,i,s,r,n,l,o,h,d,f,c,_,u,g,w,m,p,b,k,y,v,x,z,S;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),s=t.next_out,S=t.output,r=s-(e-t.avail_out),n=s+(t.avail_out-257),l=E.dmax,o=E.wsize,h=E.whave,d=E.wnext,f=E.window,c=E.hold,_=E.bits,u=E.lencode,g=E.distcode,w=(1<<E.lenbits)-1,m=(1<<E.distbits)-1;t:do{_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=u[c&w];e:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,0===b)S[s++]=65535&p;else{if(!(16&b)){if(0==(64&b)){p=u[(65535&p)+(c&(1<<b)-1)];continue e}if(32&b){E.mode=12;break t}t.msg="invalid literal/length code",E.mode=30;break t}k=65535&p,b&=15,b&&(_<b&&(c+=z[a++]<<_,_+=8),k+=c&(1<<b)-1,c>>>=b,_-=b),_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=g[c&m];a:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,!(16&b)){if(0==(64&b)){p=g[(65535&p)+(c&(1<<b)-1)];continue a}t.msg="invalid distance code",E.mode=30;break t}if(y=65535&p,b&=15,_<b&&(c+=z[a++]<<_,_+=8,_<b&&(c+=z[a++]<<_,_+=8)),y+=c&(1<<b)-1,y>l){t.msg="invalid distance too far back",E.mode=30;break t}if(c>>>=b,_-=b,b=s-r,y>b){if(b=y-b,b>h&&E.sane){t.msg="invalid distance too far back",E.mode=30;break t}if(v=0,x=f,0===d){if(v+=o-b,b<k){k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}}else if(d<b){if(v+=o+d-b,b-=d,b<k){k-=b;do{S[s++]=f[v++]}while(--b);if(v=0,d<k){b=d,k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}}}else if(v+=d-b,b<k){k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}for(;k>2;)S[s++]=x[v++],S[s++]=x[v++],S[s++]=x[v++],k-=3;k&&(S[s++]=x[v++],k>1&&(S[s++]=x[v++]))}else{v=s-y;do{S[s++]=S[v++],S[s++]=S[v++],S[s++]=S[v++],k-=3}while(k>2);k&&(S[s++]=S[v++],k>1&&(S[s++]=S[v++]))}break}}break}}while(a<i&&s<n);k=_>>3,a-=k,_-=k<<3,c&=(1<<_)-1,t.next_in=a,t.next_out=s,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=s<n?n-s+257:257-(s-n),E.hold=c,E.bits=_};const ge=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]),we=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]),me=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]),pe=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 be=(t,e,a,i,s,r,n,l)=>{const o=l.bits;let h,d,f,c,_,u,g=0,w=0,m=0,p=0,b=0,k=0,y=0,v=0,x=0,z=0,S=null,E=0;const U=new Uint16Array(16),A=new Uint16Array(16);let R,B,I,F=null,D=0;for(g=0;g<=15;g++)U[g]=0;for(w=0;w<i;w++)U[e[a+w]]++;for(b=o,p=15;p>=1&&0===U[p];p--);if(b>p&&(b=p),0===p)return s[r++]=20971520,s[r++]=20971520,l.bits=1,0;for(m=1;m<p&&0===U[m];m++);for(b<m&&(b=m),v=1,g=1;g<=15;g++)if(v<<=1,v-=U[g],v<0)return-1;if(v>0&&(0===t||1!==p))return-1;for(A[1]=0,g=1;g<15;g++)A[g+1]=A[g]+U[g];for(w=0;w<i;w++)0!==e[a+w]&&(n[A[e[a+w]]++]=w);if(0===t?(S=F=n,u=19):1===t?(S=ge,E-=257,F=we,D-=257,u=256):(S=me,F=pe,u=-1),z=0,w=0,g=m,_=r,k=b,y=0,f=-1,x=1<<b,c=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){R=g-y,n[w]<u?(B=0,I=n[w]):n[w]>u?(B=F[D+n[w]],I=S[E+n[w]]):(B=96,I=0),h=1<<g-y,d=1<<k,m=d;do{d-=h,s[_+(z>>y)+d]=R<<24|B<<16|I|0}while(0!==d);for(h=1<<g-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,w++,0==--U[g]){if(g===p)break;g=e[a+n[w]]}if(g>b&&(z&c)!==f){for(0===y&&(y=b),_+=m,k=g-y,v=1<<k;k+y<p&&(v-=U[k+y],!(v<=0));)k++,v<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;f=z&c,s[f]=b<<24|k<<16|_-r|0}}return 0!==z&&(s[_+z]=g-y<<24|64<<16|0),l.bits=b,0};const{Z_FINISH:ke,Z_BLOCK:ye,Z_TREES:ve,Z_OK:xe,Z_STREAM_END:ze,Z_NEED_DICT:Se,Z_STREAM_ERROR:Ee,Z_DATA_ERROR:Ue,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Re,Z_DEFLATED:Be}=at,Ie=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Fe(){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 De=t=>{if(!t||!t.state)return Ee;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,xe},Oe=t=>{if(!t||!t.state)return Ee;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,De(t)},Ze=(t,e)=>{let a;if(!t||!t.state)return Ee;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Ee:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,Oe(t))},Ce=(t,e)=>{if(!t)return Ee;const a=new Fe;t.state=a,a.window=null;const i=Ze(t,e);return i!==xe&&(t.state=null),i};let Te,Me,Le=!0;const Ne=t=>{if(Le){Te=new Int32Array(512),Me=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(be(1,t.lens,0,288,Te,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;be(2,t.lens,0,32,Me,0,t.work,{bits:5}),Le=!1}t.lencode=Te,t.lenbits=9,t.distcode=Me,t.distbits=5},Pe=(t,e,a,i)=>{let s;const r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),i>=r.wsize?(r.window.set(e.subarray(a-r.wsize,a),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>i&&(s=i),r.window.set(e.subarray(a-i,a-i+s),r.wnext),(i-=s)?(r.window.set(e.subarray(a-i,a),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var He={inflateReset:Oe,inflateReset2:Ze,inflateResetKeep:De,inflateInit:t=>Ce(t,15),inflateInit2:Ce,inflate:(t,e)=>{let a,i,s,r,n,l,o,h,d,f,c,_,u,g,w,m,p,b,k,y,v,x,z=0;const S=new Uint8Array(4);let E,U;const A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return Ee;a=t.state,12===a.mode&&(a.mode=13),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,f=l,c=o,x=xe;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){a.check=0,S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=30;break}if((15&h)!==Be){t.msg="unknown compression method",a.mode=30;break}if(h>>>=4,d-=4,v=8+(15&h),0===a.wbits)a.wbits=v;else if(v>a.wbits){t.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,t.adler=a.check=1,a.mode=512&h?10:12,h=0,d=0;break;case 2:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==Be){t.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,a.check=tt(a.check,S,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(_=a.length,_>l&&(_=l),_&&(a.head&&(v=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(r,r+_),v)),512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,a.length-=_),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===l)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.name+=String.fromCharCode(v))}while(v&&_<l);if(512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,v)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===l)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.comment+=String.fromCharCode(v))}while(v&&_<l);if(512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,v)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=30;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}t.adler=a.check=Ie(h),h=0,d=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,Se;t.adler=a.check=1,a.mode=12;case 12:if(e===ye||e===ve)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Ne(a),a.mode=20,e===ve){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ve)break t;case 15:a.mode=16;case 16:if(_=a.length,_){if(_>l&&(_=l),_>o&&(_=o),0===_)break t;s.set(i.subarray(r,r+_),n),l-=_,r+=_,o-=_,n+=_,a.length-=_;break}a.mode=12;break;case 17:for(;d<14;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.lens[A[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[A[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=be(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(p<16)h>>>=w,d-=w,a.lens[a.have++]=p;else{if(16===p){for(U=w+2;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h>>>=w,d-=w,0===a.have){t.msg="invalid bit length repeat",a.mode=30;break}v=a.lens[a.have-1],_=3+(3&h),h>>>=2,d-=2}else if(17===p){for(U=w+3;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=3+(7&h),h>>>=3,d-=3}else{for(U=w+7;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=11+(127&h),h>>>=7,d-=7}if(a.have+_>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=30;break}for(;_--;)a.lens[a.have++]=v}}if(30===a.mode)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,E={bits:a.lenbits},x=be(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=be(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=30;break}if(a.mode=20,e===ve)break t;case 20:a.mode=21;case 21:if(l>=6&&o>=258){t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,ue(t,c),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(b=w,k=m,y=p;z=a.lencode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,a.length=p,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg="invalid literal/length code",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<<a.distbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(b=w,k=m,y=p;z=a.distcode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,64&m){t.msg="invalid distance code",a.mode=30;break}a.offset=p,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===o)break t;if(_=c-o,a.offset>_){if(_=a.offset-_,_>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=30;break}_>a.wnext?(_-=a.wnext,u=a.wsize-_):u=a.wnext-_,_>a.length&&(_=a.length),g=a.window}else g=s,u=n-a.offset,_=a.length;_>o&&(_=o),o-=_,a.length-=_;do{s[n++]=g[u++]}while(--_);0===a.length&&(a.mode=21);break;case 26:if(0===o)break t;s[n++]=a.length,o--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===l)break t;l--,h|=i[r++]<<d,d+=8}if(c-=o,t.total_out+=c,a.total+=c,c&&(t.adler=a.check=a.flags?tt(a.check,s,c,n-c):Q(a.check,s,c,n-c)),c=o,(a.flags?h:Ie(h))!==a.check){t.msg="incorrect data check",a.mode=30;break}h=0,d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=30;break}h=0,d=0}a.mode=29;case 29:x=ze;break t;case 30:x=Ue;break t;case 31:return Ae;case 32:default:return Ee}return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,(a.wsize||c!==t.avail_out&&a.mode<30&&(a.mode<27||e!==ke))&&Pe(t,t.output,t.next_out,c-t.avail_out),f-=t.avail_in,c-=t.avail_out,t.total_in+=f,t.total_out+=c,a.total+=c,a.wrap&&c&&(t.adler=a.check=a.flags?tt(a.check,s,c,t.next_out-c):Q(a.check,s,c,t.next_out-c)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===f&&0===c||e===ke)&&x===xe&&(x=Re),x},inflateEnd:t=>{if(!t||!t.state)return Ee;let e=t.state;return e.window&&(e.window=null),t.state=null,xe},inflateGetHeader:(t,e)=>{if(!t||!t.state)return Ee;const a=t.state;return 0==(2&a.wrap)?Ee:(a.head=e,e.done=!1,xe)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,s,r;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?Ee:11===i.mode&&(s=1,s=Q(s,e,a,0),s!==i.check)?Ue:(r=Pe(t,e,a,a),r?(i.mode=31,Ae):(i.havedict=1,xe))):Ee},inflateInfo:"pako inflate (from Nodeca project)"};var $e=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 je=Object.prototype.toString,{Z_NO_FLUSH:We,Z_FINISH:Ke,Z_OK:Ye,Z_STREAM_END:Ge,Z_NEED_DICT:qe,Z_STREAM_ERROR:Xe,Z_DATA_ERROR:Je,Z_MEM_ERROR:Qe}=at;function Ve(t){this.options=Yt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new te,this.strm.avail_out=0;let a=He.inflateInit2(this.strm,e.windowBits);if(a!==Ye)throw new Error(et[a]);if(this.header=new $e,He.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Jt(e.dictionary):"[object ArrayBuffer]"===je.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=He.inflateSetDictionary(this.strm,e.dictionary),a!==Ye)))throw new Error(et[a])}Ve.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let r,n,l;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Ke:We,"[object ArrayBuffer]"===je.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),r=He.inflate(a,n),r===qe&&s&&(r=He.inflateSetDictionary(a,s),r===Ye?r=He.inflate(a,n):r===Je&&(r=qe));a.avail_in>0&&r===Ge&&a.state.wrap>0&&0!==t[a.next_in];)He.inflateReset(a),r=He.inflate(a,n);switch(r){case Xe:case Je:case qe:case Qe:return this.onEnd(r),this.ended=!0,!1}if(l=a.avail_out,a.next_out&&(0===a.avail_out||r===Ge))if("string"===this.options.to){let t=Vt(a.output,a.next_out),e=a.next_out-t,s=Qt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(s)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(r!==Ye||0!==l){if(r===Ge)return r=He.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Ve.prototype.onData=function(t){this.chunks.push(t)},Ve.prototype.onEnd=function(t){t===Ye&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Gt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:ta,deflate:ea,deflateRaw:aa,gzip:ia}=_e;var sa=ea;class ra extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.stopReadLoop=!1,this.flashSize=null}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t,e=await this.readRegister(1073745920),a=w[e];if(void 0===a)throw new Error(`Unknown Chip: Hex: ${s(e,8).toLowerCase()} Number: ${e}`);this.chipName=a.name,this.chipFamily=a.family,this.chipFamily==c?t=1072693328:(this.chipFamily==_||this.chipFamily==u)&&(t=1610719232);for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(t+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;!this.stopReadLoop;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected"),this.connected=!1,this.dispatchEvent(new Event("disconnect"))}this.logger.debug("Finished read loop")}async hardReset(t=!1){this.logger.log("Try hard reset."),await this.port.setSignals({dataTerminalReady:!1,requestToSend:!0}),await this.port.setSignals({dataTerminalReady:t,requestToSend:!1}),await new Promise((t=>setTimeout(t,1e3)))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],i=this._efuses[1],s=this._efuses[2],r=this._efuses[3];if(this.chipFamily==c){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(0==(i>>16&255))t=[24,254,52];else{if(1!=(i>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=i>>8&255,e[4]=255&i,e[5]=a>>24&255}else if(this.chipFamily==_)e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i;else{if(this.chipFamily!=u)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i}return e}async readRegister(t){this.debug&&this.logger.debug("Reading Register",t);let e=a("I",t),s=(await this.checkCommand(10,e))[0];return i("I",s)[0]}async checkCommand(t,e,a=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,a);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let l=0;if(this.IS_STUB||this.chipFamily==c?l=2:[_,u].includes(this.chipFamily)?l=4:[2,4].includes(n.length)&&(l=n.length),n.length<l)throw new Error("Didn't get enough status bytes");let o=n.slice(-l,n.length);if(n=n.slice(0,-l),this.debug&&(this.logger.debug("status",o),this.logger.debug("value",r),this.logger.debug("data",n)),1==o[0])throw 5==o[1]?new Error("Invalid (unsupported) command "+s(t)):new Error("Command failure error code "+s(o[1]));return[r,n]}async sendCommand(e,i,s=0){this._inputBuffer.length=0;let r=[192,0];r.push(e),r=r.concat(a("H",i.length)),r=r.concat(t(a("I",s))),r=r.concat(t(i)),r.push(192),this.debug&&this.logger.debug("Writing "+r.length+" byte"+(1==r.length?"":"s")+":",r),await this.writeToStream(r)}async getResponse(t,e=3e3){let a=[],i=0,s=!1,n=Date.now();for(;Date.now()-n<e;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?s=!0:s?(221==t?a.push(220):220==t?a.push(192):a=a.concat([219,t]),s=!1):a.push(t)}else await r(10);if(a.length>0&&192!=a[0]&&a.shift(),a.length>1&&1!=a[1]&&a.shift(),a.length>2&&a[2]!=t&&a.shift(),a.length>4&&(i=a[3]+(a[4]<<8)),a.length==i+10)break}if(a.length!=i+10)return this.logger.log("Timed out after "+e+" milliseconds"),[null,null];this.debug&&this.logger.debug("Reading "+a.length+" byte"+(1==a.length?"":"s")+":",a);let l=a.slice(5,9),o=a.slice(9,-1);return this.debug&&this.logger.debug("value:",l,"data:",o),[l,o]}async readBuffer(t=3e3){let e=[],a=!1,i=Date.now();for(;Date.now()-i<t;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?a=!0:a?(221==t?e.push(220):220==t?e.push(192):e=e.concat([219,t]),a=!1):e.push(t)}else await r(10);if(e.length>0&&192!=e[0]&&e.shift(),e.length>1&&192==e[e.length-1])break}if(e.length<2)return this.logger.log("Timed out after "+t+" milliseconds"),null;this.debug&&this.logger.debug("Reading "+e.length+" byte"+(1==e.length?"":"s")+":",e);let s=e.slice(1,-1);return this.debug&&this.logger.debug("data:",s),s}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==c)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=a("<II",t,this.IS_STUB?115200:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e,a;try{this.stopReadLoop=!0,await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),null===(a=this._reader)||void 0===a||a.releaseLock(),await this.port.close(),await this.port.open({baudRate:t}),this.stopReadLoop=!1,this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(await this._sync())return await r(100),!0;await r(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,f);for(let t=0;t<8;t++){let[t,e]=await this.getResponse(8,100);if(null!==e&&(e.length>1&&0==e[0]&&0==e[1]))return!0}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,a=0,i=!1){this.updateImageFlashParams(a,t);let r,n=t.byteLength,l=0;i?(r=sa(new Uint8Array(t),{level:9}).buffer,l=r.byteLength,this.logger.log(`Writing data with filesize: ${n}. Compressed Size: ${l}`),await this.flashDeflBegin(n,l,a)):(this.logger.log(`Writing data with filesize: ${n}`),r=t,await this.flashBegin(n,a));let o=[],h=0,d=0,f=0,c=Date.now(),_=this.getFlashWriteSize(),u=i?l:n;for(;u-f>0;)this.debug&&this.logger.log(`Writing at ${s(a+h*_,8)} `),u-f>=_?o=Array.from(new Uint8Array(r,f,_)):(o=Array.from(new Uint8Array(r,f,u-f)),i||(o=o.concat(new Array(_-o.length).fill(255)))),i?await this.flashDeflBlock(o,h,2e3):await this.flashBlock(o,h,2e3),h+=1,d+=i?Math.round(o.length*n/l):o.length,f+=_,e(d,u);this.logger.log("Took "+(Date.now()-c)+"ms to write "+u+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,i=100){await this.checkCommand(3,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t),i)}async flashDeflBlock(t,e,i=100){await this.checkCommand(17,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async flashBegin(t=0,e=0,i=!1){let r,n,l=this.getFlashWriteSize();[_,u].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0)),this.chipFamily==_&&(n=a("<IIIIII",0,this._flashsize,65536,4096,256,65535),await this.checkCommand(11,n));let o,h=Math.floor((t+l-1)/l);r=this.chipFamily==c?this.getEraseSize(e,t):t,o=this.IS_STUB?3e3:m(3e4,t);let d=Date.now();return n=a("<IIII",r,h,l,e),this.chipFamily==u&&(n=n.concat(a("<I",i?1:0))),this.logger.log("Erase size "+r+", blocks "+h+", block size "+l+", offset "+s(e,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,n,0,o),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-d)+"ms to erase "+h+" bytes"),h}async flashDeflBegin(t=0,e=0,i=0,s=!1){let r,n=this.getFlashWriteSize(),l=Math.floor((e+n-1)/n),o=Math.floor((t+n-1)/n),h=0,d=0;return this.IS_STUB?(h=t,d=3e3):(h=o*n,d=m(3e4,h)),r=a("<IIII",h,l,n,i),await this.checkCommand(16,r,0,d),l}async flashFinish(){let t=a("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=a("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){var t;return this.chipFamily==_||(null===(t=this._parent)||void 0===t?void 0:t.chipFamily)==_?4096:0}updateImageFlashParams(t,e){if(e.byteLength<8)return e;var i=Array.from(new Uint8Array(e,0,4));let r=i[0],d=i[2],f=i[3];if(this.logger.debug(`Image header, Magic=${s(r)}, FlashMode=${s(d)}, FlashSizeFreq=${s(f)}`),t!=this.getBootloaderOffset())return e;if(233!=r)return this.logger.log("Warning: Image file at %s doesn't look like an image file, so not changing any flash settings.",s(t,4)),e;this.logger.log("Image being flashed is a bootloader");let w=o,m=h,p=(t=>{switch(t){case _:case u:return l;case c:return n;case g:return l;default:return n}})(this.getChipFamily())[this.flashSize?this.flashSize:"4MB"],b=a("BB",w,p+m),k=new Uint8Array(e,2,2);return b[0]!=k[0]||b[1]!=k[1]?(k[0]=b[0],k[1]=b[1],this.logger.log(`Patching Flash parameters header bytes to ${s(b[0],2)} ${s(b[1],2)}`)):this.logger.log("Flash parameters header did not need patching."),e}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,i=4294967295,s=0,r=0){let n=a("<IIII",t,e,i,s);r>0&&n.concat(a("<IIII",(t=>{switch(t){case _:case u:case c:return 1610612856;default:return-1}})(this.getChipFamily()),0,0,r)),await this.checkCommand(9,n)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let i=t.regBase+t.mosiDlenOffs,s=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(i,e-1),a>0&&await this.writeRegister(s,a-1)}else{let i=t.regBase+t.usr1Offs,s=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(i,s)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,a=0){let r=(t=>{switch(t){case _:case u:return{regBase:1072963584,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128};case c:return{regBase:1610613248,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64};case g:return{regBase:1610620928,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88};default:return{regBase:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1}}})(this.getChipFamily()),n=r.regBase,l=n+0,o=n+r.usrOffs,h=n+r.usr2Offs,d=n+r.w0Offs,f=1<<18;if(a>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let w=8*e.length,m=await this.readRegister(o),p=await this.readRegister(h),b=1<<31;if(a>0&&(b|=268435456),w>0&&(b|=134217728),await this.setDataLengths(r,w,a),await this.writeRegister(o,b),await this.writeRegister(h,7<<28|t),0==w)await this.writeRegister(d,0);else{e.concat(new Array(e.length%4).fill(0));let t=i("I".repeat(Math.floor(e.length/4)),e),a=d;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${s(e)} to register offset ${s(a)}`),await this.writeRegister(a,e),a+=4}await this.writeRegister(l,f),await this.waitDone(l,f);let k=await this.readRegister(d);return await this.writeRegister(o,m),await this.writeRegister(h,p),k}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,a=t>>16&255;this.logger.debug(`FlashId: ${s(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${a.toString(16)}`),this.flashSize=d[a],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,i=Math.floor((e+a-1)/a),s=16-Math.floor(t/a)%16;return i<s&&(s=i),i<2*s?Math.floor((i+1)/2*a):(i-s)*a}async memBegin(t,e,i,s){return await this.checkCommand(5,a("<IIII",t,e,i,s))}async memBlock(t,e){return await this.checkCommand(7,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?3e3:50,i=a("<II",0==t?1:0,t);return await this.checkCommand(6,i,0,e)}async runStub(){const t=await p(this.chipFamily);let e=2048;this.logger.log("Uploading stub...");for(let a of["text","data"])if(Object.keys(t).includes(a)){let i=t[a+"_start"],s=t[a].length,r=Math.floor((s+e-1)/e);await this.memBegin(s,r,e,i);for(let i of Array(r).keys()){let r=i*e,n=r+e;n>s&&(n=s),await this.memBlock(t[a].slice(r,n),i)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const a=await this.readBuffer(100),i=String.fromCharCode(...a);if("OHAI"!=i)throw new Error("Failed to start stub. Unexpected response: "+i);this.logger.log("Stub is now running...");const s=new na(this.port,this.logger,this);return await s.detectFlashSize(),s}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(this._reader&&await this._reader.cancel(),await this.port.writable.getWriter().close(),await this.port.close(),this.connected=!1)}}class na extends ra{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,a,i){let r=await p(this.chipFamily),n=i,l=i+t;console.log(n,l),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&l>t)throw new Error("Software loader is resident at "+s(t,8)+"-"+s(e,8)+". Can't load binary at overlapping address range "+s(n,8)+"-"+s(l,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,6e5)}}const la=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:115200}),t.log("Connected successfully."),new ra(e,t)};export{_ as CHIP_FAMILY_ESP32,g as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32S2,c as CHIP_FAMILY_ESP8266,ra as ESPLoader,la as connect};
{
"name": "esp-web-flasher",
"version": "3.1.2",
"version": "3.1.3",
"description": "Flash ESP devices using WebSerial",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -27,2 +27,4 @@ import { toByteArray } from "./util";

"16MB": 0x40,
"32MB": 0x19,
"64MB": 0x1a,
};

@@ -56,2 +58,17 @@

export const getFlashSizes = (chipFamily: ChipFamily) => {
switch (chipFamily) {
case CHIP_FAMILY_ESP32:
return ESP32_FLASH_SIZES;
case CHIP_FAMILY_ESP32S2:
return ESP32_FLASH_SIZES;
case CHIP_FAMILY_ESP8266:
return FLASH_SIZES;
case CHIP_FAMILY_ESP32C3:
return ESP32_FLASH_SIZES;
default:
return FLASH_SIZES;
}
};
export const FLASH_WRITE_SIZE = 0x400;

@@ -81,2 +98,10 @@ export const STUB_FLASH_WRITE_SIZE = 0x4000;

export const ESP32C3_SPI_REG_BASE = 0x60002000;
export const ESP32C3_SPI_USR_OFFS = 0x18;
export const ESP32C3_SPI_USR1_OFFS = 0x1c;
export const ESP32C3_SPI_USR2_OFFS = 0x20;
export const ESP32C3_SPI_MOSI_DLEN_OFFS = 0x24;
export const ESP32C3_SPI_MISO_DLEN_OFFS = 0x28;
export const ESP32C3_SPI_W0_OFFS = 0x58;
const UART_DATE_REG_ADDR = 0x60000078;

@@ -116,3 +141,3 @@

export const CHIP_DETECT_MAGIC_VALUES = {
0xfff0c101: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
[-999167]: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },

@@ -214,2 +239,12 @@ 0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },

};
case CHIP_FAMILY_ESP32C3:
return {
regBase: ESP32C3_SPI_REG_BASE,
usrOffs: ESP32C3_SPI_USR_OFFS,
usr1Offs: ESP32C3_SPI_USR1_OFFS,
usr2Offs: ESP32C3_SPI_USR2_OFFS,
mosiDlenOffs: ESP32C3_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32C3_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32C3_SPI_W0_OFFS,
};
default:

@@ -216,0 +251,0 @@ return {

@@ -41,4 +41,3 @@ import {

ESP_IMAGE_MAGIC,
FLASH_SIZES,
ESP32_FLASH_SIZES,
getFlashSizes,
FLASH_FREQUENCIES,

@@ -102,3 +101,8 @@ FLASH_MODES,

if (chip === undefined) {
throw new Error(`Unknown Chip: ${toHex(chipMagicValue)}`);
throw new Error(
`Unknown Chip: Hex: ${toHex(
chipMagicValue,
8
).toLowerCase()} Number: ${chipMagicValue}`
);
}

@@ -835,6 +839,9 @@ this.chipName = chip.name;

let flashMode = FLASH_MODES["dio"]; // For now we always select dio, a common value supported by many flash chips and ESP boards
let flashFreq = FLASH_FREQUENCIES["40m"]; // For now we always select 40m, a common value supported by many flash chips and ESP boards
let flashSize =
this.getFlashSizes()[this.flashSize ? this.flashSize : "4MB"]; // If size was autodetected we use it otherwise we default to 4MB
// For now we always select dio, a common value supported by many flash chips and ESP boards
let flashMode = FLASH_MODES["dio"];
// For now we always select 40m, a common value supported by many flash chips and ESP boards
let flashFreq = FLASH_FREQUENCIES["40m"];
let flashSize = getFlashSizes(this.getChipFamily())[
this.flashSize ? this.flashSize : "4MB"
]; // If size was autodetected we use it otherwise we default to 4MB
let flashParams = pack("BB", flashMode, flashSize + flashFreq);

@@ -862,9 +869,2 @@ let imageFlashParams = new Uint8Array(image, 2, 2);

getFlashSizes() {
if (this.getChipFamily() == CHIP_FAMILY_ESP32) {
return ESP32_FLASH_SIZES;
}
return FLASH_SIZES;
}
async flashId() {

@@ -871,0 +871,0 @@ let SPIFLASH_RDID = 0x9f;

@@ -11,2 +11,3 @@ import { ESP_ROM_BAUD, Logger } from "./const";

CHIP_FAMILY_ESP8266,
CHIP_FAMILY_ESP32C3,
} from "./const";

@@ -13,0 +14,0 @@

@@ -6,2 +6,3 @@ import {

CHIP_FAMILY_ESP8266,
CHIP_FAMILY_ESP32C3
} from "../const";

@@ -35,2 +36,4 @@ import { toByteArray } from "../util";

stubcode = await import("./esp8266.json");
} else if (chipFamily == CHIP_FAMILY_ESP32C3) {
stubcode = await import("./esp32c3.json");
}

@@ -37,0 +40,0 @@

@@ -103,3 +103,8 @@ /**

export const toHex = (value: number, size = 2) => {
return "0x" + value.toString(16).toUpperCase().padStart(size, "0");
let hex = value.toString(16).toUpperCase();
if (hex.startsWith("-")) {
return "-0x" + hex.substring(1).padStart(size, "0");
} else {
return "0x" + hex.padStart(size, "0");
}
};

@@ -106,0 +111,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc