tasmota-esp-web-tools 8.3.2 → 8.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=async t=>{let n;import("./install-dialog-
|
|
1
|
+
const e=async t=>{let n;import("./install-dialog-D-i8CgJB.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile;const r=t.getAttribute("baud-rate");if(r){const e=parseInt(r,10);isNaN(e)||(o.baudRate=e)}else void 0!==t.baudRate&&(o.baudRate=t.baudRate);o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
|
|
@@ -414,7 +414,7 @@ import{l as e,o as t,_ as i,n,B as o,i as r,a,t as d,e as s,b as l,R as c,x as m
|
|
|
414
414
|
d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"
|
|
415
415
|
/>
|
|
416
416
|
</svg>
|
|
417
|
-
`,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ri=e=>"["+e.map(e=>Ti(e)).join(", ")+"]",Ti=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Si=e=>new Promise(t=>setTimeout(t,e)),Ai={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=1343410176,Fi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Li=33382,zi=50,Di=12882,Bi=12883,$i=12994,Ni=12995,Mi=12997,Pi=12998,Ui=207969,Hi=12914,Vi=12928,Wi={5:{name:"ESP32-C3",family:Ni},9:{name:"ESP32-S3",family:Bi},12:{name:"ESP32-C2",family:$i},13:{name:"ESP32-C6",family:Pi},16:{name:"ESP32-H2",family:Hi},18:{name:"ESP32-P4",family:Vi},20:{name:"ESP32-C61",family:Ui},23:{name:"ESP32-C5",family:Mi}},Xi={4293968129:{name:"ESP8266",family:Li},15736195:{name:"ESP32",family:zi},1990:{name:"ESP32-S2",family:Di},9:{name:"ESP32-S3",family:Bi},203546735:{name:"ESP32-C2",family:$i},1867591791:{name:"ESP32-C2",family:$i},2084675695:{name:"ESP32-C2",family:$i},456216687:{name:"ESP32-C3",family:Ni},1130455151:{name:"ESP32-C3",family:Ni},1216438383:{name:"ESP32-C3",family:Ni},1763790959:{name:"ESP32-C3",family:Ni},285294703:{name:"ESP32-C5",family:Mi},1607549039:{name:"ESP32-C5",family:Mi},1548751960:{name:"ESP32-C5",family:Mi},1675706479:{name:"ESP32-C5",family:Mi},752910447:{name:"ESP32-C6",family:Pi},606167151:{name:"ESP32-C61",family:Ui},871374959:{name:"ESP32-C61",family:Ui},1333878895:{name:"ESP32-C61",family:Ui},1913741423:{name:"ESP32-C61",family:Ui},2548236392:{name:"ESP32-H2",family:Hi},3619110528:{name:"ESP32-H2",family:Hi},0:{name:"ESP32-P4",family:Vi},117676761:{name:"ESP32-P4",family:Vi},182303440:{name:"ESP32-P4",family:Vi}},Yi=3e3,Gi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Yi?Yi:i},ji=e=>{switch(e){case zi:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Bi:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Li:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case $i:case Ni:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Mi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Pi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Vi:return{regBase:1342754816,baseFuse:Oi,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class Ki extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Zi=async(e,t)=>{let i;return e==zi?i=await import("./esp32-BNIFdu1P.js"):e==Di?i=await import("./esp32s2-Bk4mqADi.js"):e==Bi?i=await import("./esp32s3-Df3OUCOC.js"):e==Li?i=await import("./esp8266-CQFcqJ_a.js"):e==$i?i=await import("./esp32c2-BqxquOKw.js"):e==Ni?i=await import("./esp32c3-BOOqe8me.js"):e==Mi?i=await import("./esp32c5-mcj52-K1.js"):e==Pi?i=await import("./esp32c6-Cg5qYgg7.js"):e==Ui?i=await import("./esp32c61-CzCdsydk.js"):e==Hi?i=await import("./esp32h2-DZa_lpff.js"):e==Vi&&(i=null!=t&&t>=300?await import("./esp32p4r3-Cle9QJmZ.js"):await import("./esp32p4-DyGqUAeZ.js")),{...i,text:Ci(atob(i.text)),data:Ci(atob(i.data))}};function Qi(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ji=256,en=286,tn=30,nn=15,on=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]),rn=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),dn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sn=new Array(576);Qi(sn);const ln=new Array(60);Qi(ln);const cn=new Array(512);Qi(cn);const mn=new Array(256);Qi(mn);const hn=new Array(29);Qi(hn);const pn=new Array(tn);function un(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let fn,gn,bn;function _n(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Qi(pn);const xn=e=>e<256?cn[e]:cn[256+(e>>>7)],vn=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},yn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,vn(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},wn=(e,t,i)=>{yn(e,i[2*t],i[2*t+1])},kn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},En=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=nn;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=kn(n[t]++,t))}},In=e=>{let t;for(t=0;t<en;t++)e.dyn_ltree[2*t]=0;for(t=0;t<tn;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Cn=e=>{e.bi_valid>8?vn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Rn=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Tn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&Rn(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!Rn(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Sn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?wn(e,o,t):(r=mn[o],wn(e,r+Ji+1,t),a=on[r],0!==a&&(o-=hn[r],yn(e,o,a)),n--,r=xn(n),wn(e,r,i),a=rn[r],0!==a&&(n-=pn[r],yn(e,n,a)))}while(d<e.sym_next);wn(e,256,t)},An=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Tn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Tn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Tn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=nn;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),En(i,l,e.bl_count)},On=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Fn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{wn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(wn(e,o,e.bl_tree),d--),wn(e,16,e.bl_tree),yn(e,d-3,2)):d<=10?(wn(e,17,e.bl_tree),yn(e,d-3,3)):(wn(e,18,e.bl_tree),yn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let Ln=!1;const zn=(e,t,i,n)=>{yn(e,0+(n?1:0),3),Cn(e),vn(e,i),vn(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Dn=e=>{Ln||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(hn[n]=i,e=0;e<1<<on[n];e++)mn[i++]=n;for(mn[i-1]=n,o=0,n=0;n<16;n++)for(pn[n]=o,e=0;e<1<<rn[n];e++)cn[o++]=n;for(o>>=7;n<tn;n++)for(pn[n]=o<<7,e=0;e<1<<rn[n]-7;e++)cn[256+o++]=n;for(t=0;t<=nn;t++)r[t]=0;for(e=0;e<=143;)sn[2*e+1]=8,e++,r[8]++;for(;e<=255;)sn[2*e+1]=9,e++,r[9]++;for(;e<=279;)sn[2*e+1]=7,e++,r[7]++;for(;e<=287;)sn[2*e+1]=8,e++,r[8]++;for(En(sn,287,r),e=0;e<tn;e++)ln[2*e+1]=5,ln[2*e]=kn(e,5);fn=new un(sn,on,257,en,nn),gn=new un(ln,rn,0,tn,nn),bn=new un(new Array(0),an,0,19,7)})(),Ln=!0),e.l_desc=new _n(e.dyn_ltree,fn),e.d_desc=new _n(e.dyn_dtree,gn),e.bl_desc=new _n(e.bl_tree,bn),e.bi_buf=0,e.bi_valid=0,In(e)},Bn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Ji;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),An(e,e.l_desc),An(e,e.d_desc),a=(e=>{let t;for(On(e,e.dyn_ltree,e.l_desc.max_code),On(e,e.dyn_dtree,e.d_desc.max_code),An(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*dn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?zn(e,t,i,n):4===e.strategy||r===o?(yn(e,2+(n?1:0),3),Sn(e,sn,ln)):(yn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(yn(e,t-257,5),yn(e,i-1,5),yn(e,n-4,4),o=0;o<n;o++)yn(e,e.bl_tree[2*dn[o]+1],3);Fn(e,e.dyn_ltree,t-1),Fn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Sn(e,e.dyn_ltree,e.dyn_dtree)),In(e),n&&Cn(e)},$n=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(mn[i]+Ji+1)]++,e.dyn_dtree[2*xn(t)]++),e.sym_next===e.sym_end),Nn=e=>{yn(e,2,3),wn(e,256,sn),(e=>{16===e.bi_valid?(vn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},Mn={_tr_init:Dn,_tr_stored_block:zn,_tr_flush_block:Bn,_tr_tally:$n,_tr_align:Nn};var Pn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Un=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Hn=(e,t,i,n)=>{const o=Un,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Vn={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"},Wn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Xn,_tr_stored_block:Yn,_tr_flush_block:Gn,_tr_tally:qn,_tr_align:jn}=Mn,{Z_NO_FLUSH:Kn,Z_PARTIAL_FLUSH:Zn,Z_FULL_FLUSH:Qn,Z_FINISH:Jn,Z_BLOCK:eo,Z_OK:to,Z_STREAM_END:io,Z_STREAM_ERROR:no,Z_DATA_ERROR:oo,Z_BUF_ERROR:ro,Z_DEFAULT_COMPRESSION:ao,Z_FILTERED:so,Z_HUFFMAN_ONLY:lo,Z_RLE:co,Z_FIXED:mo,Z_DEFAULT_STRATEGY:ho,Z_UNKNOWN:po,Z_DEFLATED:uo}=Wn,fo=258,go=262,bo=42,_o=113,xo=666,vo=(e,t)=>(e.msg=Vn[t],t),yo=e=>2*e-(e>4?9:0),wo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ko=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let Eo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const Io=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Co=(e,t)=>{Gn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Io(e.strm)},Ro=(e,t)=>{e.pending_buf[e.pending++]=t},To=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},So=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Pn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Hn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ao=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-go?e.strstart-(e.w_size-go):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+fo;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=fo-(h-r),r=h-fo,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Oo=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-go)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ko(e),n+=t),0===e.strm.avail_in)break;if(i=So(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=Eo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=Eo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<go&&0!==e.strm.avail_in)},Fo=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Jn||t===Kn||i!==n+e.strm.avail_in))break;a=t===Jn&&i===n+e.strm.avail_in?1:0,Yn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Io(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(So(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==Kn&&t!==Jn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(So(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Jn)&&t!==Kn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Jn&&0===e.strm.avail_in&&i===n?1:0,Yn(e,e.block_start,i,a),e.block_start+=i,Io(e.strm)),a?3:1)},Lo=(e,t)=>{let i,n;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2},zo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i),e.match_length<=5&&(e.strategy===so||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Co(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Co(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2};function Do(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const Bo=[new Do(0,0,0,0,Fo),new Do(4,4,8,4,Lo),new Do(4,5,16,8,Lo),new Do(4,6,32,32,Lo),new Do(4,4,16,16,zo),new Do(8,16,32,32,zo),new Do(8,16,128,128,zo),new Do(8,32,128,256,zo),new Do(32,128,258,1024,zo),new Do(32,258,258,4096,zo)];function $o(){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=uo,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),wo(this.dyn_ltree),wo(this.dyn_dtree),wo(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),wo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),wo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const No=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==bo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_o&&t.status!==xo?1:0},Mo=e=>{if(No(e))return vo(e,no);e.total_in=e.total_out=0,e.data_type=po;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?bo:_o,e.adler=2===t.wrap?0:1,t.last_flush=-2,Xn(t),to},Po=e=>{const t=Mo(e);return t===to&&(e=>{e.window_size=2*e.w_size,wo(e.head),e.max_lazy_match=Bo[e.level].max_lazy,e.good_match=Bo[e.level].good_length,e.nice_match=Bo[e.level].nice_length,e.max_chain_length=Bo[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0})(e.state),t},Uo=(e,t,i,n,o,r)=>{if(!e)return no;let a=1;if(t===ao&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==uo||n<8||n>15||t<0||t>9||r<0||r>mo||8===n&&1!==a)return vo(e,no);8===n&&(n=9);const d=new $o;return e.state=d,d.strm=e,d.status=bo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,Po(e)};var Ho=(e,t)=>{if(No(e)||t>eo||t<0)return e?vo(e,no):no;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===xo&&t!==Jn)return vo(e,0===e.avail_out?ro:no);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Io(e),0===e.avail_out)return i.last_flush=-1,to}else if(0===e.avail_in&&yo(t)<=yo(n)&&t!==Jn)return vo(e,ro);if(i.status===xo&&0!==e.avail_in)return vo(e,ro);if(i.status===bo&&0===i.wrap&&(i.status=_o),i.status===bo){let t=uo+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=lo||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,To(i,t),0!==i.strstart&&(To(i,e.adler>>>16),To(i,65535&e.adler)),e.adler=1,i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(57===i.status)if(e.adler=0,Ro(i,31),Ro(i,139),Ro(i,8),i.gzhead)Ro(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ro(i,255&i.gzhead.time),Ro(i,i.gzhead.time>>8&255),Ro(i,i.gzhead.time>>16&255),Ro(i,i.gzhead.time>>24&255),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Ro(i,255&i.gzhead.extra.length),Ro(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Hn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,3),i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,Io(e),0!==i.pending)return i.last_flush=-1,to;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Io(e),0!==i.pending))return i.last_flush=-1,to;Ro(i,255&e.adler),Ro(i,e.adler>>8&255),e.adler=0}if(i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(0!==e.avail_in||0!==i.lookahead||t!==Kn&&i.status!==xo){let n=0===i.level?Fo(i,t):i.strategy===lo?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Oo(e),0===e.lookahead)){if(t===Kn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===co?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=fo){if(Oo(e),e.lookahead<=fo&&t===Kn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+fo;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=fo-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):Bo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=xo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),to;if(2===n&&(t===Zn?jn(i):t!==eo&&(Yn(i,0,0,!1),t===Qn&&(wo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Io(e),0===e.avail_out))return i.last_flush=-1,to}return t!==Jn?to:i.wrap<=0?io:(2===i.wrap?(Ro(i,255&e.adler),Ro(i,e.adler>>8&255),Ro(i,e.adler>>16&255),Ro(i,e.adler>>24&255),Ro(i,255&e.total_in),Ro(i,e.total_in>>8&255),Ro(i,e.total_in>>16&255),Ro(i,e.total_in>>24&255)):(To(i,e.adler>>>16),To(i,65535&e.adler)),Io(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?to:io)},Vo=(e,t)=>{let i=t.length;if(No(e))return no;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==bo||n.lookahead)return no;if(1===o&&(e.adler=Pn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(wo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Oo(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=Eo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Oo(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,to},Wo={deflateInit:(e,t)=>Uo(e,t,uo,15,8,ho),deflateInit2:Uo,deflateReset:Po,deflateResetKeep:Mo,deflateSetHeader:(e,t)=>No(e)||2!==e.state.wrap?no:(e.state.gzhead=t,to),deflate:Ho,deflateEnd:e=>{if(No(e))return no;const t=e.state.status;return e.state=null,t===_o?vo(e,oo):to},deflateSetDictionary:Vo,deflateInfo:"pako deflate (from Nodeca project)"};const Xo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Yo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Xo(i,t)&&(e[t]=i[t])}}return e},Go=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const jo=new Uint8Array(256);for(let e=0;e<256;e++)jo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;jo[254]=jo[254]=1;var Ko=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Zo=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 Qo=Object.prototype.toString,{Z_NO_FLUSH:Jo,Z_SYNC_FLUSH:er,Z_FULL_FLUSH:tr,Z_FINISH:ir,Z_OK:nr,Z_STREAM_END:or,Z_DEFAULT_COMPRESSION:rr,Z_DEFAULT_STRATEGY:ar,Z_DEFLATED:dr}=Wn;function sr(e){this.options=Yo({level:rr,method:dr,chunkSize:16384,windowBits:15,memLevel:8,strategy:ar},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Zo,this.strm.avail_out=0;let i=Wo.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nr)throw new Error(Vn[i]);if(t.header&&Wo.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ko(t.dictionary):"[object ArrayBuffer]"===Qo.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Wo.deflateSetDictionary(this.strm,e),i!==nr)throw new Error(Vn[i]);this._dict_set=!0}}sr.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?ir:Jo,"string"==typeof e?i.input=Ko(e):"[object ArrayBuffer]"===Qo.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===er||r===tr)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Wo.deflate(i,r),o===or)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Wo.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===nr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},sr.prototype.onData=function(e){this.chunks.push(e)},sr.prototype.onEnd=function(e){e===nr&&(this.result=Go(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var lr={deflate:function(e,t){const i=new sr(t);if(i.push(e,!0),i.err)throw i.msg||Vn[i.err];return i.result}};const{deflate:cr}=lr;var mr=cr;const hr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},pr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in hr))throw"Unhandled character '"+e+"' in pack format";let i=hr[e].bytes,r=new DataView(new ArrayBuffer(i));hr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},ur=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in hr))throw"Unhandled character '"+e+"' in unpack format";let r=hr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=hr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class fr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this.chipRevision=null,this.chipVariant=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}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(),await this.detectChip();let e=ji(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(e+4*t);this.logger.log(`Chip type ${this.chipName}`)}async detectChip(){try{const e=(await this.getSecurityInfo()).chipId,t=Wi[e];if(t)return this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),void this.logger.debug(`Detected chip via IMAGE_CHIP_ID: ${e} (${this.chipName})`);this.logger.debug(`Unknown IMAGE_CHIP_ID: ${e}, falling back to magic value detection`)}catch(e){this.logger.debug(`GET_SECURITY_INFO failed, using magic value detection: ${e}`),this._inputBuffer.length=0,await Si(100);try{await this.sync()}catch(e){this.logger.debug(`Re-sync after GET_SECURITY_INFO failure: ${e}`)}}let e=await this.readRegister(1073745920),t=Xi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ti(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),this.logger.debug(`Detected chip via magic value: ${Ti(e>>>0,8)} (${this.chipName})`)}async getChipRevision(){if(this.chipFamily!==Vi)return 0;const e=await this.readRegister(1343410252);return 100*((e>>23&1)<<2|e>>4&3)+(15&e)}async getSecurityInfo(){const[e,t]=await this.checkCommand(20,[],0);if(0===t.length)throw new Error("GET_SECURITY_INFO not supported or returned empty response");if(t.length<12)throw new Error(`Invalid security info response length: ${t.length} (expected at least 12 bytes)`);return{flags:ur("<I",t.slice(0,4))[0],flashCryptCnt:t[4],keyPurposes:Array.from(t.slice(5,12)),chipId:t.length>=16?ur("<I",t.slice(12,16))[0]:0,apiVersion:t.length>=20?ur("<I",t.slice(16,20))[0]:0}}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Li){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==zi)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ti(e,8));let t=pr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Li?a=2:[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)||20===e?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ti(e)):new Error("Command failure error code "+Ti(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...pr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Si(10)}if(0==n.length){throw new Ki("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ri(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid head of packet ("+Ti(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid SLIP escape (0xdb, "+Ti(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ri(t)),t;t.push(e)}}throw new Ki("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=ur("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ti(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Li)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=pr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e),this.logger.log(`Changed baud rate to ${e}`)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop()}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Si(100),!0;await Si(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Fi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ti(t)}, FlashMode=${Ti(i)}, FlashSizeFreq=${Ti(n)}`)}let r,a=e.byteLength,d=0,s=Yi;n?(r=mr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ti(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Li?this.getEraseSize(t,e):e,a=this.IS_STUB?Yi:qi(3e4,e);let s=Date.now();return o=pr("<IIII",n,d,r,t),this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi||(o=o.concat(pr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ti(r,4)+", offset "+Ti(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Yi),o=pr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=pr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=pr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return ji(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=pr("<IIII",e,t,i,n);o>0&&r.concat(pr("<IIII",ji(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=ji(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=ur("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ti(t)} to register offset ${Ti(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ti(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Ai[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,pr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Yi:500,i=pr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Zi(this.chipFamily,this.chipRevision);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new gr(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class gr extends fr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Zi(this.chipFamily,this.chipRevision),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ti(e,8)+"-"+Ti(t,8)+". Can't load binary at overlapping address range "+Ti(r,8)+"-"+Ti(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Gi)}}const br=async(e,t,i,n,o,r,a)=>{let d,s,l,c=null;const m=t=>e({...t,manifest:d,build:s,chipFamily:l,chipVariant:c});var h=null,p="";try{h=JSON.parse(n)}catch{p=new URL(n,location.toString()).toString(),h=fetch(p).then(e=>e.json())}const u=new fr(t,i);window.esploader=u,m({state:"initializing",message:"Initializing...",details:{done:!1}});try{await u.initialize()}catch(e){return i.error(e),m({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(u.connected&&await u.disconnect())}l=(e=>{switch(e.chipFamily){case zi:return"ESP32";case Di:return"ESP32-S2";case Bi:return"ESP32-S3";case $i:return"ESP32-C2";case Ni:return"ESP32-C3";case Mi:return"ESP32-C5";case Pi:return"ESP32-C6";case Ui:return"ESP32-C61";case Hi:return"ESP32-H2";case Vi:return"ESP32-P4";case Li:return"ESP8266";default:return"Unknown Chip"}})(u),c=u.chipVariant,m({state:"initializing",message:`Initialized. Found ${l}${c?` (${c})`:""}`,details:{done:!0}}),m({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{d=await h}catch(e){return m({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await u.disconnect()}if(s=d.builds.find(e=>e.chipFamily===l&&(void 0===e.chipVariant||e.chipVariant===c)),m({state:"manifest",message:`Found manifest for ${d.name}`,details:{done:!0}}),!s){const e=c?`${l} (${c})`:l;return m({state:"error",message:`Your ${e} board is not supported.`,details:{error:"not_supported",details:e}}),void await u.disconnect()}m({state:"preparing",message:"Preparing installation...",details:{done:!1}});const f=s.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,p).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),g=await u.runStub();if(void 0!==a&&a>115200)try{await g.setBaudrate(a)}catch(e){i.log(`Could not change baud rate to ${a}: ${e.message}`)}const b=[];let _=0;for(const e of f)try{const t=await e;b.push(t instanceof ArrayBuffer?new Uint8Array(t):t),_+=t.byteLength}catch(e){return m({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await u.disconnect()}m({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(m({state:"erasing",message:"Erasing device...",details:{done:!1}}),await g.eraseFlash(),m({state:"erasing",message:"Device erased",details:{done:!0}}));let x=0;m({state:"writing",message:`Writing progress: ${x}%`,details:{bytesTotal:_,bytesWritten:0,percentage:x}});let v=0;for(const e of s.parts){const t=b.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await g.flashData(i,e=>{const t=Math.floor((v+e)/_*100);t!==x&&(x=t,m({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:_,bytesWritten:v+e,percentage:t}}))},e.offset,!0)}catch(e){return m({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await u.disconnect()}v+=t.byteLength}m({state:"writing",message:"Writing complete",details:{bytesTotal:_,bytesWritten:v,percentage:100}}),await V(100),console.log("DISCONNECT"),await u.disconnect(),console.log("HARD RESET"),await u.hardReset(),m({state:"finished",message:"All done!"})},_r=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class xr extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
|
|
417
|
+
`,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ri=e=>"["+e.map(e=>Ti(e)).join(", ")+"]",Ti=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Si=e=>new Promise(t=>setTimeout(t,e)),Ai={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=1343410176,Fi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Li=33382,zi=50,Di=12882,Bi=12883,$i=12994,Ni=12995,Mi=12997,Pi=12998,Ui=207969,Hi=12914,Vi=12928,Wi={5:{name:"ESP32-C3",family:Ni},9:{name:"ESP32-S3",family:Bi},12:{name:"ESP32-C2",family:$i},13:{name:"ESP32-C6",family:Pi},16:{name:"ESP32-H2",family:Hi},18:{name:"ESP32-P4",family:Vi},20:{name:"ESP32-C61",family:Ui},23:{name:"ESP32-C5",family:Mi}},Xi={4293968129:{name:"ESP8266",family:Li},15736195:{name:"ESP32",family:zi},1990:{name:"ESP32-S2",family:Di},9:{name:"ESP32-S3",family:Bi},203546735:{name:"ESP32-C2",family:$i},1867591791:{name:"ESP32-C2",family:$i},2084675695:{name:"ESP32-C2",family:$i},456216687:{name:"ESP32-C3",family:Ni},1130455151:{name:"ESP32-C3",family:Ni},1216438383:{name:"ESP32-C3",family:Ni},1763790959:{name:"ESP32-C3",family:Ni},285294703:{name:"ESP32-C5",family:Mi},1607549039:{name:"ESP32-C5",family:Mi},1548751960:{name:"ESP32-C5",family:Mi},1675706479:{name:"ESP32-C5",family:Mi},752910447:{name:"ESP32-C6",family:Pi},606167151:{name:"ESP32-C61",family:Ui},871374959:{name:"ESP32-C61",family:Ui},1333878895:{name:"ESP32-C61",family:Ui},1913741423:{name:"ESP32-C61",family:Ui},2548236392:{name:"ESP32-H2",family:Hi},3619110528:{name:"ESP32-H2",family:Hi},0:{name:"ESP32-P4",family:Vi},117676761:{name:"ESP32-P4",family:Vi},182303440:{name:"ESP32-P4",family:Vi}},Yi=3e3,Gi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Yi?Yi:i},ji=e=>{switch(e){case zi:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Bi:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Li:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case $i:case Ni:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Mi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Pi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Vi:return{regBase:1342754816,baseFuse:Oi,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class Ki extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Zi=async(e,t)=>{let i;return e==zi?i=await import("./esp32-BNIFdu1P.js"):e==Di?i=await import("./esp32s2-Bk4mqADi.js"):e==Bi?i=await import("./esp32s3-Df3OUCOC.js"):e==Li?i=await import("./esp8266-CQFcqJ_a.js"):e==$i?i=await import("./esp32c2-BqxquOKw.js"):e==Ni?i=await import("./esp32c3-BOOqe8me.js"):e==Mi?i=await import("./esp32c5-mcj52-K1.js"):e==Pi?i=await import("./esp32c6-Cg5qYgg7.js"):e==Ui?i=await import("./esp32c61-CzCdsydk.js"):e==Hi?i=await import("./esp32h2-DZa_lpff.js"):e==Vi&&(i=null!=t&&t>=300?await import("./esp32p4r3-Cle9QJmZ.js"):await import("./esp32p4-DyGqUAeZ.js")),{...i,text:Ci(atob(i.text)),data:Ci(atob(i.data))}};function Qi(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ji=256,en=286,tn=30,nn=15,on=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]),rn=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),dn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sn=new Array(576);Qi(sn);const ln=new Array(60);Qi(ln);const cn=new Array(512);Qi(cn);const mn=new Array(256);Qi(mn);const hn=new Array(29);Qi(hn);const pn=new Array(tn);function un(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let fn,gn,bn;function _n(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Qi(pn);const xn=e=>e<256?cn[e]:cn[256+(e>>>7)],vn=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},yn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,vn(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},wn=(e,t,i)=>{yn(e,i[2*t],i[2*t+1])},kn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},En=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=nn;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=kn(n[t]++,t))}},In=e=>{let t;for(t=0;t<en;t++)e.dyn_ltree[2*t]=0;for(t=0;t<tn;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Cn=e=>{e.bi_valid>8?vn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Rn=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Tn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&Rn(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!Rn(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Sn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?wn(e,o,t):(r=mn[o],wn(e,r+Ji+1,t),a=on[r],0!==a&&(o-=hn[r],yn(e,o,a)),n--,r=xn(n),wn(e,r,i),a=rn[r],0!==a&&(n-=pn[r],yn(e,n,a)))}while(d<e.sym_next);wn(e,256,t)},An=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Tn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Tn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Tn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=nn;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),En(i,l,e.bl_count)},On=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Fn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{wn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(wn(e,o,e.bl_tree),d--),wn(e,16,e.bl_tree),yn(e,d-3,2)):d<=10?(wn(e,17,e.bl_tree),yn(e,d-3,3)):(wn(e,18,e.bl_tree),yn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let Ln=!1;const zn=(e,t,i,n)=>{yn(e,0+(n?1:0),3),Cn(e),vn(e,i),vn(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Dn=e=>{Ln||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(hn[n]=i,e=0;e<1<<on[n];e++)mn[i++]=n;for(mn[i-1]=n,o=0,n=0;n<16;n++)for(pn[n]=o,e=0;e<1<<rn[n];e++)cn[o++]=n;for(o>>=7;n<tn;n++)for(pn[n]=o<<7,e=0;e<1<<rn[n]-7;e++)cn[256+o++]=n;for(t=0;t<=nn;t++)r[t]=0;for(e=0;e<=143;)sn[2*e+1]=8,e++,r[8]++;for(;e<=255;)sn[2*e+1]=9,e++,r[9]++;for(;e<=279;)sn[2*e+1]=7,e++,r[7]++;for(;e<=287;)sn[2*e+1]=8,e++,r[8]++;for(En(sn,287,r),e=0;e<tn;e++)ln[2*e+1]=5,ln[2*e]=kn(e,5);fn=new un(sn,on,257,en,nn),gn=new un(ln,rn,0,tn,nn),bn=new un(new Array(0),an,0,19,7)})(),Ln=!0),e.l_desc=new _n(e.dyn_ltree,fn),e.d_desc=new _n(e.dyn_dtree,gn),e.bl_desc=new _n(e.bl_tree,bn),e.bi_buf=0,e.bi_valid=0,In(e)},Bn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Ji;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),An(e,e.l_desc),An(e,e.d_desc),a=(e=>{let t;for(On(e,e.dyn_ltree,e.l_desc.max_code),On(e,e.dyn_dtree,e.d_desc.max_code),An(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*dn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?zn(e,t,i,n):4===e.strategy||r===o?(yn(e,2+(n?1:0),3),Sn(e,sn,ln)):(yn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(yn(e,t-257,5),yn(e,i-1,5),yn(e,n-4,4),o=0;o<n;o++)yn(e,e.bl_tree[2*dn[o]+1],3);Fn(e,e.dyn_ltree,t-1),Fn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Sn(e,e.dyn_ltree,e.dyn_dtree)),In(e),n&&Cn(e)},$n=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(mn[i]+Ji+1)]++,e.dyn_dtree[2*xn(t)]++),e.sym_next===e.sym_end),Nn=e=>{yn(e,2,3),wn(e,256,sn),(e=>{16===e.bi_valid?(vn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},Mn={_tr_init:Dn,_tr_stored_block:zn,_tr_flush_block:Bn,_tr_tally:$n,_tr_align:Nn};var Pn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Un=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Hn=(e,t,i,n)=>{const o=Un,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Vn={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"},Wn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Xn,_tr_stored_block:Yn,_tr_flush_block:Gn,_tr_tally:qn,_tr_align:jn}=Mn,{Z_NO_FLUSH:Kn,Z_PARTIAL_FLUSH:Zn,Z_FULL_FLUSH:Qn,Z_FINISH:Jn,Z_BLOCK:eo,Z_OK:to,Z_STREAM_END:io,Z_STREAM_ERROR:no,Z_DATA_ERROR:oo,Z_BUF_ERROR:ro,Z_DEFAULT_COMPRESSION:ao,Z_FILTERED:so,Z_HUFFMAN_ONLY:lo,Z_RLE:co,Z_FIXED:mo,Z_DEFAULT_STRATEGY:ho,Z_UNKNOWN:po,Z_DEFLATED:uo}=Wn,fo=258,go=262,bo=42,_o=113,xo=666,vo=(e,t)=>(e.msg=Vn[t],t),yo=e=>2*e-(e>4?9:0),wo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ko=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let Eo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const Io=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Co=(e,t)=>{Gn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Io(e.strm)},Ro=(e,t)=>{e.pending_buf[e.pending++]=t},To=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},So=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Pn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Hn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ao=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-go?e.strstart-(e.w_size-go):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+fo;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=fo-(h-r),r=h-fo,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Oo=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-go)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ko(e),n+=t),0===e.strm.avail_in)break;if(i=So(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=Eo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=Eo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<go&&0!==e.strm.avail_in)},Fo=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Jn||t===Kn||i!==n+e.strm.avail_in))break;a=t===Jn&&i===n+e.strm.avail_in?1:0,Yn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Io(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(So(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==Kn&&t!==Jn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(So(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Jn)&&t!==Kn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Jn&&0===e.strm.avail_in&&i===n?1:0,Yn(e,e.block_start,i,a),e.block_start+=i,Io(e.strm)),a?3:1)},Lo=(e,t)=>{let i,n;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2},zo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i),e.match_length<=5&&(e.strategy===so||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Co(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Co(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2};function Do(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const Bo=[new Do(0,0,0,0,Fo),new Do(4,4,8,4,Lo),new Do(4,5,16,8,Lo),new Do(4,6,32,32,Lo),new Do(4,4,16,16,zo),new Do(8,16,32,32,zo),new Do(8,16,128,128,zo),new Do(8,32,128,256,zo),new Do(32,128,258,1024,zo),new Do(32,258,258,4096,zo)];function $o(){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=uo,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),wo(this.dyn_ltree),wo(this.dyn_dtree),wo(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),wo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),wo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const No=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==bo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_o&&t.status!==xo?1:0},Mo=e=>{if(No(e))return vo(e,no);e.total_in=e.total_out=0,e.data_type=po;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?bo:_o,e.adler=2===t.wrap?0:1,t.last_flush=-2,Xn(t),to},Po=e=>{const t=Mo(e);return t===to&&(e=>{e.window_size=2*e.w_size,wo(e.head),e.max_lazy_match=Bo[e.level].max_lazy,e.good_match=Bo[e.level].good_length,e.nice_match=Bo[e.level].nice_length,e.max_chain_length=Bo[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0})(e.state),t},Uo=(e,t,i,n,o,r)=>{if(!e)return no;let a=1;if(t===ao&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==uo||n<8||n>15||t<0||t>9||r<0||r>mo||8===n&&1!==a)return vo(e,no);8===n&&(n=9);const d=new $o;return e.state=d,d.strm=e,d.status=bo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,Po(e)};var Ho=(e,t)=>{if(No(e)||t>eo||t<0)return e?vo(e,no):no;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===xo&&t!==Jn)return vo(e,0===e.avail_out?ro:no);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Io(e),0===e.avail_out)return i.last_flush=-1,to}else if(0===e.avail_in&&yo(t)<=yo(n)&&t!==Jn)return vo(e,ro);if(i.status===xo&&0!==e.avail_in)return vo(e,ro);if(i.status===bo&&0===i.wrap&&(i.status=_o),i.status===bo){let t=uo+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=lo||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,To(i,t),0!==i.strstart&&(To(i,e.adler>>>16),To(i,65535&e.adler)),e.adler=1,i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(57===i.status)if(e.adler=0,Ro(i,31),Ro(i,139),Ro(i,8),i.gzhead)Ro(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ro(i,255&i.gzhead.time),Ro(i,i.gzhead.time>>8&255),Ro(i,i.gzhead.time>>16&255),Ro(i,i.gzhead.time>>24&255),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Ro(i,255&i.gzhead.extra.length),Ro(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Hn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,3),i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,Io(e),0!==i.pending)return i.last_flush=-1,to;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Io(e),0!==i.pending))return i.last_flush=-1,to;Ro(i,255&e.adler),Ro(i,e.adler>>8&255),e.adler=0}if(i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(0!==e.avail_in||0!==i.lookahead||t!==Kn&&i.status!==xo){let n=0===i.level?Fo(i,t):i.strategy===lo?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Oo(e),0===e.lookahead)){if(t===Kn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===co?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=fo){if(Oo(e),e.lookahead<=fo&&t===Kn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+fo;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=fo-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):Bo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=xo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),to;if(2===n&&(t===Zn?jn(i):t!==eo&&(Yn(i,0,0,!1),t===Qn&&(wo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Io(e),0===e.avail_out))return i.last_flush=-1,to}return t!==Jn?to:i.wrap<=0?io:(2===i.wrap?(Ro(i,255&e.adler),Ro(i,e.adler>>8&255),Ro(i,e.adler>>16&255),Ro(i,e.adler>>24&255),Ro(i,255&e.total_in),Ro(i,e.total_in>>8&255),Ro(i,e.total_in>>16&255),Ro(i,e.total_in>>24&255)):(To(i,e.adler>>>16),To(i,65535&e.adler)),Io(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?to:io)},Vo=(e,t)=>{let i=t.length;if(No(e))return no;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==bo||n.lookahead)return no;if(1===o&&(e.adler=Pn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(wo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Oo(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=Eo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Oo(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,to},Wo={deflateInit:(e,t)=>Uo(e,t,uo,15,8,ho),deflateInit2:Uo,deflateReset:Po,deflateResetKeep:Mo,deflateSetHeader:(e,t)=>No(e)||2!==e.state.wrap?no:(e.state.gzhead=t,to),deflate:Ho,deflateEnd:e=>{if(No(e))return no;const t=e.state.status;return e.state=null,t===_o?vo(e,oo):to},deflateSetDictionary:Vo,deflateInfo:"pako deflate (from Nodeca project)"};const Xo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Yo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Xo(i,t)&&(e[t]=i[t])}}return e},Go=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const jo=new Uint8Array(256);for(let e=0;e<256;e++)jo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;jo[254]=jo[254]=1;var Ko=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Zo=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 Qo=Object.prototype.toString,{Z_NO_FLUSH:Jo,Z_SYNC_FLUSH:er,Z_FULL_FLUSH:tr,Z_FINISH:ir,Z_OK:nr,Z_STREAM_END:or,Z_DEFAULT_COMPRESSION:rr,Z_DEFAULT_STRATEGY:ar,Z_DEFLATED:dr}=Wn;function sr(e){this.options=Yo({level:rr,method:dr,chunkSize:16384,windowBits:15,memLevel:8,strategy:ar},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Zo,this.strm.avail_out=0;let i=Wo.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nr)throw new Error(Vn[i]);if(t.header&&Wo.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ko(t.dictionary):"[object ArrayBuffer]"===Qo.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Wo.deflateSetDictionary(this.strm,e),i!==nr)throw new Error(Vn[i]);this._dict_set=!0}}sr.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?ir:Jo,"string"==typeof e?i.input=Ko(e):"[object ArrayBuffer]"===Qo.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===er||r===tr)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Wo.deflate(i,r),o===or)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Wo.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===nr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},sr.prototype.onData=function(e){this.chunks.push(e)},sr.prototype.onEnd=function(e){e===nr&&(this.result=Go(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var lr={deflate:function(e,t){const i=new sr(t);if(i.push(e,!0),i.err)throw i.msg||Vn[i.err];return i.result}};const{deflate:cr}=lr;var mr=cr;const hr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},pr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in hr))throw"Unhandled character '"+e+"' in pack format";let i=hr[e].bytes,r=new DataView(new ArrayBuffer(i));hr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},ur=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in hr))throw"Unhandled character '"+e+"' in unpack format";let r=hr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=hr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class fr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this.chipRevision=null,this.chipVariant=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}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(),await this.detectChip();let e=ji(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(e+4*t);this.logger.log(`Chip type ${this.chipName}`)}async detectChip(){try{const e=(await this.getSecurityInfo()).chipId,t=Wi[e];if(t)return this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),void this.logger.debug(`Detected chip via IMAGE_CHIP_ID: ${e} (${this.chipName})`);this.logger.debug(`Unknown IMAGE_CHIP_ID: ${e}, falling back to magic value detection`)}catch(e){this.logger.debug(`GET_SECURITY_INFO failed, using magic value detection: ${e}`),this._inputBuffer.length=0,await Si(100);try{await this.sync()}catch(e){this.logger.debug(`Re-sync after GET_SECURITY_INFO failure: ${e}`)}}let e=await this.readRegister(1073745920),t=Xi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ti(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),this.logger.debug(`Detected chip via magic value: ${Ti(e>>>0,8)} (${this.chipName})`)}async getChipRevision(){if(this.chipFamily!==Vi)return 0;const e=await this.readRegister(1343410252);return 100*((e>>23&1)<<2|e>>4&3)+(15&e)}async getSecurityInfo(){const[e,t]=await this.checkCommand(20,[],0);if(0===t.length)throw new Error("GET_SECURITY_INFO not supported or returned empty response");if(t.length<12)throw new Error(`Invalid security info response length: ${t.length} (expected at least 12 bytes)`);return{flags:ur("<I",t.slice(0,4))[0],flashCryptCnt:t[4],keyPurposes:Array.from(t.slice(5,12)),chipId:t.length>=16?ur("<I",t.slice(12,16))[0]:0,apiVersion:t.length>=20?ur("<I",t.slice(16,20))[0]:0}}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Li){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==zi)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ti(e,8));let t=pr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Li?a=2:[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)||20===e?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ti(e)):new Error("Command failure error code "+Ti(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...pr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Si(10)}if(0==n.length){throw new Ki("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ri(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid head of packet ("+Ti(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid SLIP escape (0xdb, "+Ti(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ri(t)),t;t.push(e)}}throw new Ki("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=ur("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ti(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Li)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=pr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e),this.logger.log(`Changed baud rate to ${e}`)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop()}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Si(100),!0;await Si(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Fi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ti(t)}, FlashMode=${Ti(i)}, FlashSizeFreq=${Ti(n)}`)}let r,a=e.byteLength,d=0,s=Yi;n?(r=mr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ti(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Li?this.getEraseSize(t,e):e,a=this.IS_STUB?Yi:qi(3e4,e);let s=Date.now();return o=pr("<IIII",n,d,r,t),this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi||(o=o.concat(pr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ti(r,4)+", offset "+Ti(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Yi),o=pr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=pr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=pr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return ji(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=pr("<IIII",e,t,i,n);o>0&&r.concat(pr("<IIII",ji(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=ji(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=ur("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ti(t)} to register offset ${Ti(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ti(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Ai[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,pr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Yi:500,i=pr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Zi(this.chipFamily,this.chipRevision);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new gr(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class gr extends fr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Zi(this.chipFamily,this.chipRevision),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ti(e,8)+"-"+Ti(t,8)+". Can't load binary at overlapping address range "+Ti(r,8)+"-"+Ti(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Gi)}}const br=async(e,t,i,n,o,r,a)=>{let d,s,l,c=null;const m=t=>e({...t,manifest:d,build:s,chipFamily:l,chipVariant:c});var h=null,p="";try{h=JSON.parse(n)}catch{p=new URL(n,location.toString()).toString(),h=fetch(p).then(e=>e.json())}const u=new fr(t,i);window.esploader=u,m({state:"initializing",message:"Initializing...",details:{done:!1}});try{await u.initialize()}catch(e){return i.error(e),m({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(u.connected&&await u.disconnect())}l=(e=>{switch(e.chipFamily){case zi:return"ESP32";case Di:return"ESP32-S2";case Bi:return"ESP32-S3";case $i:return"ESP32-C2";case Ni:return"ESP32-C3";case Mi:return"ESP32-C5";case Pi:return"ESP32-C6";case Ui:return"ESP32-C61";case Hi:return"ESP32-H2";case Vi:return"ESP32-P4";case Li:return"ESP8266";default:return"Unknown Chip"}})(u),c=u.chipVariant,m({state:"initializing",message:`Initialized. Found ${l}${c?` (${c})`:""}`,details:{done:!0}}),m({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{d=await h}catch(e){return m({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await u.disconnect()}if(s=d.builds.find(e=>e.chipFamily===l&&(void 0===e.chipVariant||e.chipVariant===c)),m({state:"manifest",message:`Found manifest for ${d.name}`,details:{done:!0}}),!s){const e=c?`${l} (${c})`:l;return m({state:"error",message:`Your ${e} board is not supported.`,details:{error:"not_supported",details:e}}),void await u.disconnect()}m({state:"preparing",message:"Preparing installation...",details:{done:!1}});const f=s.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,p).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),g=await u.runStub();if(void 0!==a&&a>115200)try{await g.setBaudrate(a)}catch(e){i.log(`Could not change baud rate to ${a}: ${e.message}`)}const b=[];let _=0;for(const e of f)try{const t=await e;b.push(t instanceof ArrayBuffer?new Uint8Array(t):t),_+=t.byteLength}catch(e){return m({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await u.disconnect()}m({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(m({state:"erasing",message:"Erasing device...",details:{done:!1}}),await g.eraseFlash(),m({state:"erasing",message:"Device erased",details:{done:!0}}));let x=0;m({state:"writing",message:`Writing progress: ${x}%`,details:{bytesTotal:_,bytesWritten:0,percentage:x}});let v=0;for(const e of s.parts){const t=b.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await g.flashData(i,e=>{const t=Math.floor((v+e)/_*100);t!==x&&(x=t,m({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:_,bytesWritten:v+e,percentage:t}}))},e.offset,!0)}catch(e){return m({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await u.disconnect()}v+=t.byteLength}m({state:"writing",message:"Writing complete",details:{bytesTotal:_,bytesWritten:v,percentage:100}}),await V(100),console.log("DISCONNECT"),await u.disconnect(),console.log("HARD RESET"),await u.hardReset(),m({state:"finished",message:"All done!"})},_r=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class xr extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
|
|
418
418
|
<ewt-dialog
|
|
419
419
|
open
|
|
420
420
|
.heading=${e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=async t=>{let n;import("./install-dialog-
|
|
1
|
+
const e=async t=>{let n;import("./install-dialog-D-i8CgJB.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile;const r=t.getAttribute("baud-rate");if(r){const e=parseInt(r,10);isNaN(e)||(o.baudRate=e)}else void 0!==t.baudRate&&(o.baudRate=t.baudRate);o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
|
|
@@ -414,7 +414,7 @@ import{l as e,o as t,_ as i,n,B as o,i as r,a,t as d,e as s,b as l,R as c,x as m
|
|
|
414
414
|
d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"
|
|
415
415
|
/>
|
|
416
416
|
</svg>
|
|
417
|
-
`,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ri=e=>"["+e.map(e=>Ti(e)).join(", ")+"]",Ti=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Si=e=>new Promise(t=>setTimeout(t,e)),Ai={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=1343410176,Fi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Li=33382,zi=50,Di=12882,Bi=12883,$i=12994,Ni=12995,Mi=12997,Pi=12998,Ui=207969,Hi=12914,Vi=12928,Wi={5:{name:"ESP32-C3",family:Ni},9:{name:"ESP32-S3",family:Bi},12:{name:"ESP32-C2",family:$i},13:{name:"ESP32-C6",family:Pi},16:{name:"ESP32-H2",family:Hi},18:{name:"ESP32-P4",family:Vi},20:{name:"ESP32-C61",family:Ui},23:{name:"ESP32-C5",family:Mi}},Xi={4293968129:{name:"ESP8266",family:Li},15736195:{name:"ESP32",family:zi},1990:{name:"ESP32-S2",family:Di},9:{name:"ESP32-S3",family:Bi},203546735:{name:"ESP32-C2",family:$i},1867591791:{name:"ESP32-C2",family:$i},2084675695:{name:"ESP32-C2",family:$i},456216687:{name:"ESP32-C3",family:Ni},1130455151:{name:"ESP32-C3",family:Ni},1216438383:{name:"ESP32-C3",family:Ni},1763790959:{name:"ESP32-C3",family:Ni},285294703:{name:"ESP32-C5",family:Mi},1607549039:{name:"ESP32-C5",family:Mi},1548751960:{name:"ESP32-C5",family:Mi},1675706479:{name:"ESP32-C5",family:Mi},752910447:{name:"ESP32-C6",family:Pi},606167151:{name:"ESP32-C61",family:Ui},871374959:{name:"ESP32-C61",family:Ui},1333878895:{name:"ESP32-C61",family:Ui},1913741423:{name:"ESP32-C61",family:Ui},2548236392:{name:"ESP32-H2",family:Hi},3619110528:{name:"ESP32-H2",family:Hi},0:{name:"ESP32-P4",family:Vi},117676761:{name:"ESP32-P4",family:Vi},182303440:{name:"ESP32-P4",family:Vi}},Yi=3e3,Gi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Yi?Yi:i},ji=e=>{switch(e){case zi:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Bi:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Li:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case $i:case Ni:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Mi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Pi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Vi:return{regBase:1342754816,baseFuse:Oi,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class Ki extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Zi=async(e,t)=>{let i;return e==zi?i=await import("./esp32-BNIFdu1P.js"):e==Di?i=await import("./esp32s2-Bk4mqADi.js"):e==Bi?i=await import("./esp32s3-Df3OUCOC.js"):e==Li?i=await import("./esp8266-CQFcqJ_a.js"):e==$i?i=await import("./esp32c2-BqxquOKw.js"):e==Ni?i=await import("./esp32c3-BOOqe8me.js"):e==Mi?i=await import("./esp32c5-mcj52-K1.js"):e==Pi?i=await import("./esp32c6-Cg5qYgg7.js"):e==Ui?i=await import("./esp32c61-CzCdsydk.js"):e==Hi?i=await import("./esp32h2-DZa_lpff.js"):e==Vi&&(i=null!=t&&t>=300?await import("./esp32p4r3-Cle9QJmZ.js"):await import("./esp32p4-DyGqUAeZ.js")),{...i,text:Ci(atob(i.text)),data:Ci(atob(i.data))}};function Qi(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ji=256,en=286,tn=30,nn=15,on=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]),rn=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),dn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sn=new Array(576);Qi(sn);const ln=new Array(60);Qi(ln);const cn=new Array(512);Qi(cn);const mn=new Array(256);Qi(mn);const hn=new Array(29);Qi(hn);const pn=new Array(tn);function un(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let fn,gn,bn;function _n(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Qi(pn);const xn=e=>e<256?cn[e]:cn[256+(e>>>7)],vn=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},yn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,vn(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},wn=(e,t,i)=>{yn(e,i[2*t],i[2*t+1])},kn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},En=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=nn;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=kn(n[t]++,t))}},In=e=>{let t;for(t=0;t<en;t++)e.dyn_ltree[2*t]=0;for(t=0;t<tn;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Cn=e=>{e.bi_valid>8?vn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Rn=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Tn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&Rn(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!Rn(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Sn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?wn(e,o,t):(r=mn[o],wn(e,r+Ji+1,t),a=on[r],0!==a&&(o-=hn[r],yn(e,o,a)),n--,r=xn(n),wn(e,r,i),a=rn[r],0!==a&&(n-=pn[r],yn(e,n,a)))}while(d<e.sym_next);wn(e,256,t)},An=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Tn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Tn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Tn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=nn;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),En(i,l,e.bl_count)},On=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Fn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{wn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(wn(e,o,e.bl_tree),d--),wn(e,16,e.bl_tree),yn(e,d-3,2)):d<=10?(wn(e,17,e.bl_tree),yn(e,d-3,3)):(wn(e,18,e.bl_tree),yn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let Ln=!1;const zn=(e,t,i,n)=>{yn(e,0+(n?1:0),3),Cn(e),vn(e,i),vn(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Dn=e=>{Ln||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(hn[n]=i,e=0;e<1<<on[n];e++)mn[i++]=n;for(mn[i-1]=n,o=0,n=0;n<16;n++)for(pn[n]=o,e=0;e<1<<rn[n];e++)cn[o++]=n;for(o>>=7;n<tn;n++)for(pn[n]=o<<7,e=0;e<1<<rn[n]-7;e++)cn[256+o++]=n;for(t=0;t<=nn;t++)r[t]=0;for(e=0;e<=143;)sn[2*e+1]=8,e++,r[8]++;for(;e<=255;)sn[2*e+1]=9,e++,r[9]++;for(;e<=279;)sn[2*e+1]=7,e++,r[7]++;for(;e<=287;)sn[2*e+1]=8,e++,r[8]++;for(En(sn,287,r),e=0;e<tn;e++)ln[2*e+1]=5,ln[2*e]=kn(e,5);fn=new un(sn,on,257,en,nn),gn=new un(ln,rn,0,tn,nn),bn=new un(new Array(0),an,0,19,7)})(),Ln=!0),e.l_desc=new _n(e.dyn_ltree,fn),e.d_desc=new _n(e.dyn_dtree,gn),e.bl_desc=new _n(e.bl_tree,bn),e.bi_buf=0,e.bi_valid=0,In(e)},Bn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Ji;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),An(e,e.l_desc),An(e,e.d_desc),a=(e=>{let t;for(On(e,e.dyn_ltree,e.l_desc.max_code),On(e,e.dyn_dtree,e.d_desc.max_code),An(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*dn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?zn(e,t,i,n):4===e.strategy||r===o?(yn(e,2+(n?1:0),3),Sn(e,sn,ln)):(yn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(yn(e,t-257,5),yn(e,i-1,5),yn(e,n-4,4),o=0;o<n;o++)yn(e,e.bl_tree[2*dn[o]+1],3);Fn(e,e.dyn_ltree,t-1),Fn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Sn(e,e.dyn_ltree,e.dyn_dtree)),In(e),n&&Cn(e)},$n=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(mn[i]+Ji+1)]++,e.dyn_dtree[2*xn(t)]++),e.sym_next===e.sym_end),Nn=e=>{yn(e,2,3),wn(e,256,sn),(e=>{16===e.bi_valid?(vn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},Mn={_tr_init:Dn,_tr_stored_block:zn,_tr_flush_block:Bn,_tr_tally:$n,_tr_align:Nn};var Pn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Un=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Hn=(e,t,i,n)=>{const o=Un,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Vn={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"},Wn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Xn,_tr_stored_block:Yn,_tr_flush_block:Gn,_tr_tally:qn,_tr_align:jn}=Mn,{Z_NO_FLUSH:Kn,Z_PARTIAL_FLUSH:Zn,Z_FULL_FLUSH:Qn,Z_FINISH:Jn,Z_BLOCK:eo,Z_OK:to,Z_STREAM_END:io,Z_STREAM_ERROR:no,Z_DATA_ERROR:oo,Z_BUF_ERROR:ro,Z_DEFAULT_COMPRESSION:ao,Z_FILTERED:so,Z_HUFFMAN_ONLY:lo,Z_RLE:co,Z_FIXED:mo,Z_DEFAULT_STRATEGY:ho,Z_UNKNOWN:po,Z_DEFLATED:uo}=Wn,fo=258,go=262,bo=42,_o=113,xo=666,vo=(e,t)=>(e.msg=Vn[t],t),yo=e=>2*e-(e>4?9:0),wo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ko=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let Eo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const Io=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Co=(e,t)=>{Gn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Io(e.strm)},Ro=(e,t)=>{e.pending_buf[e.pending++]=t},To=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},So=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Pn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Hn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ao=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-go?e.strstart-(e.w_size-go):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+fo;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=fo-(h-r),r=h-fo,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Oo=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-go)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ko(e),n+=t),0===e.strm.avail_in)break;if(i=So(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=Eo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=Eo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<go&&0!==e.strm.avail_in)},Fo=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Jn||t===Kn||i!==n+e.strm.avail_in))break;a=t===Jn&&i===n+e.strm.avail_in?1:0,Yn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Io(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(So(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==Kn&&t!==Jn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(So(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Jn)&&t!==Kn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Jn&&0===e.strm.avail_in&&i===n?1:0,Yn(e,e.block_start,i,a),e.block_start+=i,Io(e.strm)),a?3:1)},Lo=(e,t)=>{let i,n;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2},zo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i),e.match_length<=5&&(e.strategy===so||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Co(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Co(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2};function Do(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const Bo=[new Do(0,0,0,0,Fo),new Do(4,4,8,4,Lo),new Do(4,5,16,8,Lo),new Do(4,6,32,32,Lo),new Do(4,4,16,16,zo),new Do(8,16,32,32,zo),new Do(8,16,128,128,zo),new Do(8,32,128,256,zo),new Do(32,128,258,1024,zo),new Do(32,258,258,4096,zo)];function $o(){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=uo,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),wo(this.dyn_ltree),wo(this.dyn_dtree),wo(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),wo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),wo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const No=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==bo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_o&&t.status!==xo?1:0},Mo=e=>{if(No(e))return vo(e,no);e.total_in=e.total_out=0,e.data_type=po;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?bo:_o,e.adler=2===t.wrap?0:1,t.last_flush=-2,Xn(t),to},Po=e=>{const t=Mo(e);return t===to&&(e=>{e.window_size=2*e.w_size,wo(e.head),e.max_lazy_match=Bo[e.level].max_lazy,e.good_match=Bo[e.level].good_length,e.nice_match=Bo[e.level].nice_length,e.max_chain_length=Bo[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0})(e.state),t},Uo=(e,t,i,n,o,r)=>{if(!e)return no;let a=1;if(t===ao&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==uo||n<8||n>15||t<0||t>9||r<0||r>mo||8===n&&1!==a)return vo(e,no);8===n&&(n=9);const d=new $o;return e.state=d,d.strm=e,d.status=bo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,Po(e)};var Ho=(e,t)=>{if(No(e)||t>eo||t<0)return e?vo(e,no):no;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===xo&&t!==Jn)return vo(e,0===e.avail_out?ro:no);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Io(e),0===e.avail_out)return i.last_flush=-1,to}else if(0===e.avail_in&&yo(t)<=yo(n)&&t!==Jn)return vo(e,ro);if(i.status===xo&&0!==e.avail_in)return vo(e,ro);if(i.status===bo&&0===i.wrap&&(i.status=_o),i.status===bo){let t=uo+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=lo||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,To(i,t),0!==i.strstart&&(To(i,e.adler>>>16),To(i,65535&e.adler)),e.adler=1,i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(57===i.status)if(e.adler=0,Ro(i,31),Ro(i,139),Ro(i,8),i.gzhead)Ro(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ro(i,255&i.gzhead.time),Ro(i,i.gzhead.time>>8&255),Ro(i,i.gzhead.time>>16&255),Ro(i,i.gzhead.time>>24&255),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Ro(i,255&i.gzhead.extra.length),Ro(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Hn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,3),i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,Io(e),0!==i.pending)return i.last_flush=-1,to;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Io(e),0!==i.pending))return i.last_flush=-1,to;Ro(i,255&e.adler),Ro(i,e.adler>>8&255),e.adler=0}if(i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(0!==e.avail_in||0!==i.lookahead||t!==Kn&&i.status!==xo){let n=0===i.level?Fo(i,t):i.strategy===lo?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Oo(e),0===e.lookahead)){if(t===Kn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===co?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=fo){if(Oo(e),e.lookahead<=fo&&t===Kn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+fo;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=fo-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):Bo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=xo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),to;if(2===n&&(t===Zn?jn(i):t!==eo&&(Yn(i,0,0,!1),t===Qn&&(wo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Io(e),0===e.avail_out))return i.last_flush=-1,to}return t!==Jn?to:i.wrap<=0?io:(2===i.wrap?(Ro(i,255&e.adler),Ro(i,e.adler>>8&255),Ro(i,e.adler>>16&255),Ro(i,e.adler>>24&255),Ro(i,255&e.total_in),Ro(i,e.total_in>>8&255),Ro(i,e.total_in>>16&255),Ro(i,e.total_in>>24&255)):(To(i,e.adler>>>16),To(i,65535&e.adler)),Io(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?to:io)},Vo=(e,t)=>{let i=t.length;if(No(e))return no;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==bo||n.lookahead)return no;if(1===o&&(e.adler=Pn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(wo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Oo(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=Eo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Oo(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,to},Wo={deflateInit:(e,t)=>Uo(e,t,uo,15,8,ho),deflateInit2:Uo,deflateReset:Po,deflateResetKeep:Mo,deflateSetHeader:(e,t)=>No(e)||2!==e.state.wrap?no:(e.state.gzhead=t,to),deflate:Ho,deflateEnd:e=>{if(No(e))return no;const t=e.state.status;return e.state=null,t===_o?vo(e,oo):to},deflateSetDictionary:Vo,deflateInfo:"pako deflate (from Nodeca project)"};const Xo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Yo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Xo(i,t)&&(e[t]=i[t])}}return e},Go=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const jo=new Uint8Array(256);for(let e=0;e<256;e++)jo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;jo[254]=jo[254]=1;var Ko=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Zo=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 Qo=Object.prototype.toString,{Z_NO_FLUSH:Jo,Z_SYNC_FLUSH:er,Z_FULL_FLUSH:tr,Z_FINISH:ir,Z_OK:nr,Z_STREAM_END:or,Z_DEFAULT_COMPRESSION:rr,Z_DEFAULT_STRATEGY:ar,Z_DEFLATED:dr}=Wn;function sr(e){this.options=Yo({level:rr,method:dr,chunkSize:16384,windowBits:15,memLevel:8,strategy:ar},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Zo,this.strm.avail_out=0;let i=Wo.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nr)throw new Error(Vn[i]);if(t.header&&Wo.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ko(t.dictionary):"[object ArrayBuffer]"===Qo.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Wo.deflateSetDictionary(this.strm,e),i!==nr)throw new Error(Vn[i]);this._dict_set=!0}}sr.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?ir:Jo,"string"==typeof e?i.input=Ko(e):"[object ArrayBuffer]"===Qo.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===er||r===tr)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Wo.deflate(i,r),o===or)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Wo.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===nr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},sr.prototype.onData=function(e){this.chunks.push(e)},sr.prototype.onEnd=function(e){e===nr&&(this.result=Go(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var lr={deflate:function(e,t){const i=new sr(t);if(i.push(e,!0),i.err)throw i.msg||Vn[i.err];return i.result}};const{deflate:cr}=lr;var mr=cr;const hr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},pr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in hr))throw"Unhandled character '"+e+"' in pack format";let i=hr[e].bytes,r=new DataView(new ArrayBuffer(i));hr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},ur=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in hr))throw"Unhandled character '"+e+"' in unpack format";let r=hr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=hr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class fr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this.chipRevision=null,this.chipVariant=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}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(),await this.detectChip();let e=ji(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(e+4*t);this.logger.log(`Chip type ${this.chipName}`)}async detectChip(){try{const e=(await this.getSecurityInfo()).chipId,t=Wi[e];if(t)return this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),void this.logger.debug(`Detected chip via IMAGE_CHIP_ID: ${e} (${this.chipName})`);this.logger.debug(`Unknown IMAGE_CHIP_ID: ${e}, falling back to magic value detection`)}catch(e){this.logger.debug(`GET_SECURITY_INFO failed, using magic value detection: ${e}`),this._inputBuffer.length=0,await Si(100);try{await this.sync()}catch(e){this.logger.debug(`Re-sync after GET_SECURITY_INFO failure: ${e}`)}}let e=await this.readRegister(1073745920),t=Xi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ti(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),this.logger.debug(`Detected chip via magic value: ${Ti(e>>>0,8)} (${this.chipName})`)}async getChipRevision(){if(this.chipFamily!==Vi)return 0;const e=await this.readRegister(1343410252);return 100*((e>>23&1)<<2|e>>4&3)+(15&e)}async getSecurityInfo(){const[e,t]=await this.checkCommand(20,[],0);if(0===t.length)throw new Error("GET_SECURITY_INFO not supported or returned empty response");if(t.length<12)throw new Error(`Invalid security info response length: ${t.length} (expected at least 12 bytes)`);return{flags:ur("<I",t.slice(0,4))[0],flashCryptCnt:t[4],keyPurposes:Array.from(t.slice(5,12)),chipId:t.length>=16?ur("<I",t.slice(12,16))[0]:0,apiVersion:t.length>=20?ur("<I",t.slice(16,20))[0]:0}}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Li){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==zi)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ti(e,8));let t=pr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Li?a=2:[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)||20===e?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ti(e)):new Error("Command failure error code "+Ti(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...pr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Si(10)}if(0==n.length){throw new Ki("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ri(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid head of packet ("+Ti(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid SLIP escape (0xdb, "+Ti(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ri(t)),t;t.push(e)}}throw new Ki("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=ur("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ti(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Li)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=pr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e),this.logger.log(`Changed baud rate to ${e}`)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop()}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Si(100),!0;await Si(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Fi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ti(t)}, FlashMode=${Ti(i)}, FlashSizeFreq=${Ti(n)}`)}let r,a=e.byteLength,d=0,s=Yi;n?(r=mr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ti(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Li?this.getEraseSize(t,e):e,a=this.IS_STUB?Yi:qi(3e4,e);let s=Date.now();return o=pr("<IIII",n,d,r,t),this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi||(o=o.concat(pr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ti(r,4)+", offset "+Ti(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Yi),o=pr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=pr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=pr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return ji(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=pr("<IIII",e,t,i,n);o>0&&r.concat(pr("<IIII",ji(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=ji(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=ur("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ti(t)} to register offset ${Ti(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ti(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Ai[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,pr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Yi:500,i=pr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Zi(this.chipFamily,this.chipRevision);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new gr(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class gr extends fr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Zi(this.chipFamily,this.chipRevision),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ti(e,8)+"-"+Ti(t,8)+". Can't load binary at overlapping address range "+Ti(r,8)+"-"+Ti(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Gi)}}const br=async(e,t,i,n,o,r,a)=>{let d,s,l,c=null;const m=t=>e({...t,manifest:d,build:s,chipFamily:l,chipVariant:c});var h=null,p="";try{h=JSON.parse(n)}catch{p=new URL(n,location.toString()).toString(),h=fetch(p).then(e=>e.json())}const u=new fr(t,i);window.esploader=u,m({state:"initializing",message:"Initializing...",details:{done:!1}});try{await u.initialize()}catch(e){return i.error(e),m({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(u.connected&&await u.disconnect())}l=(e=>{switch(e.chipFamily){case zi:return"ESP32";case Di:return"ESP32-S2";case Bi:return"ESP32-S3";case $i:return"ESP32-C2";case Ni:return"ESP32-C3";case Mi:return"ESP32-C5";case Pi:return"ESP32-C6";case Ui:return"ESP32-C61";case Hi:return"ESP32-H2";case Vi:return"ESP32-P4";case Li:return"ESP8266";default:return"Unknown Chip"}})(u),c=u.chipVariant,m({state:"initializing",message:`Initialized. Found ${l}${c?` (${c})`:""}`,details:{done:!0}}),m({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{d=await h}catch(e){return m({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await u.disconnect()}if(s=d.builds.find(e=>e.chipFamily===l&&(void 0===e.chipVariant||e.chipVariant===c)),m({state:"manifest",message:`Found manifest for ${d.name}`,details:{done:!0}}),!s){const e=c?`${l} (${c})`:l;return m({state:"error",message:`Your ${e} board is not supported.`,details:{error:"not_supported",details:e}}),void await u.disconnect()}m({state:"preparing",message:"Preparing installation...",details:{done:!1}});const f=s.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,p).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),g=await u.runStub();if(void 0!==a&&a>115200)try{await g.setBaudrate(a)}catch(e){i.log(`Could not change baud rate to ${a}: ${e.message}`)}const b=[];let _=0;for(const e of f)try{const t=await e;b.push(t instanceof ArrayBuffer?new Uint8Array(t):t),_+=t.byteLength}catch(e){return m({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await u.disconnect()}m({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(m({state:"erasing",message:"Erasing device...",details:{done:!1}}),await g.eraseFlash(),m({state:"erasing",message:"Device erased",details:{done:!0}}));let x=0;m({state:"writing",message:`Writing progress: ${x}%`,details:{bytesTotal:_,bytesWritten:0,percentage:x}});let v=0;for(const e of s.parts){const t=b.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await g.flashData(i,e=>{const t=Math.floor((v+e)/_*100);t!==x&&(x=t,m({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:_,bytesWritten:v+e,percentage:t}}))},e.offset,!0)}catch(e){return m({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await u.disconnect()}v+=t.byteLength}m({state:"writing",message:"Writing complete",details:{bytesTotal:_,bytesWritten:v,percentage:100}}),await V(100),console.log("DISCONNECT"),await u.disconnect(),console.log("HARD RESET"),await u.hardReset(),m({state:"finished",message:"All done!"})},_r=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class xr extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
|
|
417
|
+
`,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ri=e=>"["+e.map(e=>Ti(e)).join(", ")+"]",Ti=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Si=e=>new Promise(t=>setTimeout(t,e)),Ai={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=1343410176,Fi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Li=33382,zi=50,Di=12882,Bi=12883,$i=12994,Ni=12995,Mi=12997,Pi=12998,Ui=207969,Hi=12914,Vi=12928,Wi={5:{name:"ESP32-C3",family:Ni},9:{name:"ESP32-S3",family:Bi},12:{name:"ESP32-C2",family:$i},13:{name:"ESP32-C6",family:Pi},16:{name:"ESP32-H2",family:Hi},18:{name:"ESP32-P4",family:Vi},20:{name:"ESP32-C61",family:Ui},23:{name:"ESP32-C5",family:Mi}},Xi={4293968129:{name:"ESP8266",family:Li},15736195:{name:"ESP32",family:zi},1990:{name:"ESP32-S2",family:Di},9:{name:"ESP32-S3",family:Bi},203546735:{name:"ESP32-C2",family:$i},1867591791:{name:"ESP32-C2",family:$i},2084675695:{name:"ESP32-C2",family:$i},456216687:{name:"ESP32-C3",family:Ni},1130455151:{name:"ESP32-C3",family:Ni},1216438383:{name:"ESP32-C3",family:Ni},1763790959:{name:"ESP32-C3",family:Ni},285294703:{name:"ESP32-C5",family:Mi},1607549039:{name:"ESP32-C5",family:Mi},1548751960:{name:"ESP32-C5",family:Mi},1675706479:{name:"ESP32-C5",family:Mi},752910447:{name:"ESP32-C6",family:Pi},606167151:{name:"ESP32-C61",family:Ui},871374959:{name:"ESP32-C61",family:Ui},1333878895:{name:"ESP32-C61",family:Ui},1913741423:{name:"ESP32-C61",family:Ui},2548236392:{name:"ESP32-H2",family:Hi},3619110528:{name:"ESP32-H2",family:Hi},0:{name:"ESP32-P4",family:Vi},117676761:{name:"ESP32-P4",family:Vi},182303440:{name:"ESP32-P4",family:Vi}},Yi=3e3,Gi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Yi?Yi:i},ji=e=>{switch(e){case zi:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Bi:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Li:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case $i:case Ni:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Mi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Pi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Vi:return{regBase:1342754816,baseFuse:Oi,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class Ki extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Zi=async(e,t)=>{let i;return e==zi?i=await import("./esp32-BNIFdu1P.js"):e==Di?i=await import("./esp32s2-Bk4mqADi.js"):e==Bi?i=await import("./esp32s3-Df3OUCOC.js"):e==Li?i=await import("./esp8266-CQFcqJ_a.js"):e==$i?i=await import("./esp32c2-BqxquOKw.js"):e==Ni?i=await import("./esp32c3-BOOqe8me.js"):e==Mi?i=await import("./esp32c5-mcj52-K1.js"):e==Pi?i=await import("./esp32c6-Cg5qYgg7.js"):e==Ui?i=await import("./esp32c61-CzCdsydk.js"):e==Hi?i=await import("./esp32h2-DZa_lpff.js"):e==Vi&&(i=null!=t&&t>=300?await import("./esp32p4r3-Cle9QJmZ.js"):await import("./esp32p4-DyGqUAeZ.js")),{...i,text:Ci(atob(i.text)),data:Ci(atob(i.data))}};function Qi(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ji=256,en=286,tn=30,nn=15,on=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]),rn=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),dn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sn=new Array(576);Qi(sn);const ln=new Array(60);Qi(ln);const cn=new Array(512);Qi(cn);const mn=new Array(256);Qi(mn);const hn=new Array(29);Qi(hn);const pn=new Array(tn);function un(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let fn,gn,bn;function _n(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Qi(pn);const xn=e=>e<256?cn[e]:cn[256+(e>>>7)],vn=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},yn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,vn(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},wn=(e,t,i)=>{yn(e,i[2*t],i[2*t+1])},kn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},En=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=nn;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=kn(n[t]++,t))}},In=e=>{let t;for(t=0;t<en;t++)e.dyn_ltree[2*t]=0;for(t=0;t<tn;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Cn=e=>{e.bi_valid>8?vn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Rn=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Tn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&Rn(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!Rn(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Sn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?wn(e,o,t):(r=mn[o],wn(e,r+Ji+1,t),a=on[r],0!==a&&(o-=hn[r],yn(e,o,a)),n--,r=xn(n),wn(e,r,i),a=rn[r],0!==a&&(n-=pn[r],yn(e,n,a)))}while(d<e.sym_next);wn(e,256,t)},An=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Tn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Tn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Tn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=nn;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),En(i,l,e.bl_count)},On=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Fn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{wn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(wn(e,o,e.bl_tree),d--),wn(e,16,e.bl_tree),yn(e,d-3,2)):d<=10?(wn(e,17,e.bl_tree),yn(e,d-3,3)):(wn(e,18,e.bl_tree),yn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let Ln=!1;const zn=(e,t,i,n)=>{yn(e,0+(n?1:0),3),Cn(e),vn(e,i),vn(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Dn=e=>{Ln||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(hn[n]=i,e=0;e<1<<on[n];e++)mn[i++]=n;for(mn[i-1]=n,o=0,n=0;n<16;n++)for(pn[n]=o,e=0;e<1<<rn[n];e++)cn[o++]=n;for(o>>=7;n<tn;n++)for(pn[n]=o<<7,e=0;e<1<<rn[n]-7;e++)cn[256+o++]=n;for(t=0;t<=nn;t++)r[t]=0;for(e=0;e<=143;)sn[2*e+1]=8,e++,r[8]++;for(;e<=255;)sn[2*e+1]=9,e++,r[9]++;for(;e<=279;)sn[2*e+1]=7,e++,r[7]++;for(;e<=287;)sn[2*e+1]=8,e++,r[8]++;for(En(sn,287,r),e=0;e<tn;e++)ln[2*e+1]=5,ln[2*e]=kn(e,5);fn=new un(sn,on,257,en,nn),gn=new un(ln,rn,0,tn,nn),bn=new un(new Array(0),an,0,19,7)})(),Ln=!0),e.l_desc=new _n(e.dyn_ltree,fn),e.d_desc=new _n(e.dyn_dtree,gn),e.bl_desc=new _n(e.bl_tree,bn),e.bi_buf=0,e.bi_valid=0,In(e)},Bn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Ji;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),An(e,e.l_desc),An(e,e.d_desc),a=(e=>{let t;for(On(e,e.dyn_ltree,e.l_desc.max_code),On(e,e.dyn_dtree,e.d_desc.max_code),An(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*dn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?zn(e,t,i,n):4===e.strategy||r===o?(yn(e,2+(n?1:0),3),Sn(e,sn,ln)):(yn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(yn(e,t-257,5),yn(e,i-1,5),yn(e,n-4,4),o=0;o<n;o++)yn(e,e.bl_tree[2*dn[o]+1],3);Fn(e,e.dyn_ltree,t-1),Fn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Sn(e,e.dyn_ltree,e.dyn_dtree)),In(e),n&&Cn(e)},$n=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(mn[i]+Ji+1)]++,e.dyn_dtree[2*xn(t)]++),e.sym_next===e.sym_end),Nn=e=>{yn(e,2,3),wn(e,256,sn),(e=>{16===e.bi_valid?(vn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},Mn={_tr_init:Dn,_tr_stored_block:zn,_tr_flush_block:Bn,_tr_tally:$n,_tr_align:Nn};var Pn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Un=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Hn=(e,t,i,n)=>{const o=Un,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Vn={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"},Wn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Xn,_tr_stored_block:Yn,_tr_flush_block:Gn,_tr_tally:qn,_tr_align:jn}=Mn,{Z_NO_FLUSH:Kn,Z_PARTIAL_FLUSH:Zn,Z_FULL_FLUSH:Qn,Z_FINISH:Jn,Z_BLOCK:eo,Z_OK:to,Z_STREAM_END:io,Z_STREAM_ERROR:no,Z_DATA_ERROR:oo,Z_BUF_ERROR:ro,Z_DEFAULT_COMPRESSION:ao,Z_FILTERED:so,Z_HUFFMAN_ONLY:lo,Z_RLE:co,Z_FIXED:mo,Z_DEFAULT_STRATEGY:ho,Z_UNKNOWN:po,Z_DEFLATED:uo}=Wn,fo=258,go=262,bo=42,_o=113,xo=666,vo=(e,t)=>(e.msg=Vn[t],t),yo=e=>2*e-(e>4?9:0),wo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ko=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let Eo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const Io=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Co=(e,t)=>{Gn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Io(e.strm)},Ro=(e,t)=>{e.pending_buf[e.pending++]=t},To=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},So=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Pn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Hn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ao=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-go?e.strstart-(e.w_size-go):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+fo;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=fo-(h-r),r=h-fo,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Oo=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-go)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ko(e),n+=t),0===e.strm.avail_in)break;if(i=So(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=Eo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=Eo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<go&&0!==e.strm.avail_in)},Fo=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Jn||t===Kn||i!==n+e.strm.avail_in))break;a=t===Jn&&i===n+e.strm.avail_in?1:0,Yn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Io(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(So(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==Kn&&t!==Jn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(So(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Jn)&&t!==Kn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Jn&&0===e.strm.avail_in&&i===n?1:0,Yn(e,e.block_start,i,a),e.block_start+=i,Io(e.strm)),a?3:1)},Lo=(e,t)=>{let i,n;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2},zo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<go){if(Oo(e),e.lookahead<go&&t===Kn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-go&&(e.match_length=Ao(e,i),e.match_length<=5&&(e.strategy===so||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=Eo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Co(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Co(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2};function Do(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const Bo=[new Do(0,0,0,0,Fo),new Do(4,4,8,4,Lo),new Do(4,5,16,8,Lo),new Do(4,6,32,32,Lo),new Do(4,4,16,16,zo),new Do(8,16,32,32,zo),new Do(8,16,128,128,zo),new Do(8,32,128,256,zo),new Do(32,128,258,1024,zo),new Do(32,258,258,4096,zo)];function $o(){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=uo,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),wo(this.dyn_ltree),wo(this.dyn_dtree),wo(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),wo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),wo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const No=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==bo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_o&&t.status!==xo?1:0},Mo=e=>{if(No(e))return vo(e,no);e.total_in=e.total_out=0,e.data_type=po;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?bo:_o,e.adler=2===t.wrap?0:1,t.last_flush=-2,Xn(t),to},Po=e=>{const t=Mo(e);return t===to&&(e=>{e.window_size=2*e.w_size,wo(e.head),e.max_lazy_match=Bo[e.level].max_lazy,e.good_match=Bo[e.level].good_length,e.nice_match=Bo[e.level].nice_length,e.max_chain_length=Bo[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0})(e.state),t},Uo=(e,t,i,n,o,r)=>{if(!e)return no;let a=1;if(t===ao&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==uo||n<8||n>15||t<0||t>9||r<0||r>mo||8===n&&1!==a)return vo(e,no);8===n&&(n=9);const d=new $o;return e.state=d,d.strm=e,d.status=bo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,Po(e)};var Ho=(e,t)=>{if(No(e)||t>eo||t<0)return e?vo(e,no):no;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===xo&&t!==Jn)return vo(e,0===e.avail_out?ro:no);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Io(e),0===e.avail_out)return i.last_flush=-1,to}else if(0===e.avail_in&&yo(t)<=yo(n)&&t!==Jn)return vo(e,ro);if(i.status===xo&&0!==e.avail_in)return vo(e,ro);if(i.status===bo&&0===i.wrap&&(i.status=_o),i.status===bo){let t=uo+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=lo||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,To(i,t),0!==i.strstart&&(To(i,e.adler>>>16),To(i,65535&e.adler)),e.adler=1,i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(57===i.status)if(e.adler=0,Ro(i,31),Ro(i,139),Ro(i,8),i.gzhead)Ro(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ro(i,255&i.gzhead.time),Ro(i,i.gzhead.time>>8&255),Ro(i,i.gzhead.time>>16&255),Ro(i,i.gzhead.time>>24&255),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Ro(i,255&i.gzhead.extra.length),Ro(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Hn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,0),Ro(i,9===i.level?2:i.strategy>=lo||i.level<2?4:0),Ro(i,3),i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,Io(e),0!==i.pending)return i.last_flush=-1,to;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n)),Io(e),0!==i.pending)return i.last_flush=-1,to;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Ro(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Hn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Io(e),0!==i.pending))return i.last_flush=-1,to;Ro(i,255&e.adler),Ro(i,e.adler>>8&255),e.adler=0}if(i.status=_o,Io(e),0!==i.pending)return i.last_flush=-1,to}if(0!==e.avail_in||0!==i.lookahead||t!==Kn&&i.status!==xo){let n=0===i.level?Fo(i,t):i.strategy===lo?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Oo(e),0===e.lookahead)){if(t===Kn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===co?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=fo){if(Oo(e),e.lookahead<=fo&&t===Kn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+fo;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=fo-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Co(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Jn?(Co(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Co(e,!1),0===e.strm.avail_out)?1:2})(i,t):Bo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=xo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),to;if(2===n&&(t===Zn?jn(i):t!==eo&&(Yn(i,0,0,!1),t===Qn&&(wo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Io(e),0===e.avail_out))return i.last_flush=-1,to}return t!==Jn?to:i.wrap<=0?io:(2===i.wrap?(Ro(i,255&e.adler),Ro(i,e.adler>>8&255),Ro(i,e.adler>>16&255),Ro(i,e.adler>>24&255),Ro(i,255&e.total_in),Ro(i,e.total_in>>8&255),Ro(i,e.total_in>>16&255),Ro(i,e.total_in>>24&255)):(To(i,e.adler>>>16),To(i,65535&e.adler)),Io(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?to:io)},Vo=(e,t)=>{let i=t.length;if(No(e))return no;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==bo||n.lookahead)return no;if(1===o&&(e.adler=Pn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(wo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Oo(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=Eo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Oo(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,to},Wo={deflateInit:(e,t)=>Uo(e,t,uo,15,8,ho),deflateInit2:Uo,deflateReset:Po,deflateResetKeep:Mo,deflateSetHeader:(e,t)=>No(e)||2!==e.state.wrap?no:(e.state.gzhead=t,to),deflate:Ho,deflateEnd:e=>{if(No(e))return no;const t=e.state.status;return e.state=null,t===_o?vo(e,oo):to},deflateSetDictionary:Vo,deflateInfo:"pako deflate (from Nodeca project)"};const Xo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Yo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Xo(i,t)&&(e[t]=i[t])}}return e},Go=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const jo=new Uint8Array(256);for(let e=0;e<256;e++)jo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;jo[254]=jo[254]=1;var Ko=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Zo=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 Qo=Object.prototype.toString,{Z_NO_FLUSH:Jo,Z_SYNC_FLUSH:er,Z_FULL_FLUSH:tr,Z_FINISH:ir,Z_OK:nr,Z_STREAM_END:or,Z_DEFAULT_COMPRESSION:rr,Z_DEFAULT_STRATEGY:ar,Z_DEFLATED:dr}=Wn;function sr(e){this.options=Yo({level:rr,method:dr,chunkSize:16384,windowBits:15,memLevel:8,strategy:ar},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Zo,this.strm.avail_out=0;let i=Wo.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nr)throw new Error(Vn[i]);if(t.header&&Wo.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ko(t.dictionary):"[object ArrayBuffer]"===Qo.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Wo.deflateSetDictionary(this.strm,e),i!==nr)throw new Error(Vn[i]);this._dict_set=!0}}sr.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?ir:Jo,"string"==typeof e?i.input=Ko(e):"[object ArrayBuffer]"===Qo.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===er||r===tr)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Wo.deflate(i,r),o===or)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Wo.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===nr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},sr.prototype.onData=function(e){this.chunks.push(e)},sr.prototype.onEnd=function(e){e===nr&&(this.result=Go(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var lr={deflate:function(e,t){const i=new sr(t);if(i.push(e,!0),i.err)throw i.msg||Vn[i.err];return i.result}};const{deflate:cr}=lr;var mr=cr;const hr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},pr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in hr))throw"Unhandled character '"+e+"' in pack format";let i=hr[e].bytes,r=new DataView(new ArrayBuffer(i));hr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},ur=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in hr))throw"Unhandled character '"+e+"' in unpack format";let r=hr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=hr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class fr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this.chipRevision=null,this.chipVariant=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}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(),await this.detectChip();let e=ji(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(e+4*t);this.logger.log(`Chip type ${this.chipName}`)}async detectChip(){try{const e=(await this.getSecurityInfo()).chipId,t=Wi[e];if(t)return this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),void this.logger.debug(`Detected chip via IMAGE_CHIP_ID: ${e} (${this.chipName})`);this.logger.debug(`Unknown IMAGE_CHIP_ID: ${e}, falling back to magic value detection`)}catch(e){this.logger.debug(`GET_SECURITY_INFO failed, using magic value detection: ${e}`),this._inputBuffer.length=0,await Si(100);try{await this.sync()}catch(e){this.logger.debug(`Re-sync after GET_SECURITY_INFO failure: ${e}`)}}let e=await this.readRegister(1073745920),t=Xi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ti(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family,this.chipFamily===Vi&&(this.chipRevision=await this.getChipRevision(),this.logger.debug(`ESP32-P4 revision: ${this.chipRevision}`),this.chipRevision>=300?this.chipVariant="rev300":this.chipVariant="rev0",this.logger.debug(`ESP32-P4 variant: ${this.chipVariant}`)),this.logger.debug(`Detected chip via magic value: ${Ti(e>>>0,8)} (${this.chipName})`)}async getChipRevision(){if(this.chipFamily!==Vi)return 0;const e=await this.readRegister(1343410252);return 100*((e>>23&1)<<2|e>>4&3)+(15&e)}async getSecurityInfo(){const[e,t]=await this.checkCommand(20,[],0);if(0===t.length)throw new Error("GET_SECURITY_INFO not supported or returned empty response");if(t.length<12)throw new Error(`Invalid security info response length: ${t.length} (expected at least 12 bytes)`);return{flags:ur("<I",t.slice(0,4))[0],flashCryptCnt:t[4],keyPurposes:Array.from(t.slice(5,12)),chipId:t.length>=16?ur("<I",t.slice(12,16))[0]:0,apiVersion:t.length>=20?ur("<I",t.slice(16,20))[0]:0}}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Li){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==zi)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ti(e,8));let t=pr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Li?a=2:[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)||20===e?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ti(e)):new Error("Command failure error code "+Ti(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...pr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Si(10)}if(0==n.length){throw new Ki("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ri(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid head of packet ("+Ti(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ri(n)),this.logger.debug("Remaining data in serial buffer: "+Ri(this._inputBuffer))),new Ki("Invalid SLIP escape (0xdb, "+Ti(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ri(t)),t;t.push(e)}}throw new Ki("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=ur("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ti(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Li)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=pr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e),this.logger.log(`Changed baud rate to ${e}`)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop()}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Si(100),!0;await Si(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Fi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ti(t)}, FlashMode=${Ti(i)}, FlashSizeFreq=${Ti(n)}`)}let r,a=e.byteLength,d=0,s=Yi;n?(r=mr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ti(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi,Vi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Li?this.getEraseSize(t,e):e,a=this.IS_STUB?Yi:qi(3e4,e);let s=Date.now();return o=pr("<IIII",n,d,r,t),this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi&&this.chipFamily!=Vi||(o=o.concat(pr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ti(r,4)+", offset "+Ti(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Yi),o=pr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=pr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=pr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return ji(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=pr("<IIII",e,t,i,n);o>0&&r.concat(pr("<IIII",ji(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=ji(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=ur("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ti(t)} to register offset ${Ti(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ti(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Ai[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,pr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,pr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Yi:500,i=pr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Zi(this.chipFamily,this.chipRevision);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new gr(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class gr extends fr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Zi(this.chipFamily,this.chipRevision),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ti(e,8)+"-"+Ti(t,8)+". Can't load binary at overlapping address range "+Ti(r,8)+"-"+Ti(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Gi)}}const br=async(e,t,i,n,o,r,a)=>{let d,s,l,c=null;const m=t=>e({...t,manifest:d,build:s,chipFamily:l,chipVariant:c});var h=null,p="";try{h=JSON.parse(n)}catch{p=new URL(n,location.toString()).toString(),h=fetch(p).then(e=>e.json())}const u=new fr(t,i);window.esploader=u,m({state:"initializing",message:"Initializing...",details:{done:!1}});try{await u.initialize()}catch(e){return i.error(e),m({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(u.connected&&await u.disconnect())}l=(e=>{switch(e.chipFamily){case zi:return"ESP32";case Di:return"ESP32-S2";case Bi:return"ESP32-S3";case $i:return"ESP32-C2";case Ni:return"ESP32-C3";case Mi:return"ESP32-C5";case Pi:return"ESP32-C6";case Ui:return"ESP32-C61";case Hi:return"ESP32-H2";case Vi:return"ESP32-P4";case Li:return"ESP8266";default:return"Unknown Chip"}})(u),c=u.chipVariant,m({state:"initializing",message:`Initialized. Found ${l}${c?` (${c})`:""}`,details:{done:!0}}),m({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{d=await h}catch(e){return m({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await u.disconnect()}if(s=d.builds.find(e=>e.chipFamily===l&&(void 0===e.chipVariant||e.chipVariant===c)),m({state:"manifest",message:`Found manifest for ${d.name}`,details:{done:!0}}),!s){const e=c?`${l} (${c})`:l;return m({state:"error",message:`Your ${e} board is not supported.`,details:{error:"not_supported",details:e}}),void await u.disconnect()}m({state:"preparing",message:"Preparing installation...",details:{done:!1}});const f=s.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,p).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),g=await u.runStub();if(void 0!==a&&a>115200)try{await g.setBaudrate(a)}catch(e){i.log(`Could not change baud rate to ${a}: ${e.message}`)}const b=[];let _=0;for(const e of f)try{const t=await e;b.push(t instanceof ArrayBuffer?new Uint8Array(t):t),_+=t.byteLength}catch(e){return m({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await u.disconnect()}m({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(m({state:"erasing",message:"Erasing device...",details:{done:!1}}),await g.eraseFlash(),m({state:"erasing",message:"Device erased",details:{done:!0}}));let x=0;m({state:"writing",message:`Writing progress: ${x}%`,details:{bytesTotal:_,bytesWritten:0,percentage:x}});let v=0;for(const e of s.parts){const t=b.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await g.flashData(i,e=>{const t=Math.floor((v+e)/_*100);t!==x&&(x=t,m({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:_,bytesWritten:v+e,percentage:t}}))},e.offset,!0)}catch(e){return m({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await u.disconnect()}v+=t.byteLength}m({state:"writing",message:"Writing complete",details:{bytesTotal:_,bytesWritten:v,percentage:100}}),await V(100),console.log("DISCONNECT"),await u.disconnect(),console.log("HARD RESET"),await u.hardReset(),m({state:"finished",message:"All done!"})},_r=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class xr extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
|
|
418
418
|
<ewt-dialog
|
|
419
419
|
open
|
|
420
420
|
.heading=${e}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tasmota-esp-web-tools",
|
|
3
|
-
"version": "8.3.
|
|
3
|
+
"version": "8.3.3",
|
|
4
4
|
"description": "Web tools for ESP devices",
|
|
5
5
|
"main": "dist/install-button.js",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@material/mwc-textfield": "^0.27.0",
|
|
36
36
|
"improv-wifi-serial-sdk": "^2.5.0",
|
|
37
37
|
"lit": "^2.8.0",
|
|
38
|
-
"tasmota-webserial-esptool": "^6.5.
|
|
38
|
+
"tasmota-webserial-esptool": "^6.5.4",
|
|
39
39
|
"tslib": "^2.8.1"
|
|
40
40
|
}
|
|
41
41
|
}
|