@kaeawc/auto-mobile 0.0.85 → 0.0.87
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.
- package/README.md +3 -3
- package/README.md.backup +3 -3
- package/dist/build-info.json +10 -10
- package/dist/src/index.js +1173 -840
- package/dist/src/utils/workers/iosBundleExtractWorker.js +3 -3
- package/node_modules/strtok3/lib/stream/StreamReader.js +6 -1
- package/node_modules/strtok3/package.json +1 -1
- package/package.json +21 -17
- package/dist/schemas/managed-slot-contract.json +0 -142
- package/dist/src/db/eventTables.ts +0 -8
- package/dist/src/db/migrations/2025_12_28_000_initial_schema.ts +0 -28
- package/dist/src/db/migrations/2025_12_30_000_performance_thresholds.ts +0 -85
- package/dist/src/db/migrations/2025_12_30_001_navigation_graph.ts +0 -223
- package/dist/src/db/migrations/2025_12_31_000_accessibility_baselines.ts +0 -34
- package/dist/src/db/migrations/2025_12_31_001_memory_audit.ts +0 -120
- package/dist/src/db/migrations/2026_01_01_000_recomposition_metrics.ts +0 -44
- package/dist/src/db/migrations/2026_01_02_000_prediction_history.ts +0 -87
- package/dist/src/db/migrations/2026_01_03_000_feature_flags.ts +0 -17
- package/dist/src/db/migrations/2026_01_03_000_test_executions.ts +0 -45
- package/dist/src/db/migrations/2026_01_05_000_tool_calls.ts +0 -31
- package/dist/src/db/migrations/2026_01_08_000_test_coverage.ts +0 -109
- package/dist/src/db/migrations/2026_01_09_000_video_recordings.ts +0 -66
- package/dist/src/db/migrations/2026_01_10_000_device_snapshots.ts +0 -54
- package/dist/src/db/migrations/2026_01_11_000_installed_apps.ts +0 -33
- package/dist/src/db/migrations/2026_01_11_000_video_recording_highlights.ts +0 -24
- package/dist/src/db/migrations/2026_01_13_000_installed_apps_session_tracking.ts +0 -27
- package/dist/src/db/migrations/2026_01_14_000_appearance_config.ts +0 -16
- package/dist/src/db/migrations/2026_01_25_000_navigation_screenshots.ts +0 -27
- package/dist/src/db/migrations/2026_01_25_001_test_run_details.ts +0 -97
- package/dist/src/db/migrations/2026_01_27_000_crash_anr_monitoring.ts +0 -204
- package/dist/src/db/migrations/2026_01_27_000_failures.ts +0 -217
- package/dist/src/db/migrations/2026_01_29_000_named_nodes.ts +0 -88
- package/dist/src/db/migrations/2026_01_30_000_performance_live_metrics.ts +0 -108
- package/dist/src/db/migrations/2026_03_15_000_telemetry_events.ts +0 -184
- package/dist/src/db/migrations/2026_03_18_000_navigation_events.ts +0 -36
- package/dist/src/db/migrations/2026_03_19_000_storage_events.ts +0 -37
- package/dist/src/db/migrations/2026_03_19_001_layout_events.ts +0 -39
- package/dist/src/db/migrations/2026_03_19_002_storage_events_previous_value.ts +0 -23
- package/dist/src/db/migrations/2026_03_19_003_layout_events_screen_name.ts +0 -23
- package/dist/src/db/migrations/2026_03_20_000_network_event_details.ts +0 -32
- package/dist/src/db/migrations/2026_04_01_000_drop_custom_events.ts +0 -41
- package/dist/src/db/migrations/2026_04_02_000_device_sessions.ts +0 -51
- package/dist/src/db/migrations/2026_07_01_000_failure_groups_signature_unique.ts +0 -162
- package/dist/src/db/migrations/2026_07_02_000_event_composite_indexes.ts +0 -62
- package/dist/src/db/migrations/2026_07_03_000_drop_redundant_device_indexes.ts +0 -66
- package/dist/src/db/migrations/2026_07_03_000_repair_datetime_now_defaults.ts +0 -278
- package/dist/src/db/migrations/2026_07_04_000_storage_events_key_lookup.ts +0 -60
- package/dist/src/db/migrations/2026_07_05_000_repair_updated_at_defaults.ts +0 -239
- package/dist/src/db/migrations/2026_07_24_000_device_locks.ts +0 -27
- package/dist/src/db/migrations/2026_07_27_000_session_tool_capabilities.ts +0 -17
- package/dist/src/db/migrations/2026_07_31_000_video_recordings_owner_session.ts +0 -39
- package/dist/src/db/migrations/2026_08_02_000_navigation_provenance.ts +0 -159
- package/dist/src/db/migrations/2026_08_17_000_emulator_loss_incidents.ts +0 -39
- package/dist/src/db/migrations/2026_08_22_000_provision_device_operations.ts +0 -21
- package/dist/src/db/migrations/2026_08_22_001_session_tool_overrides.ts +0 -106
- package/dist/src/db/migrations/2026_08_22_002_navigation_observation_eviction_index.ts +0 -67
- package/dist/src/db/migrations/2026_08_22_003_device_teardown_operations.ts +0 -19
- package/dist/src/db/migrations/2026_08_23_000_device_teardown_operation_owner.ts +0 -19
- package/dist/src/db/migrations/2026_08_23_001_default_existing_delete_device_disabled.ts +0 -26
- package/dist/src/db/migrations/2026_08_24_000_installed_apps_profile_type.ts +0 -15
- package/dist/src/db/migrations/2026_09_06_000_tool_selection_profile_provenance.ts +0 -36
- package/dist/src/db/migrations/2026_09_08_000_provision_device_operations_expiry.ts +0 -25
- package/dist/src/db/migrations/2026_09_10_000_provision_device_operation_attempt.ts +0 -25
- package/dist/src/db/migrations/2026_09_10_001_device_session_retention_index.ts +0 -14
- package/dist/src/db/migrations/2026_09_13_000_device_snapshot_vm_reclaim.ts +0 -63
- package/dist/src/db/migrations/2026_09_14_000_device_session_stable_identity.ts +0 -9
- package/dist/src/db/migrations/2026_09_14_001_device_session_identity_writer_fence.ts +0 -45
- package/dist/src/db/migrations/2026_09_16_000_device_session_liveness_owner.ts +0 -9
- package/dist/src/db/migrations/2026_09_16_001_device_session_liveness_contract.ts +0 -37
- package/dist/src/db/migrations/2026_09_17_000_device_session_liveness_writer_fence.ts +0 -48
- package/dist/src/db/migrations/2026_09_17_001_device_session_identity_fence_same_serial.ts +0 -53
- package/dist/src/db/migrations/2026_09_20_000_provision_device_lifecycle_outcome.ts +0 -32
- package/dist/src/db/migrations/2026_09_29_000_navigation_suggestion_provenance.ts +0 -41
- package/dist/src/db/migrations/2026_09_30_000_video_recording_display.ts +0 -17
- package/dist/src/db/migrations/2026_09_30_001_network_capture_fields.ts +0 -30
- package/dist/src/db/migrations/2026_10_05_000_device_locks_device_identity.ts +0 -28
- package/dist/src/db/migrations/2026_10_05_001_storage_events_key_lookup_insertion_order.ts +0 -38
- package/dist/src/db/migrations/2026_10_05_002_test_edge_coverage_edge_id_index.ts +0 -19
- package/dist/src/db/migrations/2026_10_09_000_device_resource_applications.ts +0 -22
- package/dist/src/db/migrations/2026_10_09_001_drop_provision_device_operations.ts +0 -32
- package/dist/src/db/migrations/2026_10_09_002_drop_device_teardown_operations.ts +0 -28
- package/dist/src/db/migrations/2026_10_12_000_rename_recording_tool_names.ts +0 -44
- package/dist/src/db/migrations/2026_10_12_001_video_recording_capture_teardown.ts +0 -17
- package/dist/src/db/migrations/2026_10_13_000_video_recording_recorder_daemon.ts +0 -17
- package/dist/src/index.js.map +0 -1
- package/dist/src/utils/workers/iosBundleExtractWorker.js.map +0 -1
- package/schemas/managed-slot-contract.json +0 -142
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`).slice(0,3).join(" \u2190 "),Y="cause"in q&&q.cause!==void 0?GW(q.cause):"";return[Q||"Error",J,Y?`cause=${Y}`:""].filter(Boolean).join(" | ")}if(q===null||q===void 0)return String(q);if(typeof q==="object"){if(Object.keys(q).length===0)return`${Object.prototype.toString.call(q)} (no enumerable keys)`;try{return JSON.stringify(q)}catch{return Object.prototype.toString.call(q)}}return String(q)}function qq(q){try{return q instanceof Error?q.message:String(q)}catch{try{return Object.prototype.toString.call(q)}catch{return"Unknown error"}}}function pW(q,Q){if(q instanceof d)return q;let J=qq(q);return new d(`${Q}: ${J}`,{cause:q})}function dW(q,Q){return new d(`${Q} is not supported on platform '${q}'. Supported platforms: android, ios.`)}var d,KW;var Tq=Rq(()=>{d=class d extends Error{constructor(q,Q){super(q,Q);let J=Q?.containerFailure??(Q?.cause instanceof d?Q.cause.containerFailure:void 0);if(J)this.containerFailure=J}};KW=class KW extends d{}});import*as f from"path";function Iq(q,Q,J="CtrlProxy bundle"){let Y=f.resolve(Q);for(let K of q.getEntries()){let R=f.resolve(Y,K.entryName),X=f.relative(Y,R);if(X===".."||X.startsWith(`..${f.sep}`)||f.isAbsolute(X))throw new d(`Refusing to extract ${J}: entry "${K.entryName}" resolves outside the extraction directory ${Y} (zip-slip / path traversal).`)}}var Aq=Rq(()=>{Tq()});var Qq=_((sW,jq)=>{jq.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var a=_((Fq)=>{var Oq={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",MAX_OUTPUT_EXCEEDED:"Decompressed data exceeds the declared uncompressed size",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DUPLICATE_ENTRY:"Duplicate entry name {0}",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",ZIP64_VALUE_TOO_LARGE:"Zip64 value exceeds the maximum safe integer",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function VW(q){return function(...Q){if(Q.length)q=q.replace(/\{(\d)\}/g,(J,Y)=>Q[Y]||"");return Error("ADM-ZIP: "+q)}}for(let q of Object.keys(Oq))Fq[q]=VW(Oq[q])});var Lq=_((nW,Bq)=>{var MW=o("fs"),C=o("path"),Sq=Qq(),Xq=a(),ZW=typeof process==="object"&&process.platform==="win32",wq=(q)=>typeof q==="object"&&q!==null,Dq=new Uint32Array(256).map((q,Q)=>{for(let J=0;J<8;J++)if((Q&1)!==0)Q=3988292384^Q>>>1;else Q>>>=1;return Q>>>0});function g(q){if(this.sep=C.sep,this.fs=MW,wq(q)){if(wq(q.fs)&&typeof q.fs.statSync==="function")this.fs=q.fs}}Bq.exports=g;g.prototype.makeDir=function(q){let Q=this;function J(Y){let K=Y.split(Q.sep)[0];Y.split(Q.sep).forEach(function(R){if(!R||R.substr(-1,1)===":")return;K+=Q.sep+R;var X;try{X=Q.fs.statSync(K)}catch(I){if(I.message&&I.message.startsWith("ENOENT"))Q.fs.mkdirSync(K);else throw I}if(X&&X.isFile())throw Xq.FILE_IN_THE_WAY(`"${K}"`)})}J(q)};g.prototype.writeFileTo=function(q,Q,J,Y){let K=this;if(K.fs.existsSync(q)){if(!J)return!1;var R=K.fs.statSync(q);if(R.isDirectory())return!1}var X=C.dirname(q);if(!K.fs.existsSync(X))K.makeDir(X);var I;try{I=K.fs.openSync(q,"w",438)}catch(L){K.fs.chmodSync(q,438),I=K.fs.openSync(q,"w",438)}if(I)try{K.fs.writeSync(I,Q,0,Q.length,0)}finally{K.fs.closeSync(I)}return K.fs.chmodSync(q,Y||438),!0};g.prototype.writeFileToAsync=function(q,Q,J,Y,K){if(typeof Y==="function")K=Y,Y=void 0;let R=this;R.fs.exists(q,function(X){if(X&&!J)return K(!1);R.fs.stat(q,function(I,L){if(X&&L&&L.isDirectory())return K(!1);var N=C.dirname(q);R.fs.exists(N,function(D){if(!D)try{R.makeDir(N)}catch(U){return K(!1)}let B=function(U){R.fs.write(U,Q,0,Q.length,0,function(H){R.fs.close(U,function(){if(H)return K(!1);R.fs.chmod(q,Y||438,function(){K(!0)})})})};R.fs.open(q,"w",438,function(U,H){if(U)R.fs.chmod(q,438,function(){R.fs.open(q,"w",438,function($,G){if($||!G)return K(!1);B(G)})});else if(H)B(H);else K(!1)})})})})};g.prototype.assertPathSafe=function(q,Q){let J=this;if(typeof J.fs.lstatSync!=="function")return;let Y=C.resolve(q),K=C.resolve(Q);if(K===Y)return;let R=C.relative(Y,K);if(!R||R===".."||R.startsWith(".."+C.sep)||C.isAbsolute(R))return;let X=Y;for(let I of R.split(C.sep)){if(!I||I===".")continue;X=C.join(X,I);let L;try{L=J.fs.lstatSync(X)}catch(N){break}if(L.isSymbolicLink())throw Xq.FILE_IN_THE_WAY(`"${X}"`)}};g.prototype.findFiles=function(q){let Q=this,J=typeof Q.fs.lstatSync==="function",Y=Q.fs.realpathSync(q);function K(X){if(!J)return!1;if(!Q.fs.lstatSync(X).isSymbolicLink())return!1;let I;try{I=Q.fs.realpathSync(X)}catch(L){return!0}return!(I===Y||I.startsWith(Y+C.sep))}function R(X,I,L,N){if(typeof I==="boolean")L=I,I=void 0;let D=[];return Q.fs.readdirSync(X).forEach(function(B){let U=C.join(X,B);if(K(U))return;let H=Q.fs.statSync(U);if(!I||I.test(U))D.push(C.normalize(U)+(H.isDirectory()?Q.sep:""));if(H.isDirectory()&&L){let $=Q.fs.realpathSync(U);if(!N.has($))N.add($),D=D.concat(R(U,I,L,N))}}),D}return R(q,void 0,!0,new Set([Y]))};g.prototype.findFilesAsync=function(q,Q){let J=this,Y=[],K=!1,R=function(D){if(K)return;K=!0,Q(D,D?void 0:Y)},X=typeof J.fs.lstat==="function",I=null,L=function(D,B){if(!X)return B(null,!1);J.fs.lstat(D,function(U,H){if(U)return B(U);if(!H||!H.isSymbolicLink())return B(null,!1);J.fs.realpath(D,function($,G){if($)return B(null,!0);B(null,!(G===I||G.startsWith(I+C.sep)))})})},N=function(D,B,U){J.fs.readdir(D,function(H,$){if(H)return U(H);let G=$.length;if(!G)return U();$.forEach(function(V){let Z=C.join(D,V);L(Z,function(T,W){if(T)return U(T);if(W){if(!--G)U();return}J.fs.stat(Z,function(M,j){if(M)return U(M);if(!j){if(!--G)U();return}if(Y.push(C.normalize(Z)+(j.isDirectory()?J.sep:"")),!j.isDirectory()){if(!--G)U();return}J.fs.realpath(Z,function(F,O){if(F)return U(F);if(B.has(O)){if(!--G)U();return}B.add(O),N(Z,B,function(S){if(S)return U(S);if(!--G)U()})})})})})})};J.fs.realpath(q,function(D,B){if(D)return R(D);I=B,N(q,new Set([B]),R)})};g.prototype.getAttributes=function(){};g.prototype.setAttributes=function(){};g.crc32update=function(q,Q){return Dq[(q^Q)&255]^q>>>8};g.crc32=function(q){if(typeof q==="string")q=Buffer.from(q,"utf8");let Q=q.length,J=-1;for(let Y=0;Y<Q;)J=g.crc32update(J,q[Y++]);return~J>>>0};g.methodToString=function(q){switch(q){case Sq.STORED:return"STORED ("+q+")";case Sq.DEFLATED:return"DEFLATED ("+q+")";default:return"UNSUPPORTED ("+q+")"}};g.canonical=function(q){if(!q)return"";let Q=C.posix.normalize("/"+q.split("\\").join("/"));return C.join(".",Q)};g.zipnamefix=function(q){if(!q)return"";let Q=C.posix.normalize("/"+q.split("\\").join("/"));return C.posix.join(".",Q)};g.findLast=function(q,Q){if(!Array.isArray(q))throw TypeError("arr is not array");let J=q.length>>>0;for(let Y=J-1;Y>=0;Y--)if(Q(q[Y],Y,q))return q[Y];return};g.sanitize=function(q,Q){q=C.resolve(C.normalize(q));var J=Q.split("/");for(var Y=0,K=J.length;Y<K;Y++){var R=C.normalize(C.join(q,J.slice(Y,K).join(C.sep)));if(R===q||R.startsWith(q+C.sep))return R}return C.normalize(C.join(q,C.basename(Q)))};g.toBuffer=function(Q,J){if(Buffer.isBuffer(Q))return Q;else if(Q instanceof Uint8Array)return Buffer.from(Q);else return typeof Q==="string"?J(Q):Buffer.alloc(0)};g.readBigUInt64LE=function(q,Q){let J=q.readUInt32LE(Q),K=q.readUInt32LE(Q+4)*4294967296+J;if(K>Number.MAX_SAFE_INTEGER)throw Xq.ZIP64_VALUE_TOO_LARGE();return K};g.writeBigUInt64LE=function(q,Q,J){let Y=Q>>>0,K=Math.floor(Q/4294967296)>>>0;q.writeUInt32LE(Y,J),q.writeUInt32LE(K,J+4)};g.fromDOS2Date=function(q){return new Date((q>>25&127)+1980,Math.max((q>>21&15)-1,0),Math.max(q>>16&31,1),q>>11&31,q>>5&63,(q&31)<<1)};g.fromDate2DOS=function(q){let Q=0,J=0;if(q.getFullYear()>1979)Q=(q.getFullYear()-1980&127)<<9|q.getMonth()+1<<5|q.getDate(),J=q.getHours()<<11|q.getMinutes()<<5|q.getSeconds()>>1;return Q<<16|J};g.isWin=ZW;g.crcTable=Dq});var Uq=_((rW,Nq)=>{var RW=o("path");Nq.exports=function(q,{fs:Q}){var J=q||"",Y=R(),K=null;function R(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}if(J&&Q.existsSync(J))K=Q.statSync(J),Y.directory=K.isDirectory(),Y.mtime=K.mtime,Y.atime=K.atime,Y.executable=(73&K.mode)!==0,Y.readonly=(128&K.mode)===0,Y.hidden=RW.basename(J)[0]===".";else console.warn("Invalid path: "+J);return{get directory(){return Y.directory},get readOnly(){return Y.readonly},get hidden(){return Y.hidden},get mtime(){return Y.mtime},get atime(){return Y.atime},get executable(){return Y.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:J,isDirectory:Y.directory,isReadOnly:Y.readonly,isHidden:Y.hidden,isExecutable:Y.executable,mTime:Y.mtime,aTime:Y.atime}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var xq=_((aW,Hq)=>{Hq.exports={efs:!0,encode:(q)=>Buffer.from(q,"utf8"),decode:(q)=>q.toString("utf8")}});var l=_((eW,s)=>{s.exports=Lq();s.exports.Constants=Qq();s.exports.Errors=a();s.exports.FileAttr=Uq();s.exports.decoder=xq()});var zq=_((tW,Eq)=>{var p=l(),A=p.Constants;Eq.exports=function(){var q=20,Q=10,J=0,Y=0,K=0,R=0,X=0,I=0,L=0,N=0,D=0,B=0,U=0,H=0,$=0;q|=p.isWin?2560:768,J|=A.FLG_EFS;let G={extraLen:0},V=(W)=>Math.max(0,W)>>>0,Z=(W)=>Math.max(0,W)&65535,T=(W)=>Math.max(0,W)&255;return K=p.fromDate2DOS(new Date),{get made(){return q},set made(W){q=W},get version(){return Q},set version(W){Q=W},get flags(){return J},set flags(W){J=W},get flags_efs(){return(J&A.FLG_EFS)>0},set flags_efs(W){if(W)J|=A.FLG_EFS;else J&=~A.FLG_EFS},get flags_desc(){return(J&A.FLG_DESC)>0},set flags_desc(W){if(W)J|=A.FLG_DESC;else J&=~A.FLG_DESC},get method(){return Y},set method(W){switch(W){case A.STORED:this.version=10;break;case A.DEFLATED:default:this.version=20}Y=W},get time(){return p.fromDOS2Date(this.timeval)},set time(W){W=new Date(W),this.timeval=p.fromDate2DOS(W)},get timeval(){return K},set timeval(W){K=V(W)},get timeHighByte(){return T(K>>>8)},get crc(){return R},set crc(W){R=V(W)},get compressedSize(){return X},set compressedSize(W){X=V(W)},get size(){return I},set size(W){I=V(W)},get fileNameLength(){return L},set fileNameLength(W){L=W},get extraLength(){return N},set extraLength(W){N=W},get extraLocalLength(){return G.extraLen},set extraLocalLength(W){G.extraLen=W},get commentLength(){return D},set commentLength(W){D=W},get diskNumStart(){return B},set diskNumStart(W){B=V(W)},get inAttr(){return U},set inAttr(W){U=V(W)},get attr(){return H},set attr(W){H=V(W)},get fileAttr(){return(H||0)>>16&511},get offset(){return $},set offset(W){$=V(W)},get encrypted(){return(J&A.FLG_ENC)===A.FLG_ENC},get centralHeaderSize(){return A.CENHDR+L+N+D},get realDataOffset(){return $+A.LOCHDR+G.fnameLen+G.extraLen},get localHeader(){return G},loadLocalHeaderFromBinary:function(W){if($<0||$+A.LOCHDR>W.length)throw p.Errors.INVALID_LOC();var M=W.slice($,$+A.LOCHDR);if(M.readUInt32LE(0)!==A.LOCSIG)throw p.Errors.INVALID_LOC();G.version=M.readUInt16LE(A.LOCVER),G.flags=M.readUInt16LE(A.LOCFLG),G.flags_desc=(G.flags&A.FLG_DESC)>0,G.method=M.readUInt16LE(A.LOCHOW),G.time=M.readUInt32LE(A.LOCTIM),G.crc=M.readUInt32LE(A.LOCCRC),G.compressedSize=M.readUInt32LE(A.LOCSIZ),G.size=M.readUInt32LE(A.LOCLEN),G.fnameLen=M.readUInt16LE(A.LOCNAM),G.extraLen=M.readUInt16LE(A.LOCEXT);let j=$+A.LOCHDR+G.fnameLen,F=j+G.extraLen;return W.slice(j,F)},loadFromBinary:function(W){if(W.length!==A.CENHDR||W.readUInt32LE(0)!==A.CENSIG)throw p.Errors.INVALID_CEN();q=W.readUInt16LE(A.CENVEM),Q=W.readUInt16LE(A.CENVER),J=W.readUInt16LE(A.CENFLG),Y=W.readUInt16LE(A.CENHOW),K=W.readUInt32LE(A.CENTIM),R=W.readUInt32LE(A.CENCRC),X=W.readUInt32LE(A.CENSIZ),I=W.readUInt32LE(A.CENLEN),L=W.readUInt16LE(A.CENNAM),N=W.readUInt16LE(A.CENEXT),D=W.readUInt16LE(A.CENCOM),B=W.readUInt16LE(A.CENDSK),U=W.readUInt16LE(A.CENATT),H=W.readUInt32LE(A.CENATX),$=W.readUInt32LE(A.CENOFF)},localHeaderToBinary:function(){var W=Buffer.alloc(A.LOCHDR);return W.writeUInt32LE(A.LOCSIG,0),W.writeUInt16LE(Q,A.LOCVER),W.writeUInt16LE(J&~A.FLG_DESC,A.LOCFLG),W.writeUInt16LE(Y,A.LOCHOW),W.writeUInt32LE(K,A.LOCTIM),W.writeUInt32LE(R,A.LOCCRC),W.writeUInt32LE(X,A.LOCSIZ),W.writeUInt32LE(I,A.LOCLEN),W.writeUInt16LE(L,A.LOCNAM),W.writeUInt16LE(G.extraLen,A.LOCEXT),W},centralHeaderToBinary:function(){var W=Buffer.alloc(A.CENHDR+L+N+D);return W.writeUInt32LE(A.CENSIG,0),W.writeUInt16LE(q,A.CENVEM),W.writeUInt16LE(Q,A.CENVER),W.writeUInt16LE(J&~A.FLG_DESC,A.CENFLG),W.writeUInt16LE(Y,A.CENHOW),W.writeUInt32LE(K,A.CENTIM),W.writeUInt32LE(R,A.CENCRC),W.writeUInt32LE(X,A.CENSIZ),W.writeUInt32LE(I,A.CENLEN),W.writeUInt16LE(L,A.CENNAM),W.writeUInt16LE(N,A.CENEXT),W.writeUInt16LE(D,A.CENCOM),W.writeUInt16LE(B,A.CENDSK),W.writeUInt16LE(U,A.CENATT),W.writeUInt32LE(H,A.CENATX),W.writeUInt32LE($,A.CENOFF),W},toJSON:function(){let W=function(M){return M+" bytes"};return{made:q,version:Q,flags:J,method:p.methodToString(Y),time:this.time,crc:"0x"+R.toString(16).toUpperCase(),compressedSize:W(X),size:W(I),fileNameLength:W(L),extraLength:W(N),commentLength:W(D),diskNumStart:B,inAttr:U,attr:H,offset:$,centralHeaderSize:W(A.CENHDR+L+N+D)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Pq=_((q0,Cq)=>{var m=l(),w=m.Constants;Cq.exports=function(){var q=0,Q=0,J=0,Y=0,K=0;let R=()=>q>w.EF_ZIP64_OR_16||Q>w.EF_ZIP64_OR_16||J>w.EF_ZIP64_OR_32||Y>w.EF_ZIP64_OR_32;return{get diskEntries(){return q},set diskEntries(X){q=Q=X},get totalEntries(){return Q},set totalEntries(X){Q=q=X},get size(){return J},set size(X){J=X},get offset(){return Y},set offset(X){Y=X},get commentLength(){return K},set commentLength(X){K=X},get mainHeaderSize(){return(R()?w.ZIP64HDR+w.END64HDR:0)+w.ENDHDR+K},loadFromBinary:function(X){if((X.length!==w.ENDHDR||X.readUInt32LE(0)!==w.ENDSIG)&&(X.length<w.ZIP64HDR||X.readUInt32LE(0)!==w.ZIP64SIG))throw m.Errors.INVALID_END();if(X.readUInt32LE(0)===w.ENDSIG)q=X.readUInt16LE(w.ENDSUB),Q=X.readUInt16LE(w.ENDTOT),J=X.readUInt32LE(w.ENDSIZ),Y=X.readUInt32LE(w.ENDOFF),K=X.readUInt16LE(w.ENDCOM);else q=m.readBigUInt64LE(X,w.ZIP64SUB),Q=m.readBigUInt64LE(X,w.ZIP64TOT),J=m.readBigUInt64LE(X,w.ZIP64SIZB),Y=m.readBigUInt64LE(X,w.ZIP64OFF),K=0},toBinary:function(){if(!R()){var X=Buffer.alloc(w.ENDHDR+K);return X.writeUInt32LE(w.ENDSIG,0),X.writeUInt32LE(0,4),X.writeUInt16LE(q,w.ENDSUB),X.writeUInt16LE(Q,w.ENDTOT),X.writeUInt32LE(J,w.ENDSIZ),X.writeUInt32LE(Y,w.ENDOFF),X.writeUInt16LE(K,w.ENDCOM),X.fill(" ",w.ENDHDR),X}var X=Buffer.alloc(this.mainHeaderSize);let I=0;X.writeUInt32LE(w.ZIP64SIG,I),m.writeBigUInt64LE(X,w.ZIP64HDR-w.ZIP64LEAD,I+w.ZIP64SIZE),X.writeUInt16LE(45,I+w.ZIP64VEM),X.writeUInt16LE(45,I+w.ZIP64VER),X.writeUInt32LE(0,I+w.ZIP64DSK),X.writeUInt32LE(0,I+w.ZIP64DSKDIR),m.writeBigUInt64LE(X,q,I+w.ZIP64SUB),m.writeBigUInt64LE(X,Q,I+w.ZIP64TOT),m.writeBigUInt64LE(X,J,I+w.ZIP64SIZB),m.writeBigUInt64LE(X,Y,I+w.ZIP64OFF);let L=Y+J;return I+=w.ZIP64HDR,X.writeUInt32LE(w.END64SIG,I),X.writeUInt32LE(0,I+w.END64START),m.writeBigUInt64LE(X,L,I+w.END64OFF),X.writeUInt32LE(1,I+w.END64NUMDISKS),I+=w.END64HDR,X.writeUInt32LE(w.ENDSIG,I),X.writeUInt32LE(0,I+4),X.writeUInt16LE(Math.min(q,w.EF_ZIP64_OR_16),I+w.ENDSUB),X.writeUInt16LE(Math.min(Q,w.EF_ZIP64_OR_16),I+w.ENDTOT),X.writeUInt32LE(Math.min(J,w.EF_ZIP64_OR_32),I+w.ENDSIZ),X.writeUInt32LE(Math.min(Y,w.EF_ZIP64_OR_32),I+w.ENDOFF),X.writeUInt16LE(K,I+w.ENDCOM),X.fill(" ",I+w.ENDHDR),X},toJSON:function(){let X=function(I,L){let N=I.toString(16).toUpperCase();while(N.length<L)N="0"+N;return"0x"+N};return{diskEntries:q,totalEntries:Q,size:J+" bytes",offset:X(Y,4),commentLength:K}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Yq=_((TW)=>{TW.EntryHeader=zq();TW.MainHeader=Pq()});var kq=_((J0,gq)=>{gq.exports=function(q){var Q=o("zlib"),J={chunkSize:(parseInt(q.length/1024)+1)*1024};return{deflate:function(){return Q.deflateRawSync(q,J)},deflateAsync:function(Y){var K=Q.createDeflateRaw(J),R=[],X=0;K.on("data",function(I){R.push(I),X+=I.length}),K.on("end",function(){var I=Buffer.alloc(X),L=0;I.fill(0);for(var N=0;N<R.length;N++){var D=R[N];D.copy(I,L),L+=D.length}Y&&Y(I)}),K.end(q)}}}});var bq=_((Q0,vq)=>{var jW=+(process?.versions?.node??"").split(".")[0]||0,OW=a();vq.exports=function(q,Q){var J=o("zlib");let Y=Q>0?Q:1,K=jW>=15?{maxOutputLength:Y}:{};return{inflate:function(){return J.inflateRawSync(q,K)},inflateAsync:function(R){var X=J.createInflateRaw(K),I=[],L=0,N=!1;let D=function(B){if(N)return;N=!0,X.destroy(),R&&R(Buffer.alloc(0),B)};X.on("error",function(B){D(B)}),X.on("data",function(B){if(N)return;if(L+=B.length,L>Y)return D(OW.MAX_OUTPUT_EXCEEDED());I.push(B)}),X.on("end",function(){if(N)return;N=!0;var B=Buffer.alloc(L),U=0;B.fill(0);for(var H=0;H<I.length;H++){var $=I[H];$.copy(B,U),U+=$.length}R&&R(B)}),X.end(q)}}}});var mq=_((X0,hq)=>{var{randomFillSync:uq}=o("crypto"),FW=a(),SW=new Uint32Array(256).map((q,Q)=>{for(let J=0;J<8;J++)if((Q&1)!==0)Q=Q>>>1^3988292384;else Q>>>=1;return Q>>>0}),yq=(q,Q)=>Math.imul(q,Q)>>>0,_q=(q,Q)=>{return SW[(q^Q)&255]^q>>>8},e=()=>{if(typeof uq==="function")return uq(Buffer.alloc(12));else return e.node()};e.node=()=>{let q=Buffer.alloc(12),Q=q.length;for(let J=0;J<Q;J++)q[J]=Math.random()*256&255;return q};var Wq={genSalt:e};function Jq(q){let Q=Buffer.isBuffer(q)?q:Buffer.from(q);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let J=0;J<Q.length;J++)this.updateKeys(Q[J])}Jq.prototype.updateKeys=function(q){let Q=this.keys;return Q[0]=_q(Q[0],q),Q[1]+=Q[0]&255,Q[1]=yq(Q[1],134775813)+1,Q[2]=_q(Q[2],Q[1]>>>24),q};Jq.prototype.next=function(){let q=(this.keys[2]|2)>>>0;return yq(q,q^1)>>8&255};function wW(q){let Q=new Jq(q);return function(J){let Y=Buffer.alloc(J.length),K=0;for(let R of J)Y[K++]=Q.updateKeys(R^Q.next());return Y}}function DW(q){let Q=new Jq(q);return function(J,Y,K=0){if(!Y)Y=Buffer.alloc(J.length);for(let R of J){let X=Q.next();Y[K++]=R^X,Q.updateKeys(R)}return Y}}function BW(q,Q,J){if(!q||!Buffer.isBuffer(q)||q.length<12)return Buffer.alloc(0);let Y=wW(J),K=Y(q.slice(0,12)),R=(Q.flags&8)===8?Q.timeHighByte:Q.crc>>>24;if(K[11]!==R)throw FW.WRONG_PASSWORD();return Y(q.slice(12))}function LW(q){if(Buffer.isBuffer(q)&&q.length>=12)Wq.genSalt=function(){return q.slice(0,12)};else if(q==="node")Wq.genSalt=e.node;else Wq.genSalt=e}function NW(q,Q,J,Y=!1){if(q==null)q=Buffer.alloc(0);if(!Buffer.isBuffer(q))q=Buffer.from(q.toString());let K=DW(J),R=Wq.genSalt();if(R[11]=Q.crc>>>24&255,Y)R[10]=Q.crc>>>16&255;let X=Buffer.alloc(q.length+12);return K(R,X),K(q,X,12)}hq.exports={decrypt:BW,encrypt:NW,_salter:LW}});var fq=_((UW)=>{UW.Deflater=kq();UW.Inflater=bq();UW.ZipCrypto=mq()});var Gq=_(($0,pq)=>{var P=l(),zW=Yq(),h=P.Constants,$q=fq();pq.exports=function(q,Q){var J=new zW.EntryHeader,Y=Buffer.alloc(0),K=Buffer.alloc(0),R=!1,X=null,I=Buffer.alloc(0),L=Buffer.alloc(0),N=!0;let D=q,B=typeof D.decoder==="object"?D.decoder:P.decoder;N=B.hasOwnProperty("efs")?B.efs:!1;function U(){if(!Q||!(Q instanceof Uint8Array))return Buffer.alloc(0);L=J.loadLocalHeaderFromBinary(Q);let W=J.realDataOffset,M=W+J.compressedSize;if(W<0||M<W||M>Q.length)throw P.Errors.INVALID_LOC();return Q.slice(W,M)}function H(W){let M=J.flags_desc||J.localHeader.flags_desc?J.crc:J.localHeader.crc;return P.crc32(W)===M}function $(W,M,j){if(typeof M>"u"&&typeof W==="string")j=W,W=void 0;if(R){if(W&&M)M(Buffer.alloc(0),P.Errors.DIRECTORY_CONTENT_ERROR());return Buffer.alloc(0)}var F;try{if(F=U(),F.length===0){if(W&&M)M(F);return F}if(J.encrypted){if(typeof j!=="string"&&!Buffer.isBuffer(j))throw P.Errors.INVALID_PASS_PARAM();F=$q.ZipCrypto.decrypt(F,J,j)}}catch(x){if(W&&M)return M(Buffer.alloc(0),x),Buffer.alloc(0);throw x}var O;switch(J.method){case P.Constants.STORED:if(O=Buffer.alloc(F.length),F.copy(O),!H(O)){if(W&&M)M(O,P.Errors.BAD_CRC());throw P.Errors.BAD_CRC()}else{if(W&&M)M(O);return O}case P.Constants.DEFLATED:var S=new $q.Inflater(F,J.size);if(!W){if(O=S.inflate(),!H(O))throw P.Errors.BAD_CRC(`"${B.decode(Y)}"`);return O}else S.inflateAsync(function(x,E){if(!M)return;if(E)M(Buffer.alloc(0),E);else if(!H(x))M(x,P.Errors.BAD_CRC());else M(x)});break;default:if(W&&M)M(Buffer.alloc(0),P.Errors.UNKNOWN_METHOD());throw P.Errors.UNKNOWN_METHOD()}}function G(W,M){if((!X||!X.length)&&Buffer.isBuffer(Q)){if(W&&M)M(U());return U()}if(X.length&&!R){var j;switch(J.method){case P.Constants.STORED:if(J.compressedSize=J.size,j=Buffer.alloc(X.length),X.copy(j),W&&M)M(j);return j;default:case P.Constants.DEFLATED:var F=new $q.Deflater(X);if(!W){var O=F.deflate();return J.compressedSize=O.length,O}else F.deflateAsync(function(S){j=Buffer.alloc(S.length),J.compressedSize=S.length,S.copy(j),M&&M(j)});F=null;break}}else if(W&&M)M(Buffer.alloc(0));else return Buffer.alloc(0)}function V(W,M){return P.readBigUInt64LE(W,M)}function Z(W){try{var M=0,j,F,O;while(M+4<W.length)if(j=W.readUInt16LE(M),M+=2,F=W.readUInt16LE(M),M+=2,O=W.slice(M,M+F),M+=F,h.ID_ZIP64===j)T(O)}catch(S){throw P.Errors.EXTRA_FIELD_PARSE_ERROR()}}function T(W){var M,j,F,O;if(W.length>=h.EF_ZIP64_SCOMP){if(M=V(W,h.EF_ZIP64_SUNCOMP),J.size===h.EF_ZIP64_OR_32)J.size=M}if(W.length>=h.EF_ZIP64_RHO){if(j=V(W,h.EF_ZIP64_SCOMP),J.compressedSize===h.EF_ZIP64_OR_32)J.compressedSize=j}if(W.length>=h.EF_ZIP64_DSN){if(F=V(W,h.EF_ZIP64_RHO),J.offset===h.EF_ZIP64_OR_32)J.offset=F}if(W.length>=h.EF_ZIP64_DSN+4){if(O=W.readUInt32LE(h.EF_ZIP64_DSN),J.diskNumStart===h.EF_ZIP64_OR_16)J.diskNumStart=O}}return{get entryName(){return B.decode(Y)},get rawEntryName(){return Y},set entryName(W){Y=P.toBuffer(W,B.encode);var M=Y[Y.length-1];R=M===47||M===92,J.fileNameLength=Y.length},get efs(){if(typeof N==="function")return N(this.entryName);else return N},get extra(){return I},set extra(W){I=W,J.extraLength=W.length,Z(W)},get comment(){return B.decode(K)},set comment(W){if(K=P.toBuffer(W,B.encode),J.commentLength=K.length,K.length>65535)throw P.Errors.COMMENT_TOO_LONG()},get name(){let W=B.decode(Y);return R?W.replace(/[/\\]$/,"").split("/").pop():W.split("/").pop()},get isDirectory(){return R},getCompressedData:function(){return G(!1,null)},getCompressedDataAsync:function(W){G(!0,W)},setData:function(W){if(X=P.toBuffer(W,P.decoder.encode),!R&&X.length)J.size=X.length,J.method=P.Constants.DEFLATED,J.crc=P.crc32(W),J.changed=!0;else J.method=P.Constants.STORED},getData:function(W){if(J.changed)return X;else return $(!1,null,W)},getDataAsync:function(W,M){if(J.changed)W(X);else $(!0,W,M)},set attr(W){J.attr=W},get attr(){return J.attr},set header(W){J.loadFromBinary(W)},get header(){return J},packCentralHeader:function(){J.flags_efs=this.efs,J.extraLength=I.length;var W=J.centralHeaderToBinary(),M=P.Constants.CENHDR;return Y.copy(W,M),M+=Y.length,I.copy(W,M),M+=J.extraLength,K.copy(W,M),W},packLocalHeader:function(){let W=0;J.flags_efs=this.efs,J.extraLocalLength=L.length;let M=J.localHeaderToBinary(),j=Buffer.alloc(M.length+Y.length+J.extraLocalLength);return M.copy(j,W),W+=M.length,Y.copy(j,W),W+=Y.length,L.copy(j,W),W+=L.length,j},toJSON:function(){let W=function(M){return"<"+(M&&M.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:J.toJSON(),compressedData:W(Q),data:W(X)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var oq=_((G0,cq)=>{var dq=Gq(),CW=Yq(),y=l();cq.exports=function(q,Q){var J=[],Y=Object.create(null),K=Buffer.alloc(0),R=new CW.MainHeader,X=!1,I=null;let L=new Set,N=Q,{noSort:D,decoder:B}=N;if(q)$(N.readEntries);else X=!0;function U(){let V=new Set;for(let Z of Object.keys(Y)){let T=Z.split("/");if(T.pop(),!T.length)continue;for(let W=0;W<T.length;W++){let M=T.slice(0,W+1).join("/")+"/";V.add(M)}}for(let Z of V)if(!(Z in Y)){let T=new dq(N);T.entryName=Z,T.attr=16,T.temporary=!0,J.push(T),Y[T.entryName]=T,L.add(T)}}function H(){if(X=!0,Y=Object.create(null),R.diskEntries>(q.length-R.offset)/y.Constants.CENHDR)throw y.Errors.DISK_ENTRY_TOO_LARGE();J=Array(R.diskEntries);var V=R.offset;for(var Z=0;Z<J.length;Z++){var T=V,W=new dq(N,q);if(W.header=q.slice(T,T+=y.Constants.CENHDR),W.entryName=q.slice(T,T+=W.header.fileNameLength),W.header.extraLength)W.extra=q.slice(T,T+=W.header.extraLength);if(W.header.commentLength)W.comment=q.slice(T,T+W.header.commentLength);if(V+=W.header.centralHeaderSize,W.entryName in Y)throw y.Errors.DUPLICATE_ENTRY(`"${W.entryName}"`);J[Z]=W,Y[W.entryName]=W}L.clear(),U()}function $(V){var Z=q.length-y.Constants.ENDHDR,T=Math.max(0,Z-65535),W=T,M=q.length,j=-1,F=0;if(typeof N.trailingSpace==="boolean"?N.trailingSpace:!1)T=0;for(Z;Z>=W;Z--){if(q[Z]!==80)continue;if(q.readUInt32LE(Z)===y.Constants.ENDSIG){j=Z,F=Z,M=Z+y.Constants.ENDHDR,W=Z-y.Constants.END64HDR;continue}if(q.readUInt32LE(Z)===y.Constants.END64SIG){W=T;continue}if(q.readUInt32LE(Z)===y.Constants.ZIP64SIG){j=Z,M=Z+y.readBigUInt64LE(q,Z+y.Constants.ZIP64SIZE)+y.Constants.ZIP64LEAD;break}}if(j==-1)throw y.Errors.INVALID_FORMAT();if(R.loadFromBinary(q.slice(j,M)),R.commentLength)K=q.slice(F+y.Constants.ENDHDR);if(V)H()}function G(){if(J.length>1&&!D)J=J.map((V)=>({entry:V,key:V.entryName.toLowerCase()})).sort((V,Z)=>V.key.localeCompare(Z.key)).map((V)=>V.entry)}return{get entries(){if(!X)H();return J.filter((V)=>!L.has(V))},get comment(){return B.decode(K)},set comment(V){K=y.toBuffer(V,B.encode),R.commentLength=K.length},getEntryCount:function(){if(!X)return R.diskEntries;return J.length},forEach:function(V){this.entries.forEach(V)},getEntry:function(V){if(!X)H();return Y[V]||null},setEntry:function(V){if(!X)H();J.push(V),Y[V.entryName]=V,R.totalEntries=J.length},deleteFile:function(V,Z=!0){if(!X)H();let T=Y[V];this.getEntryChildren(T,Z).map((M)=>M.entryName).forEach(this.deleteEntry)},deleteEntry:function(V){if(!X)H();let Z=Y[V],T=J.indexOf(Z);if(T>=0)J.splice(T,1),delete Y[V],R.totalEntries=J.length},getEntryChildren:function(V,Z=!0){if(!X)H();if(typeof V==="object")if(V.isDirectory&&Z){let T=[],W=V.entryName;for(let M of J)if(M.entryName.startsWith(W))T.push(M);return T}else return[V];return[]},getChildCount:function(V){if(V&&V.isDirectory){let Z=this.getEntryChildren(V);return Z.includes(V)?Z.length-1:Z.length}return 0},compressToBuffer:function(){if(!X)H();G();let V=[],Z=[],T=0,W=0;R.size=0,R.offset=0;let M=0;for(let O of this.entries){let S=O.getCompressedData();O.header.offset=W;let x=O.packLocalHeader(),E=x.length+S.length;W+=E,V.push(x),V.push(S);let z=O.packCentralHeader();Z.push(z),R.size+=z.length,T+=E+z.length,M++}T+=R.mainHeaderSize,R.offset=W,R.totalEntries=M,W=0;let j=Buffer.alloc(T);for(let O of V)O.copy(j,W),W+=O.length;for(let O of Z)O.copy(j,W),W+=O.length;let F=R.toBinary();if(K)K.copy(F,F.length-K.length);return F.copy(j,W),q=j,X=!1,j},toAsyncBuffer:function(V,Z,T,W){try{if(!X)H();G();let M=[],j=[],F=0,O=0,S=0;R.size=0,R.offset=0;let x=function(E){if(E.length>0){let z=E.shift(),b=z.entryName+z.extra.toString();if(T)T(b);z.getCompressedDataAsync(function(u){if(W)W(b);z.header.offset=O;let c=z.packLocalHeader(),t=c.length+u.length;O+=t,M.push(c),M.push(u);let n=z.packCentralHeader();j.push(n),R.size+=n.length,F+=t+n.length,S++,x(E)})}else{F+=R.mainHeaderSize,R.offset=O,R.totalEntries=S,O=0;let z=Buffer.alloc(F);M.forEach(function(u){u.copy(z,O),O+=u.length}),j.forEach(function(u){u.copy(z,O),O+=u.length});let b=R.toBinary();if(K)K.copy(b,b.length-K.length);b.copy(z,O),q=z,X=!1,V(z)}};x(Array.from(this.entries))}catch(M){Z(M)}}}}});var lq=_((K0,sq)=>{var v=l(),k=o("path"),PW=Gq(),gW=oq(),i=(...q)=>v.findLast(q,(Q)=>typeof Q==="boolean"),iq=(...q)=>v.findLast(q,(Q)=>typeof Q==="string"),kW=(...q)=>v.findLast(q,(Q)=>typeof Q==="function"),vW={noSort:!1,readEntries:!1,method:v.Constants.NONE,fs:null};sq.exports=function(q,Q){let J=null,Y=Object.assign(Object.create(null),vW);if(q&&typeof q==="object"){if(!(q instanceof Uint8Array)){if(Object.assign(Y,q),q=Y.input?Y.input:void 0,Y.input)delete Y.input}if(Buffer.isBuffer(q))J=q,Y.method=v.Constants.BUFFER,q=void 0}Object.assign(Y,Q);let K=new v(Y),R=($)=>{$.filter((G)=>G.attr).sort((G,V)=>V.path.length-G.path.length).forEach((G)=>K.fs.chmodSync(G.path,G.attr))};if(typeof Y.decoder!=="object"||typeof Y.decoder.encode!=="function"||typeof Y.decoder.decode!=="function")Y.decoder=v.decoder;if(q&&typeof q==="string")if(K.fs.existsSync(q))Y.method=v.Constants.FILE,Y.filename=q,J=K.fs.readFileSync(q);else throw v.Errors.INVALID_FILENAME();let X=new gW(J,Y),{canonical:I,sanitize:L,zipnamefix:N}=v;function D($){if($&&X){var G;if(typeof $==="string")G=X.getEntry(k.posix.normalize($));if(typeof $==="object"&&typeof $.entryName<"u"&&typeof $.header<"u")G=X.getEntry($.entryName);if(G)return G}return null}function B($){let{join:G,normalize:V,sep:Z}=k.posix;return G(k.isAbsolute($)?"/":".",V(Z+$.split("\\").join(Z)+Z))}function U($){if($ instanceof RegExp)return function(G){return function(V){return G.test(V)}}($);else if(typeof $!=="function")return()=>!0;return $}let H=($,G)=>{let V=G.slice(-1);return V=V===K.sep?K.sep:"",k.relative($,G)+V};return{readFile:function($,G){var V=D($);return V&&V.getData(G)||null},childCount:function($){let G=D($);if(G)return X.getChildCount(G)},readFileAsync:function($,G){var V=D($);if(V)V.getDataAsync(G);else G(null,"getEntry failed for:"+$)},readAsText:function($,G){var V=D($);if(V){var Z=V.getData();if(Z&&Z.length)return Z.toString(G||"utf8")}return""},readAsTextAsync:function($,G,V){var Z=D($);if(Z)Z.getDataAsync(function(T,W){if(W){G(T,W);return}if(T&&T.length)G(T.toString(V||"utf8"));else G("")});else G("")},deleteFile:function($,G=!0){var V=D($);if(V)X.deleteFile(V.entryName,G)},deleteEntry:function($){var G=D($);if(G)X.deleteEntry(G.entryName)},addZipComment:function($){X.comment=$},getZipComment:function(){return X.comment||""},addZipEntryComment:function($,G){var V=D($);if(V)V.comment=G},getZipEntryComment:function($){var G=D($);if(G)return G.comment||"";return""},updateFile:function($,G){var V=D($);if(V)V.setData(G)},addLocalFile:function($,G,V,Z){if(K.fs.existsSync($)){G=G?B(G):"";let T=k.win32.basename(k.win32.normalize($));G+=V?V:T;let W=K.fs.statSync($),M=W.isFile()?K.fs.readFileSync($):Buffer.alloc(0);if(W.isDirectory())G+=K.sep;this.addFile(G,M,Z,W)}else throw v.Errors.FILE_NOT_FOUND($)},addLocalFileAsync:function($,G){$=typeof $==="object"?$:{localPath:$};let V=k.resolve($.localPath),{comment:Z}=$,{zipPath:T,zipName:W}=$,M=this;K.fs.stat(V,function(j,F){if(j)return G(j,!1);T=T?B(T):"";let O=k.win32.basename(k.win32.normalize(V));if(T+=W?W:O,F.isFile())K.fs.readFile(V,function(S,x){if(S)return G(S,!1);return M.addFile(T,x,Z,F),setImmediate(G,void 0,!0)});else if(F.isDirectory())return T+=K.sep,M.addFile(T,Buffer.alloc(0),Z,F),setImmediate(G,void 0,!0)})},addLocalFolder:function($,G,V){if(V=U(V),G=G?B(G):"",$=k.normalize($),K.fs.existsSync($)){let Z=K.findFiles($),T=this;if(Z.length)for(let W of Z){let M=k.join(G,H($,W));if(V(M))T.addLocalFile(W,k.dirname(M))}}else throw v.Errors.FILE_NOT_FOUND($)},addLocalFolderAsync:function($,G,V,Z){Z=U(Z),V=V?B(V):"",$=k.normalize($);var T=this;K.fs.open($,"r",function(W){if(W&&W.code==="ENOENT")G(void 0,v.Errors.FILE_NOT_FOUND($));else if(W)G(void 0,W);else{var M=K.findFiles($),j=-1,F=function(){if(j+=1,j<M.length){var O=M[j],S=H($,O).split("\\").join("/");if(S=S.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),Z(S))K.fs.stat(O,function(x,E){if(x)G(void 0,x);if(E.isFile())K.fs.readFile(O,function(z,b){if(z)G(void 0,z);else T.addFile(V+S,b,"",E),F()});else T.addFile(V+S+"/",Buffer.alloc(0),"",E),F()});else process.nextTick(()=>{F()})}else G(!0,void 0)};F()}})},addLocalFolderAsync2:function($,G){let V=this;$=typeof $==="object"?$:{localPath:$};let Z=k.resolve($.localPath),{zipPath:T,filter:W,namefix:M}=$;if(W instanceof RegExp)W=function(O){return function(S){return O.test(S)}}(W);else if(typeof W!=="function")W=function(){return!0};if(T=T?B(T):"",M==="latin1")M=(O)=>O.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"");if(typeof M!=="function")M=(O)=>O;let j=(O)=>k.join(T,M(H(Z,O))),F=(O)=>k.win32.basename(k.win32.normalize(M(O)));K.fs.open(Z,"r",function(O){if(O&&O.code==="ENOENT")G(v.Errors.FILE_NOT_FOUND(Z),!1);else if(O)G(O,!1);else K.findFilesAsync(Z,function(S,x){if(S)return G(S,!1);if(x=x.filter((E)=>W(j(E))),!x.length)return G(void 0,!0);setImmediate(x.reverse().reduce(function(E,z){return function(b,u){if(b||u===!1)return setImmediate(E,b,!1);V.addLocalFileAsync({localPath:z,zipPath:k.dirname(j(z)),zipName:F(z)},E)}},G))})})},addLocalFolderPromise:function($,G){return new Promise((V,Z)=>{this.addLocalFolderAsync2(Object.assign({localPath:$},G),(T,W)=>{if(T)return Z(T);if(W)V(this)})})},addFile:function($,G,V,Z){$=N($);let T=D($),W=T!=null;if(!W)T=new PW(Y),T.entryName=$;T.comment=V||"";let M=typeof Z==="object"&&Z instanceof K.fs.Stats;if(M)T.header.time=Z.mtime;var j=T.isDirectory?16:0;let F=T.isDirectory?16384:32768;if(M)F|=4095&Z.mode;else if(typeof Z==="number")F|=4095&Z;else F|=T.isDirectory?493:420;if(j=(j|F<<16)>>>0,T.attr=j,T.setData(G),!W)X.setEntry(T);return T},getEntries:function($){return X.password=$,X?X.entries:[]},getEntry:function($){return D($)},getEntryCount:function(){return X.getEntryCount()},forEach:function($){return X.forEach($)},extractEntryTo:function($,G,V,Z,T,W){Z=i(!1,Z),T=i(!1,T),V=i(!0,V),W=iq(T,W);var M=D($);if(!M)throw v.Errors.NO_ENTRY();var j=I(M.entryName),F=L(G,W&&!M.isDirectory?I(W):V?j:k.basename(j));if(M.isDirectory){var O=X.getEntryChildren(M);return O.forEach(function(E){if(E.isDirectory)return;var z=E.getData();if(!z)throw v.Errors.CANT_EXTRACT_FILE();var b=I(V?E.entryName:E.entryName.substring(M.entryName.length)),u=L(G,b);K.assertPathSafe(G,u);let c=T?E.header.fileAttr:void 0;K.writeFileTo(u,z,Z,c)}),!0}var S=M.getData(X.password);if(!S)throw v.Errors.CANT_EXTRACT_FILE();if(K.assertPathSafe(G,F),K.fs.existsSync(F)&&!Z)throw v.Errors.CANT_OVERRIDE();let x=T?$.header.fileAttr:void 0;return K.writeFileTo(F,S,Z,x),!0},test:function($){if(!X)return!1;for(var G of X.entries)try{if(G.isDirectory)continue;var V=G.getData($);if(!V)return!1}catch(Z){return!1}return!0},extractAllTo:function($,G,V,Z){if(V=i(!1,V),Z=iq(V,Z),G=i(!1,G),!X)throw v.Errors.NO_ZIP();let T=[];X.entries.forEach(function(W){var M=L($,I(W.entryName));if(K.assertPathSafe($,M),W.isDirectory){if(K.makeDir(M),V)T.push({path:M,attr:W.header.fileAttr});return}var j=W.getData(Z);if(!j)throw v.Errors.CANT_EXTRACT_FILE();let F=V?W.header.fileAttr:void 0;K.writeFileTo(M,j,G,F);try{K.fs.utimesSync(M,W.header.time,W.header.time)}catch(O){}}),R(T)},extractAllToAsync:function($,G,V,Z){if(Z=kW(G,V,Z),V=i(!1,V),G=i(!1,G),!Z)return new Promise((S,x)=>{this.extractAllToAsync($,G,V,function(E){if(E)x(E);else S(this)})});if(!X){Z(v.Errors.NO_ZIP());return}$=k.resolve($);let T=(S)=>L($,k.normalize(I(S.entryName))),W=(S,x)=>Error(S+': "'+x+'"'),M=[],j=[];X.entries.forEach((S)=>{if(S.isDirectory)M.push(S);else j.push(S)});let F=[];for(let S of M){let x=T(S),E=V?S.header.fileAttr:void 0;try{K.assertPathSafe($,x),K.makeDir(x)}catch(z){Z(W("Unable to create folder",x));continue}if(E)F.push({path:x,attr:E});try{K.fs.utimesSync(x,S.header.time,S.header.time)}catch(z){}}let O=(S)=>{if(!S)try{R(F)}catch(x){return Z(W("Unable to set folder permissions",x.path||""))}Z(S)};j.reverse().reduce(function(S,x){return function(E){if(E)S(E);else{let z=k.normalize(I(x.entryName)),b=L($,z);try{K.assertPathSafe($,b)}catch(u){return S(u)}x.getDataAsync(function(u,c){if(c)S(c);else if(!u)S(v.Errors.CANT_EXTRACT_FILE());else{let t=V?x.header.fileAttr:void 0;K.writeFileToAsync(b,u,G,t,function(n){if(!n)return S(W("Unable to write file",b));K.fs.utimes(b,x.header.time,x.header.time,function(){S()})})}})}}},O)()},writeZip:function($,G){if(arguments.length===1){if(typeof $==="function")G=$,$=""}if(!$&&Y.filename)$=Y.filename;if(!$)return;var V=X.compressToBuffer();if(V){var Z=K.writeFileTo($,V,!0);if(typeof G==="function")G(!Z?Error("failed"):null,"")}},writeZipPromise:function($,G){let{overwrite:V,perm:Z}=Object.assign({overwrite:!0},G);return new Promise((T,W)=>{if(!$&&Y.filename)$=Y.filename;if(!$)W("ADM-ZIP: ZIP File Name Missing");this.toBufferPromise().then((M)=>{let j=(F)=>F?T(F):W("ADM-ZIP: Wasn't able to write zip file");K.writeFileToAsync($,M,V,Z,j)},W)})},toBufferPromise:function(){return new Promise(($,G)=>{X.toAsyncBuffer($,G)})},toBuffer:function($,G,V,Z){if(typeof $==="function")return X.toAsyncBuffer($,G,V,Z),null;return X.compressToBuffer()}}}});Aq();var aq=QW(lq(),1);import{parentPort as nq,workerData as bW}from"worker_threads";import*as rq from"path";function uW(){let{bundlePath:q,destination:Q}=bW;try{let J=new aq.default(q);Iq(J,Q),J.extractAllTo(rq.resolve(Q),!0);let Y={ok:!0};nq?.postMessage(Y)}catch(J){let Y={ok:!1,message:qq(J),stack:J instanceof Error?J.stack:void 0};nq?.postMessage(Y)}}uW();
|
|
2
|
+
var YW=Object.create;var{getPrototypeOf:$W,defineProperty:n,getOwnPropertyNames:Zq,getOwnPropertyDescriptor:GW}=Object,Rq=Object.prototype.hasOwnProperty;function Aq(q){return this[q]}var MW,KW,VW=(q,Q,J)=>{var X=q!=null&&typeof q==="object";if(X){var G=Q?MW??=new WeakMap:KW??=new WeakMap,Z=G.get(q);if(Z)return Z}J=q!=null?YW($W(q)):{};let Y=Q||!q||!q.__esModule?n(J,"default",{value:q,enumerable:!0}):J;for(let A of Zq(q))if(!Rq.call(Y,A))n(Y,A,{get:Aq.bind(q,A),enumerable:!0});if(X)G.set(q,Y);return Y},pW=(q)=>{var Q=(Tq??=new WeakMap).get(q),J;if(Q)return Q;if(Q=n({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function"){for(var X of Zq(q))if(!Rq.call(Q,X))n(Q,X,{get:Aq.bind(q,X),enumerable:!(J=GW(q,X))||J.enumerable})}return Tq.set(q,Q),Q},Tq,_=(q,Q)=>()=>(Q||q((Q={exports:{}}).exports,Q),Q.exports);var TW=(q)=>q;function ZW(q,Q){this[q]=TW.bind(null,Q)}var dW=(q,Q)=>{for(var J in Q)n(q,J,{get:Q[J],enumerable:!0,configurable:!0,set:ZW.bind(Q,J)})};var r=(q,Q)=>()=>(q&&(Q=q(q=0)),Q);var d=import.meta.require;function Wq(q,Q){try{return q()}catch(J){return Q(J)}}async function oW(q,Q){try{return await q()}catch(J){return Q(J)}}function Iq(q){if(q instanceof Error){let Q=[q.name,q.message].filter(Boolean).join(": "),J=q.stack?.split(`
|
|
3
|
+
`).slice(0,3).join(" \u2190 "),X="cause"in q&&q.cause!==void 0?Iq(q.cause):"";return[Q||"Error",J,X?`cause=${X}`:""].filter(Boolean).join(" | ")}if(q===null||q===void 0)return String(q);if(typeof q==="object"){if(Object.keys(q).length===0)return`${Object.prototype.toString.call(q)} (no enumerable keys)`;return Wq(()=>JSON.stringify(q),()=>Object.prototype.toString.call(q))}return String(q)}function a(q){return Wq(()=>{if(q instanceof Error)return q.message;return String(q)},()=>Wq(()=>Object.prototype.toString.call(q),()=>"Unknown error"))}var Xq=()=>{};function rW(q,Q){if(q instanceof c)return q;let J=a(q);return new c(`${Q}: ${J}`,{cause:q})}function aW(q,Q){return new c(`${Q} is not supported on platform '${q}'. Supported platforms: android, ios.`)}var c;var jq=r(()=>{Xq();c=class c extends Error{constructor(q,Q){super(q,Q);let J=Q?.containerFailure??(Q?.cause instanceof c?Q.cause.containerFailure:void 0);if(J)this.containerFailure=J}}});import*as Fq from"path";function Yq(q,Q,J={}){let X=J.paths??Fq,G=X.resolve(q),Z=X.resolve(G,Q),Y=X.relative(G,Z);if(Y==="")return J.allowEqual??!0;return!(Y===".."||Y.startsWith(`..${X.sep}`)||X.isAbsolute(Y))}function tW(q,Q,J,X={}){if(!Yq(q,Q,X))throw J();let G=X.paths??Fq;return G.resolve(G.resolve(q),Q)}var Oq=()=>{};import*as Sq from"path";function wq(q,Q,J="CtrlProxy bundle"){let X=Sq.resolve(Q);for(let G of q.getEntries())if(!Yq(X,G.entryName))throw new c(`Refusing to extract ${J}: entry "${G.entryName}" resolves outside the extraction directory ${X} (zip-slip / path traversal).`)}var Dq=r(()=>{jq();Oq()});var $q=_((X0,Bq)=>{Bq.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var e=_((Nq)=>{var Lq={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",MAX_OUTPUT_EXCEEDED:"Decompressed data exceeds the declared uncompressed size",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DUPLICATE_ENTRY:"Duplicate entry name {0}",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",ZIP64_VALUE_TOO_LARGE:"Zip64 value exceeds the maximum safe integer",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function AW(q){return function(...Q){if(Q.length)q=q.replace(/\{(\d)\}/g,(J,X)=>Q[X]||"");return Error("ADM-ZIP: "+q)}}for(let q of Object.keys(Lq))Nq[q]=AW(Lq[q])});var zq=_(($0,Eq)=>{var IW=d("fs"),C=d("path"),xq=$q(),Gq=e(),jW=typeof process==="object"&&process.platform==="win32",Uq=(q)=>typeof q==="object"&&q!==null,Hq=new Uint32Array(256).map((q,Q)=>{for(let J=0;J<8;J++)if((Q&1)!==0)Q=3988292384^Q>>>1;else Q>>>=1;return Q>>>0});function g(q){if(this.sep=C.sep,this.fs=IW,Uq(q)){if(Uq(q.fs)&&typeof q.fs.statSync==="function")this.fs=q.fs}}Eq.exports=g;g.prototype.makeDir=function(q){let Q=this;function J(X){let G=X.split(Q.sep)[0];X.split(Q.sep).forEach(function(Z){if(!Z||Z.substr(-1,1)===":")return;G+=Q.sep+Z;var Y;try{Y=Q.fs.statSync(G)}catch(A){if(A.message&&A.message.startsWith("ENOENT"))Q.fs.mkdirSync(G);else throw A}if(Y&&Y.isFile())throw Gq.FILE_IN_THE_WAY(`"${G}"`)})}J(q)};g.prototype.writeFileTo=function(q,Q,J,X){let G=this;if(G.fs.existsSync(q)){if(!J)return!1;var Z=G.fs.statSync(q);if(Z.isDirectory())return!1}var Y=C.dirname(q);if(!G.fs.existsSync(Y))G.makeDir(Y);var A;try{A=G.fs.openSync(q,"w",438)}catch(L){G.fs.chmodSync(q,438),A=G.fs.openSync(q,"w",438)}if(A)try{G.fs.writeSync(A,Q,0,Q.length,0)}finally{G.fs.closeSync(A)}return G.fs.chmodSync(q,X||438),!0};g.prototype.writeFileToAsync=function(q,Q,J,X,G){if(typeof X==="function")G=X,X=void 0;let Z=this;Z.fs.exists(q,function(Y){if(Y&&!J)return G(!1);Z.fs.stat(q,function(A,L){if(Y&&L&&L.isDirectory())return G(!1);var N=C.dirname(q);Z.fs.exists(N,function(D){if(!D)try{Z.makeDir(N)}catch(x){return G(!1)}let B=function(x){Z.fs.write(x,Q,0,Q.length,0,function(U){Z.fs.close(x,function(){if(U)return G(!1);Z.fs.chmod(q,X||438,function(){G(!0)})})})};Z.fs.open(q,"w",438,function(x,U){if(x)Z.fs.chmod(q,438,function(){Z.fs.open(q,"w",438,function($,M){if($||!M)return G(!1);B(M)})});else if(U)B(U);else G(!1)})})})})};g.prototype.assertPathSafe=function(q,Q){let J=this;if(typeof J.fs.lstatSync!=="function")return;let X=C.resolve(q),G=C.resolve(Q);if(G===X)return;let Z=C.relative(X,G);if(!Z||Z===".."||Z.startsWith(".."+C.sep)||C.isAbsolute(Z))return;let Y=X;for(let A of Z.split(C.sep)){if(!A||A===".")continue;Y=C.join(Y,A);let L;try{L=J.fs.lstatSync(Y)}catch(N){break}if(L.isSymbolicLink())throw Gq.FILE_IN_THE_WAY(`"${Y}"`)}};g.prototype.findFiles=function(q){let Q=this,J=typeof Q.fs.lstatSync==="function",X=Q.fs.realpathSync(q);function G(Y){if(!J)return!1;if(!Q.fs.lstatSync(Y).isSymbolicLink())return!1;let A;try{A=Q.fs.realpathSync(Y)}catch(L){return!0}return!(A===X||A.startsWith(X+C.sep))}function Z(Y,A,L,N){if(typeof A==="boolean")L=A,A=void 0;let D=[];return Q.fs.readdirSync(Y).forEach(function(B){let x=C.join(Y,B);if(G(x))return;let U=Q.fs.statSync(x);if(!A||A.test(x))D.push(C.normalize(x)+(U.isDirectory()?Q.sep:""));if(U.isDirectory()&&L){let $=Q.fs.realpathSync(x);if(!N.has($))N.add($),D=D.concat(Z(x,A,L,N))}}),D}return Z(q,void 0,!0,new Set([X]))};g.prototype.findFilesAsync=function(q,Q){let J=this,X=[],G=!1,Z=function(D){if(G)return;G=!0,Q(D,D?void 0:X)},Y=typeof J.fs.lstat==="function",A=null,L=function(D,B){if(!Y)return B(null,!1);J.fs.lstat(D,function(x,U){if(x)return B(x);if(!U||!U.isSymbolicLink())return B(null,!1);J.fs.realpath(D,function($,M){if($)return B(null,!0);B(null,!(M===A||M.startsWith(A+C.sep)))})})},N=function(D,B,x){J.fs.readdir(D,function(U,$){if(U)return x(U);let M=$.length;if(!M)return x();$.forEach(function(K){let T=C.join(D,K);L(T,function(R,W){if(R)return x(R);if(W){if(!--M)x();return}J.fs.stat(T,function(V,j){if(V)return x(V);if(!j){if(!--M)x();return}if(X.push(C.normalize(T)+(j.isDirectory()?J.sep:"")),!j.isDirectory()){if(!--M)x();return}J.fs.realpath(T,function(O,F){if(O)return x(O);if(B.has(F)){if(!--M)x();return}B.add(F),N(T,B,function(S){if(S)return x(S);if(!--M)x()})})})})})})};J.fs.realpath(q,function(D,B){if(D)return Z(D);A=B,N(q,new Set([B]),Z)})};g.prototype.getAttributes=function(){};g.prototype.setAttributes=function(){};g.crc32update=function(q,Q){return Hq[(q^Q)&255]^q>>>8};g.crc32=function(q){if(typeof q==="string")q=Buffer.from(q,"utf8");let Q=q.length,J=-1;for(let X=0;X<Q;)J=g.crc32update(J,q[X++]);return~J>>>0};g.methodToString=function(q){switch(q){case xq.STORED:return"STORED ("+q+")";case xq.DEFLATED:return"DEFLATED ("+q+")";default:return"UNSUPPORTED ("+q+")"}};g.canonical=function(q){if(!q)return"";let Q=C.posix.normalize("/"+q.split("\\").join("/"));return C.join(".",Q)};g.zipnamefix=function(q){if(!q)return"";let Q=C.posix.normalize("/"+q.split("\\").join("/"));return C.posix.join(".",Q)};g.findLast=function(q,Q){if(!Array.isArray(q))throw TypeError("arr is not array");let J=q.length>>>0;for(let X=J-1;X>=0;X--)if(Q(q[X],X,q))return q[X];return};g.sanitize=function(q,Q){q=C.resolve(C.normalize(q));var J=Q.split("/");for(var X=0,G=J.length;X<G;X++){var Z=C.normalize(C.join(q,J.slice(X,G).join(C.sep)));if(Z===q||Z.startsWith(q+C.sep))return Z}return C.normalize(C.join(q,C.basename(Q)))};g.toBuffer=function(Q,J){if(Buffer.isBuffer(Q))return Q;else if(Q instanceof Uint8Array)return Buffer.from(Q);else return typeof Q==="string"?J(Q):Buffer.alloc(0)};g.readBigUInt64LE=function(q,Q){let J=q.readUInt32LE(Q),G=q.readUInt32LE(Q+4)*4294967296+J;if(G>Number.MAX_SAFE_INTEGER)throw Gq.ZIP64_VALUE_TOO_LARGE();return G};g.writeBigUInt64LE=function(q,Q,J){let X=Q>>>0,G=Math.floor(Q/4294967296)>>>0;q.writeUInt32LE(X,J),q.writeUInt32LE(G,J+4)};g.fromDOS2Date=function(q){return new Date((q>>25&127)+1980,Math.max((q>>21&15)-1,0),Math.max(q>>16&31,1),q>>11&31,q>>5&63,(q&31)<<1)};g.fromDate2DOS=function(q){let Q=0,J=0;if(q.getFullYear()>1979)Q=(q.getFullYear()-1980&127)<<9|q.getMonth()+1<<5|q.getDate(),J=q.getHours()<<11|q.getMinutes()<<5|q.getSeconds()>>1;return Q<<16|J};g.isWin=jW;g.crcTable=Hq});var Pq=_((G0,Cq)=>{var FW=d("path");Cq.exports=function(q,{fs:Q}){var J=q||"",X=Z(),G=null;function Z(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}if(J&&Q.existsSync(J))G=Q.statSync(J),X.directory=G.isDirectory(),X.mtime=G.mtime,X.atime=G.atime,X.executable=(73&G.mode)!==0,X.readonly=(128&G.mode)===0,X.hidden=FW.basename(J)[0]===".";else console.warn("Invalid path: "+J);return{get directory(){return X.directory},get readOnly(){return X.readonly},get hidden(){return X.hidden},get mtime(){return X.mtime},get atime(){return X.atime},get executable(){return X.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:J,isDirectory:X.directory,isReadOnly:X.readonly,isHidden:X.hidden,isExecutable:X.executable,mTime:X.mtime,aTime:X.atime}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var kq=_((M0,gq)=>{gq.exports={efs:!0,encode:(q)=>Buffer.from(q,"utf8"),decode:(q)=>q.toString("utf8")}});var s=_((K0,i)=>{i.exports=zq();i.exports.Constants=$q();i.exports.Errors=e();i.exports.FileAttr=Pq();i.exports.decoder=kq()});var bq=_((V0,vq)=>{var f=s(),I=f.Constants;vq.exports=function(){var q=20,Q=10,J=0,X=0,G=0,Z=0,Y=0,A=0,L=0,N=0,D=0,B=0,x=0,U=0,$=0;q|=f.isWin?2560:768,J|=I.FLG_EFS;let M={extraLen:0},K=(W)=>Math.max(0,W)>>>0,T=(W)=>Math.max(0,W)&65535,R=(W)=>Math.max(0,W)&255;return G=f.fromDate2DOS(new Date),{get made(){return q},set made(W){q=W},get version(){return Q},set version(W){Q=W},get flags(){return J},set flags(W){J=W},get flags_efs(){return(J&I.FLG_EFS)>0},set flags_efs(W){if(W)J|=I.FLG_EFS;else J&=~I.FLG_EFS},get flags_desc(){return(J&I.FLG_DESC)>0},set flags_desc(W){if(W)J|=I.FLG_DESC;else J&=~I.FLG_DESC},get method(){return X},set method(W){switch(W){case I.STORED:this.version=10;break;case I.DEFLATED:default:this.version=20}X=W},get time(){return f.fromDOS2Date(this.timeval)},set time(W){W=new Date(W),this.timeval=f.fromDate2DOS(W)},get timeval(){return G},set timeval(W){G=K(W)},get timeHighByte(){return R(G>>>8)},get crc(){return Z},set crc(W){Z=K(W)},get compressedSize(){return Y},set compressedSize(W){Y=K(W)},get size(){return A},set size(W){A=K(W)},get fileNameLength(){return L},set fileNameLength(W){L=W},get extraLength(){return N},set extraLength(W){N=W},get extraLocalLength(){return M.extraLen},set extraLocalLength(W){M.extraLen=W},get commentLength(){return D},set commentLength(W){D=W},get diskNumStart(){return B},set diskNumStart(W){B=K(W)},get inAttr(){return x},set inAttr(W){x=K(W)},get attr(){return U},set attr(W){U=K(W)},get fileAttr(){return(U||0)>>16&511},get offset(){return $},set offset(W){$=K(W)},get encrypted(){return(J&I.FLG_ENC)===I.FLG_ENC},get centralHeaderSize(){return I.CENHDR+L+N+D},get realDataOffset(){return $+I.LOCHDR+M.fnameLen+M.extraLen},get localHeader(){return M},loadLocalHeaderFromBinary:function(W){if($<0||$+I.LOCHDR>W.length)throw f.Errors.INVALID_LOC();var V=W.slice($,$+I.LOCHDR);if(V.readUInt32LE(0)!==I.LOCSIG)throw f.Errors.INVALID_LOC();M.version=V.readUInt16LE(I.LOCVER),M.flags=V.readUInt16LE(I.LOCFLG),M.flags_desc=(M.flags&I.FLG_DESC)>0,M.method=V.readUInt16LE(I.LOCHOW),M.time=V.readUInt32LE(I.LOCTIM),M.crc=V.readUInt32LE(I.LOCCRC),M.compressedSize=V.readUInt32LE(I.LOCSIZ),M.size=V.readUInt32LE(I.LOCLEN),M.fnameLen=V.readUInt16LE(I.LOCNAM),M.extraLen=V.readUInt16LE(I.LOCEXT);let j=$+I.LOCHDR+M.fnameLen,O=j+M.extraLen;return W.slice(j,O)},loadFromBinary:function(W){if(W.length!==I.CENHDR||W.readUInt32LE(0)!==I.CENSIG)throw f.Errors.INVALID_CEN();q=W.readUInt16LE(I.CENVEM),Q=W.readUInt16LE(I.CENVER),J=W.readUInt16LE(I.CENFLG),X=W.readUInt16LE(I.CENHOW),G=W.readUInt32LE(I.CENTIM),Z=W.readUInt32LE(I.CENCRC),Y=W.readUInt32LE(I.CENSIZ),A=W.readUInt32LE(I.CENLEN),L=W.readUInt16LE(I.CENNAM),N=W.readUInt16LE(I.CENEXT),D=W.readUInt16LE(I.CENCOM),B=W.readUInt16LE(I.CENDSK),x=W.readUInt16LE(I.CENATT),U=W.readUInt32LE(I.CENATX),$=W.readUInt32LE(I.CENOFF)},localHeaderToBinary:function(){var W=Buffer.alloc(I.LOCHDR);return W.writeUInt32LE(I.LOCSIG,0),W.writeUInt16LE(Q,I.LOCVER),W.writeUInt16LE(J&~I.FLG_DESC,I.LOCFLG),W.writeUInt16LE(X,I.LOCHOW),W.writeUInt32LE(G,I.LOCTIM),W.writeUInt32LE(Z,I.LOCCRC),W.writeUInt32LE(Y,I.LOCSIZ),W.writeUInt32LE(A,I.LOCLEN),W.writeUInt16LE(L,I.LOCNAM),W.writeUInt16LE(M.extraLen,I.LOCEXT),W},centralHeaderToBinary:function(){var W=Buffer.alloc(I.CENHDR+L+N+D);return W.writeUInt32LE(I.CENSIG,0),W.writeUInt16LE(q,I.CENVEM),W.writeUInt16LE(Q,I.CENVER),W.writeUInt16LE(J&~I.FLG_DESC,I.CENFLG),W.writeUInt16LE(X,I.CENHOW),W.writeUInt32LE(G,I.CENTIM),W.writeUInt32LE(Z,I.CENCRC),W.writeUInt32LE(Y,I.CENSIZ),W.writeUInt32LE(A,I.CENLEN),W.writeUInt16LE(L,I.CENNAM),W.writeUInt16LE(N,I.CENEXT),W.writeUInt16LE(D,I.CENCOM),W.writeUInt16LE(B,I.CENDSK),W.writeUInt16LE(x,I.CENATT),W.writeUInt32LE(U,I.CENATX),W.writeUInt32LE($,I.CENOFF),W},toJSON:function(){let W=function(V){return V+" bytes"};return{made:q,version:Q,flags:J,method:f.methodToString(X),time:this.time,crc:"0x"+Z.toString(16).toUpperCase(),compressedSize:W(Y),size:W(A),fileNameLength:W(L),extraLength:W(N),commentLength:W(D),diskNumStart:B,inAttr:x,attr:U,offset:$,centralHeaderSize:W(I.CENHDR+L+N+D)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var _q=_((T0,uq)=>{var m=s(),w=m.Constants;uq.exports=function(){var q=0,Q=0,J=0,X=0,G=0;let Z=()=>q>w.EF_ZIP64_OR_16||Q>w.EF_ZIP64_OR_16||J>w.EF_ZIP64_OR_32||X>w.EF_ZIP64_OR_32;return{get diskEntries(){return q},set diskEntries(Y){q=Q=Y},get totalEntries(){return Q},set totalEntries(Y){Q=q=Y},get size(){return J},set size(Y){J=Y},get offset(){return X},set offset(Y){X=Y},get commentLength(){return G},set commentLength(Y){G=Y},get mainHeaderSize(){return(Z()?w.ZIP64HDR+w.END64HDR:0)+w.ENDHDR+G},loadFromBinary:function(Y){if((Y.length!==w.ENDHDR||Y.readUInt32LE(0)!==w.ENDSIG)&&(Y.length<w.ZIP64HDR||Y.readUInt32LE(0)!==w.ZIP64SIG))throw m.Errors.INVALID_END();if(Y.readUInt32LE(0)===w.ENDSIG)q=Y.readUInt16LE(w.ENDSUB),Q=Y.readUInt16LE(w.ENDTOT),J=Y.readUInt32LE(w.ENDSIZ),X=Y.readUInt32LE(w.ENDOFF),G=Y.readUInt16LE(w.ENDCOM);else q=m.readBigUInt64LE(Y,w.ZIP64SUB),Q=m.readBigUInt64LE(Y,w.ZIP64TOT),J=m.readBigUInt64LE(Y,w.ZIP64SIZB),X=m.readBigUInt64LE(Y,w.ZIP64OFF),G=0},toBinary:function(){if(!Z()){var Y=Buffer.alloc(w.ENDHDR+G);return Y.writeUInt32LE(w.ENDSIG,0),Y.writeUInt32LE(0,4),Y.writeUInt16LE(q,w.ENDSUB),Y.writeUInt16LE(Q,w.ENDTOT),Y.writeUInt32LE(J,w.ENDSIZ),Y.writeUInt32LE(X,w.ENDOFF),Y.writeUInt16LE(G,w.ENDCOM),Y.fill(" ",w.ENDHDR),Y}var Y=Buffer.alloc(this.mainHeaderSize);let A=0;Y.writeUInt32LE(w.ZIP64SIG,A),m.writeBigUInt64LE(Y,w.ZIP64HDR-w.ZIP64LEAD,A+w.ZIP64SIZE),Y.writeUInt16LE(45,A+w.ZIP64VEM),Y.writeUInt16LE(45,A+w.ZIP64VER),Y.writeUInt32LE(0,A+w.ZIP64DSK),Y.writeUInt32LE(0,A+w.ZIP64DSKDIR),m.writeBigUInt64LE(Y,q,A+w.ZIP64SUB),m.writeBigUInt64LE(Y,Q,A+w.ZIP64TOT),m.writeBigUInt64LE(Y,J,A+w.ZIP64SIZB),m.writeBigUInt64LE(Y,X,A+w.ZIP64OFF);let L=X+J;return A+=w.ZIP64HDR,Y.writeUInt32LE(w.END64SIG,A),Y.writeUInt32LE(0,A+w.END64START),m.writeBigUInt64LE(Y,L,A+w.END64OFF),Y.writeUInt32LE(1,A+w.END64NUMDISKS),A+=w.END64HDR,Y.writeUInt32LE(w.ENDSIG,A),Y.writeUInt32LE(0,A+4),Y.writeUInt16LE(Math.min(q,w.EF_ZIP64_OR_16),A+w.ENDSUB),Y.writeUInt16LE(Math.min(Q,w.EF_ZIP64_OR_16),A+w.ENDTOT),Y.writeUInt32LE(Math.min(J,w.EF_ZIP64_OR_32),A+w.ENDSIZ),Y.writeUInt32LE(Math.min(X,w.EF_ZIP64_OR_32),A+w.ENDOFF),Y.writeUInt16LE(G,A+w.ENDCOM),Y.fill(" ",A+w.ENDHDR),Y},toJSON:function(){let Y=function(A,L){let N=A.toString(16).toUpperCase();while(N.length<L)N="0"+N;return"0x"+N};return{diskEntries:q,totalEntries:Q,size:J+" bytes",offset:Y(X,4),commentLength:G}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Mq=_((OW)=>{OW.EntryHeader=bq();OW.MainHeader=_q()});var hq=_((R0,yq)=>{yq.exports=function(q){var Q=d("zlib"),J={chunkSize:(parseInt(q.length/1024)+1)*1024};return{deflate:function(){return Q.deflateRawSync(q,J)},deflateAsync:function(X){var G=Q.createDeflateRaw(J),Z=[],Y=0;G.on("data",function(A){Z.push(A),Y+=A.length}),G.on("end",function(){var A=Buffer.alloc(Y),L=0;A.fill(0);for(var N=0;N<Z.length;N++){var D=Z[N];D.copy(A,L),L+=D.length}X&&X(A)}),G.end(q)}}}});var fq=_((A0,mq)=>{var DW=+(process?.versions?.node??"").split(".")[0]||0,BW=e();mq.exports=function(q,Q){var J=d("zlib");let X=Q>0?Q:1,G=DW>=15?{maxOutputLength:X}:{};return{inflate:function(){return J.inflateRawSync(q,G)},inflateAsync:function(Z){var Y=J.createInflateRaw(G),A=[],L=0,N=!1;let D=function(B){if(N)return;N=!0,Y.destroy(),Z&&Z(Buffer.alloc(0),B)};Y.on("error",function(B){D(B)}),Y.on("data",function(B){if(N)return;if(L+=B.length,L>X)return D(BW.MAX_OUTPUT_EXCEEDED());A.push(B)}),Y.on("end",function(){if(N)return;N=!0;var B=Buffer.alloc(L),x=0;B.fill(0);for(var U=0;U<A.length;U++){var $=A[U];$.copy(B,x),x+=$.length}Z&&Z(B)}),Y.end(q)}}}});var iq=_((I0,oq)=>{var{randomFillSync:pq}=d("crypto"),LW=e(),NW=new Uint32Array(256).map((q,Q)=>{for(let J=0;J<8;J++)if((Q&1)!==0)Q=Q>>>1^3988292384;else Q>>>=1;return Q>>>0}),cq=(q,Q)=>Math.imul(q,Q)>>>0,dq=(q,Q)=>{return NW[(q^Q)&255]^q>>>8},t=()=>{if(typeof pq==="function")return pq(Buffer.alloc(12));else return t.node()};t.node=()=>{let q=Buffer.alloc(12),Q=q.length;for(let J=0;J<Q;J++)q[J]=Math.random()*256&255;return q};var Jq={genSalt:t};function Qq(q){let Q=Buffer.isBuffer(q)?q:Buffer.from(q);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let J=0;J<Q.length;J++)this.updateKeys(Q[J])}Qq.prototype.updateKeys=function(q){let Q=this.keys;return Q[0]=dq(Q[0],q),Q[1]+=Q[0]&255,Q[1]=cq(Q[1],134775813)+1,Q[2]=dq(Q[2],Q[1]>>>24),q};Qq.prototype.next=function(){let q=(this.keys[2]|2)>>>0;return cq(q,q^1)>>8&255};function xW(q){let Q=new Qq(q);return function(J){let X=Buffer.alloc(J.length),G=0;for(let Z of J)X[G++]=Q.updateKeys(Z^Q.next());return X}}function UW(q){let Q=new Qq(q);return function(J,X,G=0){if(!X)X=Buffer.alloc(J.length);for(let Z of J){let Y=Q.next();X[G++]=Z^Y,Q.updateKeys(Z)}return X}}function HW(q,Q,J){if(!q||!Buffer.isBuffer(q)||q.length<12)return Buffer.alloc(0);let X=xW(J),G=X(q.slice(0,12)),Z=(Q.flags&8)===8?Q.timeHighByte:Q.crc>>>24;if(G[11]!==Z)throw LW.WRONG_PASSWORD();return X(q.slice(12))}function EW(q){if(Buffer.isBuffer(q)&&q.length>=12)Jq.genSalt=function(){return q.slice(0,12)};else if(q==="node")Jq.genSalt=t.node;else Jq.genSalt=t}function zW(q,Q,J,X=!1){if(q==null)q=Buffer.alloc(0);if(!Buffer.isBuffer(q))q=Buffer.from(q.toString());let G=UW(J),Z=Jq.genSalt();if(Z[11]=Q.crc>>>24&255,X)Z[10]=Q.crc>>>16&255;let Y=Buffer.alloc(q.length+12);return G(Z,Y),G(q,Y,12)}oq.exports={decrypt:HW,encrypt:zW,_salter:EW}});var sq=_((CW)=>{CW.Deflater=hq();CW.Inflater=fq();CW.ZipCrypto=iq()});var Vq=_((F0,lq)=>{var P=s(),vW=Mq(),h=P.Constants,Kq=sq();lq.exports=function(q,Q){var J=new vW.EntryHeader,X=Buffer.alloc(0),G=Buffer.alloc(0),Z=!1,Y=null,A=Buffer.alloc(0),L=Buffer.alloc(0),N=!0;let D=q,B=typeof D.decoder==="object"?D.decoder:P.decoder;N=B.hasOwnProperty("efs")?B.efs:!1;function x(){if(!Q||!(Q instanceof Uint8Array))return Buffer.alloc(0);L=J.loadLocalHeaderFromBinary(Q);let W=J.realDataOffset,V=W+J.compressedSize;if(W<0||V<W||V>Q.length)throw P.Errors.INVALID_LOC();return Q.slice(W,V)}function U(W){let V=J.flags_desc||J.localHeader.flags_desc?J.crc:J.localHeader.crc;return P.crc32(W)===V}function $(W,V,j){if(typeof V>"u"&&typeof W==="string")j=W,W=void 0;if(Z){if(W&&V)V(Buffer.alloc(0),P.Errors.DIRECTORY_CONTENT_ERROR());return Buffer.alloc(0)}var O;try{if(O=x(),O.length===0){if(W&&V)V(O);return O}if(J.encrypted){if(typeof j!=="string"&&!Buffer.isBuffer(j))throw P.Errors.INVALID_PASS_PARAM();O=Kq.ZipCrypto.decrypt(O,J,j)}}catch(H){if(W&&V)return V(Buffer.alloc(0),H),Buffer.alloc(0);throw H}var F;switch(J.method){case P.Constants.STORED:if(F=Buffer.alloc(O.length),O.copy(F),!U(F)){if(W&&V)V(F,P.Errors.BAD_CRC());throw P.Errors.BAD_CRC()}else{if(W&&V)V(F);return F}case P.Constants.DEFLATED:var S=new Kq.Inflater(O,J.size);if(!W){if(F=S.inflate(),!U(F))throw P.Errors.BAD_CRC(`"${B.decode(X)}"`);return F}else S.inflateAsync(function(H,E){if(!V)return;if(E)V(Buffer.alloc(0),E);else if(!U(H))V(H,P.Errors.BAD_CRC());else V(H)});break;default:if(W&&V)V(Buffer.alloc(0),P.Errors.UNKNOWN_METHOD());throw P.Errors.UNKNOWN_METHOD()}}function M(W,V){if((!Y||!Y.length)&&Buffer.isBuffer(Q)){if(W&&V)V(x());return x()}if(Y.length&&!Z){var j;switch(J.method){case P.Constants.STORED:if(J.compressedSize=J.size,j=Buffer.alloc(Y.length),Y.copy(j),W&&V)V(j);return j;default:case P.Constants.DEFLATED:var O=new Kq.Deflater(Y);if(!W){var F=O.deflate();return J.compressedSize=F.length,F}else O.deflateAsync(function(S){j=Buffer.alloc(S.length),J.compressedSize=S.length,S.copy(j),V&&V(j)});O=null;break}}else if(W&&V)V(Buffer.alloc(0));else return Buffer.alloc(0)}function K(W,V){return P.readBigUInt64LE(W,V)}function T(W){try{var V=0,j,O,F;while(V+4<W.length)if(j=W.readUInt16LE(V),V+=2,O=W.readUInt16LE(V),V+=2,F=W.slice(V,V+O),V+=O,h.ID_ZIP64===j)R(F)}catch(S){throw P.Errors.EXTRA_FIELD_PARSE_ERROR()}}function R(W){var V,j,O,F;if(W.length>=h.EF_ZIP64_SCOMP){if(V=K(W,h.EF_ZIP64_SUNCOMP),J.size===h.EF_ZIP64_OR_32)J.size=V}if(W.length>=h.EF_ZIP64_RHO){if(j=K(W,h.EF_ZIP64_SCOMP),J.compressedSize===h.EF_ZIP64_OR_32)J.compressedSize=j}if(W.length>=h.EF_ZIP64_DSN){if(O=K(W,h.EF_ZIP64_RHO),J.offset===h.EF_ZIP64_OR_32)J.offset=O}if(W.length>=h.EF_ZIP64_DSN+4){if(F=W.readUInt32LE(h.EF_ZIP64_DSN),J.diskNumStart===h.EF_ZIP64_OR_16)J.diskNumStart=F}}return{get entryName(){return B.decode(X)},get rawEntryName(){return X},set entryName(W){X=P.toBuffer(W,B.encode);var V=X[X.length-1];Z=V===47||V===92,J.fileNameLength=X.length},get efs(){if(typeof N==="function")return N(this.entryName);else return N},get extra(){return A},set extra(W){A=W,J.extraLength=W.length,T(W)},get comment(){return B.decode(G)},set comment(W){if(G=P.toBuffer(W,B.encode),J.commentLength=G.length,G.length>65535)throw P.Errors.COMMENT_TOO_LONG()},get name(){let W=B.decode(X);return Z?W.replace(/[/\\]$/,"").split("/").pop():W.split("/").pop()},get isDirectory(){return Z},getCompressedData:function(){return M(!1,null)},getCompressedDataAsync:function(W){M(!0,W)},setData:function(W){if(Y=P.toBuffer(W,P.decoder.encode),!Z&&Y.length)J.size=Y.length,J.method=P.Constants.DEFLATED,J.crc=P.crc32(W),J.changed=!0;else J.method=P.Constants.STORED},getData:function(W){if(J.changed)return Y;else return $(!1,null,W)},getDataAsync:function(W,V){if(J.changed)W(Y);else $(!0,W,V)},set attr(W){J.attr=W},get attr(){return J.attr},set header(W){J.loadFromBinary(W)},get header(){return J},packCentralHeader:function(){J.flags_efs=this.efs,J.extraLength=A.length;var W=J.centralHeaderToBinary(),V=P.Constants.CENHDR;return X.copy(W,V),V+=X.length,A.copy(W,V),V+=J.extraLength,G.copy(W,V),W},packLocalHeader:function(){let W=0;J.flags_efs=this.efs,J.extraLocalLength=L.length;let V=J.localHeaderToBinary(),j=Buffer.alloc(V.length+X.length+J.extraLocalLength);return V.copy(j,W),W+=V.length,X.copy(j,W),W+=X.length,L.copy(j,W),W+=L.length,j},toJSON:function(){let W=function(V){return"<"+(V&&V.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:J.toJSON(),compressedData:W(Q),data:W(Y)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var aq=_((O0,rq)=>{var nq=Vq(),bW=Mq(),y=s();rq.exports=function(q,Q){var J=[],X=Object.create(null),G=Buffer.alloc(0),Z=new bW.MainHeader,Y=!1,A=null;let L=new Set,N=Q,{noSort:D,decoder:B}=N;if(q)$(N.readEntries);else Y=!0;function x(){let K=new Set;for(let T of Object.keys(X)){let R=T.split("/");if(R.pop(),!R.length)continue;for(let W=0;W<R.length;W++){let V=R.slice(0,W+1).join("/")+"/";K.add(V)}}for(let T of K)if(!(T in X)){let R=new nq(N);R.entryName=T,R.attr=16,R.temporary=!0,J.push(R),X[R.entryName]=R,L.add(R)}}function U(){if(Y=!0,X=Object.create(null),Z.diskEntries>(q.length-Z.offset)/y.Constants.CENHDR)throw y.Errors.DISK_ENTRY_TOO_LARGE();J=Array(Z.diskEntries);var K=Z.offset;for(var T=0;T<J.length;T++){var R=K,W=new nq(N,q);if(W.header=q.slice(R,R+=y.Constants.CENHDR),W.entryName=q.slice(R,R+=W.header.fileNameLength),W.header.extraLength)W.extra=q.slice(R,R+=W.header.extraLength);if(W.header.commentLength)W.comment=q.slice(R,R+W.header.commentLength);if(K+=W.header.centralHeaderSize,W.entryName in X)throw y.Errors.DUPLICATE_ENTRY(`"${W.entryName}"`);J[T]=W,X[W.entryName]=W}L.clear(),x()}function $(K){var T=q.length-y.Constants.ENDHDR,R=Math.max(0,T-65535),W=R,V=q.length,j=-1,O=0;if(typeof N.trailingSpace==="boolean"?N.trailingSpace:!1)R=0;for(T;T>=W;T--){if(q[T]!==80)continue;if(q.readUInt32LE(T)===y.Constants.ENDSIG){j=T,O=T,V=T+y.Constants.ENDHDR,W=T-y.Constants.END64HDR;continue}if(q.readUInt32LE(T)===y.Constants.END64SIG){W=R;continue}if(q.readUInt32LE(T)===y.Constants.ZIP64SIG){j=T,V=T+y.readBigUInt64LE(q,T+y.Constants.ZIP64SIZE)+y.Constants.ZIP64LEAD;break}}if(j==-1)throw y.Errors.INVALID_FORMAT();if(Z.loadFromBinary(q.slice(j,V)),Z.commentLength)G=q.slice(O+y.Constants.ENDHDR);if(K)U()}function M(){if(J.length>1&&!D)J=J.map((K)=>({entry:K,key:K.entryName.toLowerCase()})).sort((K,T)=>K.key.localeCompare(T.key)).map((K)=>K.entry)}return{get entries(){if(!Y)U();return J.filter((K)=>!L.has(K))},get comment(){return B.decode(G)},set comment(K){G=y.toBuffer(K,B.encode),Z.commentLength=G.length},getEntryCount:function(){if(!Y)return Z.diskEntries;return J.length},forEach:function(K){this.entries.forEach(K)},getEntry:function(K){if(!Y)U();return X[K]||null},setEntry:function(K){if(!Y)U();J.push(K),X[K.entryName]=K,Z.totalEntries=J.length},deleteFile:function(K,T=!0){if(!Y)U();let R=X[K];this.getEntryChildren(R,T).map((V)=>V.entryName).forEach(this.deleteEntry)},deleteEntry:function(K){if(!Y)U();let T=X[K],R=J.indexOf(T);if(R>=0)J.splice(R,1),delete X[K],Z.totalEntries=J.length},getEntryChildren:function(K,T=!0){if(!Y)U();if(typeof K==="object")if(K.isDirectory&&T){let R=[],W=K.entryName;for(let V of J)if(V.entryName.startsWith(W))R.push(V);return R}else return[K];return[]},getChildCount:function(K){if(K&&K.isDirectory){let T=this.getEntryChildren(K);return T.includes(K)?T.length-1:T.length}return 0},compressToBuffer:function(){if(!Y)U();M();let K=[],T=[],R=0,W=0;Z.size=0,Z.offset=0;let V=0;for(let F of this.entries){let S=F.getCompressedData();F.header.offset=W;let H=F.packLocalHeader(),E=H.length+S.length;W+=E,K.push(H),K.push(S);let z=F.packCentralHeader();T.push(z),Z.size+=z.length,R+=E+z.length,V++}R+=Z.mainHeaderSize,Z.offset=W,Z.totalEntries=V,W=0;let j=Buffer.alloc(R);for(let F of K)F.copy(j,W),W+=F.length;for(let F of T)F.copy(j,W),W+=F.length;let O=Z.toBinary();if(G)G.copy(O,O.length-G.length);return O.copy(j,W),q=j,Y=!1,j},toAsyncBuffer:function(K,T,R,W){try{if(!Y)U();M();let V=[],j=[],O=0,F=0,S=0;Z.size=0,Z.offset=0;let H=function(E){if(E.length>0){let z=E.shift(),b=z.entryName+z.extra.toString();if(R)R(b);z.getCompressedDataAsync(function(u){if(W)W(b);z.header.offset=F;let p=z.packLocalHeader(),qq=p.length+u.length;F+=qq,V.push(p),V.push(u);let l=z.packCentralHeader();j.push(l),Z.size+=l.length,O+=qq+l.length,S++,H(E)})}else{O+=Z.mainHeaderSize,Z.offset=F,Z.totalEntries=S,F=0;let z=Buffer.alloc(O);V.forEach(function(u){u.copy(z,F),F+=u.length}),j.forEach(function(u){u.copy(z,F),F+=u.length});let b=Z.toBinary();if(G)G.copy(b,b.length-G.length);b.copy(z,F),q=z,Y=!1,K(z)}};H(Array.from(this.entries))}catch(V){T(V)}}}}});var qW=_((S0,tq)=>{var v=s(),k=d("path"),uW=Vq(),_W=aq(),o=(...q)=>v.findLast(q,(Q)=>typeof Q==="boolean"),eq=(...q)=>v.findLast(q,(Q)=>typeof Q==="string"),yW=(...q)=>v.findLast(q,(Q)=>typeof Q==="function"),hW={noSort:!1,readEntries:!1,method:v.Constants.NONE,fs:null};tq.exports=function(q,Q){let J=null,X=Object.assign(Object.create(null),hW);if(q&&typeof q==="object"){if(!(q instanceof Uint8Array)){if(Object.assign(X,q),q=X.input?X.input:void 0,X.input)delete X.input}if(Buffer.isBuffer(q))J=q,X.method=v.Constants.BUFFER,q=void 0}Object.assign(X,Q);let G=new v(X),Z=($)=>{$.filter((M)=>M.attr).sort((M,K)=>K.path.length-M.path.length).forEach((M)=>G.fs.chmodSync(M.path,M.attr))};if(typeof X.decoder!=="object"||typeof X.decoder.encode!=="function"||typeof X.decoder.decode!=="function")X.decoder=v.decoder;if(q&&typeof q==="string")if(G.fs.existsSync(q))X.method=v.Constants.FILE,X.filename=q,J=G.fs.readFileSync(q);else throw v.Errors.INVALID_FILENAME();let Y=new _W(J,X),{canonical:A,sanitize:L,zipnamefix:N}=v;function D($){if($&&Y){var M;if(typeof $==="string")M=Y.getEntry(k.posix.normalize($));if(typeof $==="object"&&typeof $.entryName<"u"&&typeof $.header<"u")M=Y.getEntry($.entryName);if(M)return M}return null}function B($){let{join:M,normalize:K,sep:T}=k.posix;return M(k.isAbsolute($)?"/":".",K(T+$.split("\\").join(T)+T))}function x($){if($ instanceof RegExp)return function(M){return function(K){return M.test(K)}}($);else if(typeof $!=="function")return()=>!0;return $}let U=($,M)=>{let K=M.slice(-1);return K=K===G.sep?G.sep:"",k.relative($,M)+K};return{readFile:function($,M){var K=D($);return K&&K.getData(M)||null},childCount:function($){let M=D($);if(M)return Y.getChildCount(M)},readFileAsync:function($,M){var K=D($);if(K)K.getDataAsync(M);else M(null,"getEntry failed for:"+$)},readAsText:function($,M){var K=D($);if(K){var T=K.getData();if(T&&T.length)return T.toString(M||"utf8")}return""},readAsTextAsync:function($,M,K){var T=D($);if(T)T.getDataAsync(function(R,W){if(W){M(R,W);return}if(R&&R.length)M(R.toString(K||"utf8"));else M("")});else M("")},deleteFile:function($,M=!0){var K=D($);if(K)Y.deleteFile(K.entryName,M)},deleteEntry:function($){var M=D($);if(M)Y.deleteEntry(M.entryName)},addZipComment:function($){Y.comment=$},getZipComment:function(){return Y.comment||""},addZipEntryComment:function($,M){var K=D($);if(K)K.comment=M},getZipEntryComment:function($){var M=D($);if(M)return M.comment||"";return""},updateFile:function($,M){var K=D($);if(K)K.setData(M)},addLocalFile:function($,M,K,T){if(G.fs.existsSync($)){M=M?B(M):"";let R=k.win32.basename(k.win32.normalize($));M+=K?K:R;let W=G.fs.statSync($),V=W.isFile()?G.fs.readFileSync($):Buffer.alloc(0);if(W.isDirectory())M+=G.sep;this.addFile(M,V,T,W)}else throw v.Errors.FILE_NOT_FOUND($)},addLocalFileAsync:function($,M){$=typeof $==="object"?$:{localPath:$};let K=k.resolve($.localPath),{comment:T}=$,{zipPath:R,zipName:W}=$,V=this;G.fs.stat(K,function(j,O){if(j)return M(j,!1);R=R?B(R):"";let F=k.win32.basename(k.win32.normalize(K));if(R+=W?W:F,O.isFile())G.fs.readFile(K,function(S,H){if(S)return M(S,!1);return V.addFile(R,H,T,O),setImmediate(M,void 0,!0)});else if(O.isDirectory())return R+=G.sep,V.addFile(R,Buffer.alloc(0),T,O),setImmediate(M,void 0,!0)})},addLocalFolder:function($,M,K){if(K=x(K),M=M?B(M):"",$=k.normalize($),G.fs.existsSync($)){let T=G.findFiles($),R=this;if(T.length)for(let W of T){let V=k.join(M,U($,W));if(K(V))R.addLocalFile(W,k.dirname(V))}}else throw v.Errors.FILE_NOT_FOUND($)},addLocalFolderAsync:function($,M,K,T){T=x(T),K=K?B(K):"",$=k.normalize($);var R=this;G.fs.open($,"r",function(W){if(W&&W.code==="ENOENT")M(void 0,v.Errors.FILE_NOT_FOUND($));else if(W)M(void 0,W);else{var V=G.findFiles($),j=-1,O=function(){if(j+=1,j<V.length){var F=V[j],S=U($,F).split("\\").join("/");if(S=S.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),T(S))G.fs.stat(F,function(H,E){if(H)M(void 0,H);if(E.isFile())G.fs.readFile(F,function(z,b){if(z)M(void 0,z);else R.addFile(K+S,b,"",E),O()});else R.addFile(K+S+"/",Buffer.alloc(0),"",E),O()});else process.nextTick(()=>{O()})}else M(!0,void 0)};O()}})},addLocalFolderAsync2:function($,M){let K=this;$=typeof $==="object"?$:{localPath:$};let T=k.resolve($.localPath),{zipPath:R,filter:W,namefix:V}=$;if(W instanceof RegExp)W=function(F){return function(S){return F.test(S)}}(W);else if(typeof W!=="function")W=function(){return!0};if(R=R?B(R):"",V==="latin1")V=(F)=>F.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"");if(typeof V!=="function")V=(F)=>F;let j=(F)=>k.join(R,V(U(T,F))),O=(F)=>k.win32.basename(k.win32.normalize(V(F)));G.fs.open(T,"r",function(F){if(F&&F.code==="ENOENT")M(v.Errors.FILE_NOT_FOUND(T),!1);else if(F)M(F,!1);else G.findFilesAsync(T,function(S,H){if(S)return M(S,!1);if(H=H.filter((E)=>W(j(E))),!H.length)return M(void 0,!0);setImmediate(H.reverse().reduce(function(E,z){return function(b,u){if(b||u===!1)return setImmediate(E,b,!1);K.addLocalFileAsync({localPath:z,zipPath:k.dirname(j(z)),zipName:O(z)},E)}},M))})})},addLocalFolderPromise:function($,M){return new Promise((K,T)=>{this.addLocalFolderAsync2(Object.assign({localPath:$},M),(R,W)=>{if(R)return T(R);if(W)K(this)})})},addFile:function($,M,K,T){$=N($);let R=D($),W=R!=null;if(!W)R=new uW(X),R.entryName=$;R.comment=K||"";let V=typeof T==="object"&&T instanceof G.fs.Stats;if(V)R.header.time=T.mtime;var j=R.isDirectory?16:0;let O=R.isDirectory?16384:32768;if(V)O|=4095&T.mode;else if(typeof T==="number")O|=4095&T;else O|=R.isDirectory?493:420;if(j=(j|O<<16)>>>0,R.attr=j,R.setData(M),!W)Y.setEntry(R);return R},getEntries:function($){return Y.password=$,Y?Y.entries:[]},getEntry:function($){return D($)},getEntryCount:function(){return Y.getEntryCount()},forEach:function($){return Y.forEach($)},extractEntryTo:function($,M,K,T,R,W){T=o(!1,T),R=o(!1,R),K=o(!0,K),W=eq(R,W);var V=D($);if(!V)throw v.Errors.NO_ENTRY();var j=A(V.entryName),O=L(M,W&&!V.isDirectory?A(W):K?j:k.basename(j));if(V.isDirectory){var F=Y.getEntryChildren(V);return F.forEach(function(E){if(E.isDirectory)return;var z=E.getData();if(!z)throw v.Errors.CANT_EXTRACT_FILE();var b=A(K?E.entryName:E.entryName.substring(V.entryName.length)),u=L(M,b);G.assertPathSafe(M,u);let p=R?E.header.fileAttr:void 0;G.writeFileTo(u,z,T,p)}),!0}var S=V.getData(Y.password);if(!S)throw v.Errors.CANT_EXTRACT_FILE();if(G.assertPathSafe(M,O),G.fs.existsSync(O)&&!T)throw v.Errors.CANT_OVERRIDE();let H=R?$.header.fileAttr:void 0;return G.writeFileTo(O,S,T,H),!0},test:function($){if(!Y)return!1;for(var M of Y.entries)try{if(M.isDirectory)continue;var K=M.getData($);if(!K)return!1}catch(T){return!1}return!0},extractAllTo:function($,M,K,T){if(K=o(!1,K),T=eq(K,T),M=o(!1,M),!Y)throw v.Errors.NO_ZIP();let R=[];Y.entries.forEach(function(W){var V=L($,A(W.entryName));if(G.assertPathSafe($,V),W.isDirectory){if(G.makeDir(V),K)R.push({path:V,attr:W.header.fileAttr});return}var j=W.getData(T);if(!j)throw v.Errors.CANT_EXTRACT_FILE();let O=K?W.header.fileAttr:void 0;G.writeFileTo(V,j,M,O);try{G.fs.utimesSync(V,W.header.time,W.header.time)}catch(F){}}),Z(R)},extractAllToAsync:function($,M,K,T){if(T=yW(M,K,T),K=o(!1,K),M=o(!1,M),!T)return new Promise((S,H)=>{this.extractAllToAsync($,M,K,function(E){if(E)H(E);else S(this)})});if(!Y){T(v.Errors.NO_ZIP());return}$=k.resolve($);let R=(S)=>L($,k.normalize(A(S.entryName))),W=(S,H)=>Error(S+': "'+H+'"'),V=[],j=[];Y.entries.forEach((S)=>{if(S.isDirectory)V.push(S);else j.push(S)});let O=[];for(let S of V){let H=R(S),E=K?S.header.fileAttr:void 0;try{G.assertPathSafe($,H),G.makeDir(H)}catch(z){T(W("Unable to create folder",H));continue}if(E)O.push({path:H,attr:E});try{G.fs.utimesSync(H,S.header.time,S.header.time)}catch(z){}}let F=(S)=>{if(!S)try{Z(O)}catch(H){return T(W("Unable to set folder permissions",H.path||""))}T(S)};j.reverse().reduce(function(S,H){return function(E){if(E)S(E);else{let z=k.normalize(A(H.entryName)),b=L($,z);try{G.assertPathSafe($,b)}catch(u){return S(u)}H.getDataAsync(function(u,p){if(p)S(p);else if(!u)S(v.Errors.CANT_EXTRACT_FILE());else{let qq=K?H.header.fileAttr:void 0;G.writeFileToAsync(b,u,M,qq,function(l){if(!l)return S(W("Unable to write file",b));G.fs.utimes(b,H.header.time,H.header.time,function(){S()})})}})}}},F)()},writeZip:function($,M){if(arguments.length===1){if(typeof $==="function")M=$,$=""}if(!$&&X.filename)$=X.filename;if(!$)return;var K=Y.compressToBuffer();if(K){var T=G.writeFileTo($,K,!0);if(typeof M==="function")M(!T?Error("failed"):null,"")}},writeZipPromise:function($,M){let{overwrite:K,perm:T}=Object.assign({overwrite:!0},M);return new Promise((R,W)=>{if(!$&&X.filename)$=X.filename;if(!$)W("ADM-ZIP: ZIP File Name Missing");this.toBufferPromise().then((V)=>{let j=(O)=>O?R(O):W("ADM-ZIP: Wasn't able to write zip file");G.writeFileToAsync($,V,K,T,j)},W)})},toBufferPromise:function(){return new Promise(($,M)=>{Y.toAsyncBuffer($,M)})},toBuffer:function($,M,K,T){if(typeof $==="function")return Y.toAsyncBuffer($,M,K,T),null;return Y.compressToBuffer()}}}});var WW=r(()=>{Xq()});Dq();WW();var XW=VW(qW(),1);import{parentPort as JW,workerData as mW}from"worker_threads";import*as QW from"path";function fW(){let{bundlePath:q,destination:Q}=mW;try{let J=new XW.default(q);wq(J,Q),J.extractAllTo(QW.resolve(Q),!0);let X={ok:!0};JW?.postMessage(X)}catch(J){let X={ok:!1,message:a(J),stack:J instanceof Error?J.stack:void 0};JW?.postMessage(X)}}fW();
|
|
4
4
|
|
|
5
|
-
//# debugId=
|
|
5
|
+
//# debugId=A786B3130B90C51364756E2164756E21
|
|
@@ -24,7 +24,12 @@ export class StreamReader extends AbstractStreamReader {
|
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
this.s.once('error', err => this.reject(err));
|
|
27
|
-
this.s.once('close', () =>
|
|
27
|
+
this.s.once('close', () => {
|
|
28
|
+
// Normal EOF may leave peeked bytes that the caller still needs to consume.
|
|
29
|
+
if (!this.endOfStream) {
|
|
30
|
+
void this.abort();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
30
35
|
* Read chunk from stream
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaeawc/auto-mobile",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.87",
|
|
4
4
|
"description": "Mobile device interaction automation via MCP",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
33
|
"dist",
|
|
34
|
+
"!dist/**/*.map",
|
|
34
35
|
"schemas"
|
|
35
36
|
],
|
|
36
37
|
"main": "dist/src/index.js",
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
"check:boundaries": "bash scripts/check-boundaries.sh",
|
|
58
59
|
"lint:prune": "bash scripts/oxlint-baseline.sh --update",
|
|
59
60
|
"lint:baseline": "bash scripts/oxlint-baseline.sh --update",
|
|
61
|
+
"lint:file-size:baseline": "bash scripts/file-size-baseline.sh --update",
|
|
60
62
|
"test:as-any:baseline": "bash scripts/test-as-any-baseline.sh --update",
|
|
61
63
|
"format": "oxfmt",
|
|
62
64
|
"format:check": "oxfmt --check",
|
|
@@ -85,22 +87,23 @@
|
|
|
85
87
|
"check:bun-version-coherence": "bun scripts/check-bun-version-coherence.ts",
|
|
86
88
|
"check:stdlib-first": "bash scripts/check-stdlib-first.sh",
|
|
87
89
|
"check:host-shell-boundary": "bun scripts/check-host-shell-boundary.ts",
|
|
88
|
-
"check:shell-quote-boundary": "
|
|
90
|
+
"check:shell-quote-boundary": "bun scripts/check-no-local-shell-quote.ts",
|
|
89
91
|
"check:simctl-boundary": "bash scripts/check-no-new-direct-simctl.sh",
|
|
90
92
|
"check:plutil-boundary": "bun scripts/check-no-direct-plutil.ts",
|
|
91
93
|
"check:security-boundary": "bash scripts/check-no-new-direct-security.sh",
|
|
92
|
-
"check:git-metadata-boundary": "
|
|
93
|
-
"check:utils-import-direction": "
|
|
94
|
+
"check:git-metadata-boundary": "bun scripts/check-no-new-direct-git-metadata.ts",
|
|
95
|
+
"check:utils-import-direction": "bun scripts/check-utils-import-direction.ts",
|
|
96
|
+
"check:tier-import-direction": "bun scripts/check-tier-import-direction.ts",
|
|
94
97
|
"check:xcodebuild-boundary": "bash scripts/check-no-new-direct-xcodebuild.sh",
|
|
95
|
-
"check:android-emulator-boundary": "
|
|
96
|
-
"check:app-bundle-metadata-boundary": "
|
|
97
|
-
"check:ffmpeg-boundary": "
|
|
98
|
-
"check:simulator-tcc-sqlite-boundary": "
|
|
99
|
-
"check:daemon-launcher-boundary": "
|
|
100
|
-
"check:ios-ctrl-proxy-process-boundary": "
|
|
98
|
+
"check:android-emulator-boundary": "bun scripts/check-android-emulator-boundary.ts",
|
|
99
|
+
"check:app-bundle-metadata-boundary": "bun scripts/check-app-bundle-metadata-boundary.ts",
|
|
100
|
+
"check:ffmpeg-boundary": "bun scripts/check-ffmpeg-execution-boundary.ts",
|
|
101
|
+
"check:simulator-tcc-sqlite-boundary": "bun scripts/check-simulator-tcc-sqlite-boundary.ts",
|
|
102
|
+
"check:daemon-launcher-boundary": "bun scripts/check-daemon-launcher-boundary.ts",
|
|
103
|
+
"check:ios-ctrl-proxy-process-boundary": "bun scripts/check-ios-ctrl-proxy-process-boundary.ts",
|
|
101
104
|
"dead-code:ts": "bash scripts/detect-dead-code-ts.sh",
|
|
102
|
-
"dead-code:ts:prune": "bash -o pipefail -c 'bunx ts-prune --project tsconfig.dead-code.json -i src/db/migrations | (grep -v \"(used in module)\" || true) | bash scripts/filter-ts-prune-allowlist.sh'",
|
|
103
105
|
"dead-code:ts:knip": "bunx knip",
|
|
106
|
+
"dead-code:ts:production": "bunx knip -c knip.production.json --include files",
|
|
104
107
|
"prepack": "bun scripts/release/trim-bundled-deps.ts prepack && bun scripts/release/write-build-info.ts",
|
|
105
108
|
"qualify:identity": "bun scripts/qualification/artifactIdentity.ts",
|
|
106
109
|
"qualify:run-case": "bun scripts/qualification/runCase.ts",
|
|
@@ -167,7 +170,6 @@
|
|
|
167
170
|
"image-q": "4.0.0",
|
|
168
171
|
"jimp": "1.6.1",
|
|
169
172
|
"jpeg-js": "0.4.4",
|
|
170
|
-
"kysely": "0.29.6",
|
|
171
173
|
"mime": "3.0.0",
|
|
172
174
|
"ms": "2.1.3",
|
|
173
175
|
"omggif": "1.0.10",
|
|
@@ -179,7 +181,7 @@
|
|
|
179
181
|
"semver": "7.8.5",
|
|
180
182
|
"sharp": "0.35.5",
|
|
181
183
|
"simple-xml-to-json": "1.2.3",
|
|
182
|
-
"strtok3": "10.4.
|
|
184
|
+
"strtok3": "10.4.1",
|
|
183
185
|
"tinycolor2": "1.6.0",
|
|
184
186
|
"token-types": "6.1.2",
|
|
185
187
|
"tslib": "2.8.1",
|
|
@@ -192,7 +194,9 @@
|
|
|
192
194
|
"devDependencies": {
|
|
193
195
|
"@anthropic-ai/sdk": "^0.133.0",
|
|
194
196
|
"@faker-js/faker": "^10.2.0",
|
|
195
|
-
"@modelcontextprotocol/
|
|
197
|
+
"@modelcontextprotocol/client": "^2.3.1",
|
|
198
|
+
"@modelcontextprotocol/node": "^2.1.1",
|
|
199
|
+
"@modelcontextprotocol/server": "^2.3.1",
|
|
196
200
|
"@types/node": "^26.0.0",
|
|
197
201
|
"@types/pngjs": "^6.0.5",
|
|
198
202
|
"@types/ws": "^8.18.1",
|
|
@@ -206,6 +210,7 @@
|
|
|
206
210
|
"js-tiktoken": "^1.0.21",
|
|
207
211
|
"js-yaml": "^5.1.0",
|
|
208
212
|
"knip": "^6.0.0",
|
|
213
|
+
"kysely": "0.29.6",
|
|
209
214
|
"oxc-parser": "0.153.0",
|
|
210
215
|
"oxfmt": "0.72.0",
|
|
211
216
|
"oxlint": "1.87.0",
|
|
@@ -213,13 +218,12 @@
|
|
|
213
218
|
"pixelmatch": "^8.0.0",
|
|
214
219
|
"pngjs": "^7.0.0",
|
|
215
220
|
"reflect-metadata": "^0.2.2",
|
|
216
|
-
"ts-prune": "^0.10.3",
|
|
217
|
-
"tsx": "^4.21.0",
|
|
218
221
|
"turbo": "^2.8.10",
|
|
219
222
|
"typescript": "6.0.3",
|
|
220
223
|
"werift": "^0.25.0",
|
|
221
224
|
"ws": "^8.19.0",
|
|
222
|
-
"xml2js": "^0.6.2"
|
|
225
|
+
"xml2js": "^0.6.2",
|
|
226
|
+
"zod-to-json-schema": "^3.25.1"
|
|
223
227
|
},
|
|
224
228
|
"optionalDependencies": {
|
|
225
229
|
"@img/sharp-darwin-arm64": "0.35.5",
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$comment": "Managed-slot contract published with the package (#12060). test/models/managedSlotContract.test.ts fails when the code drifts from this file; update both together.",
|
|
3
|
-
"contractFileVersion": 1,
|
|
4
|
-
"contractVersions": [1],
|
|
5
|
-
"launchConfig": { "flag": "--managed-slot-config", "env": "AUTOMOBILE_MANAGED_SLOT_CONFIG" },
|
|
6
|
-
"capabilityProbeMethod": "daemon/capabilities",
|
|
7
|
-
"acquireMethod": "daemon/acquireManagedSlots",
|
|
8
|
-
"initializeExperimentalKey": "automobile/managedSlots",
|
|
9
|
-
"daemonCapabilities": {
|
|
10
|
-
"base": "managed-slots/v1",
|
|
11
|
-
"additive": [
|
|
12
|
-
{
|
|
13
|
-
"capability": "managed-slots/v1.deviceFamily",
|
|
14
|
-
"configField": "requests[].requestedSpec.deviceFamily"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"maxGroupSize": 1,
|
|
19
|
-
"configErrorCodes": [
|
|
20
|
-
"managed_slot_config_invalid",
|
|
21
|
-
"contract_unsupported",
|
|
22
|
-
"managed_slot_group_unsupported",
|
|
23
|
-
"managed_slots_unsupported"
|
|
24
|
-
],
|
|
25
|
-
"registry": {
|
|
26
|
-
"migrations": [
|
|
27
|
-
"2026_10_09_000_slot_registry",
|
|
28
|
-
"2026_10_09_001_slot_owner_fencing",
|
|
29
|
-
"2026_10_09_002_slot_journal",
|
|
30
|
-
"2026_10_10_003_free_device_stop_state",
|
|
31
|
-
"2026_10_12_004_free_device_deletion",
|
|
32
|
-
"2026_10_13_005_free_device_deletion_failed_deletes"
|
|
33
|
-
],
|
|
34
|
-
"olderBuildOnNewerRegistry": {
|
|
35
|
-
"supported": false,
|
|
36
|
-
"refusedBeforeMutation": true,
|
|
37
|
-
"failureCode": "registry_schema_unsupported",
|
|
38
|
-
"retryable": false,
|
|
39
|
-
"note": "A registry migrated by a newer build is refused before any write; upgrade every daemon sharing the registry."
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"packageVersions": [
|
|
43
|
-
{
|
|
44
|
-
"range": "<=0.0.84",
|
|
45
|
-
"managedSlots": false,
|
|
46
|
-
"note": "0.0.84 (source b51bfe50dfeb608ed838acf89481b70652084b81) predates managed slots: no --managed-slot-config and no managed-slots capability."
|
|
47
|
-
}
|
|
48
|
-
],
|
|
49
|
-
"compatibility": [
|
|
50
|
-
{
|
|
51
|
-
"id": "v1-on-current-daemon",
|
|
52
|
-
"description": "A single-slot v1 frontend can acquire on the current daemon.",
|
|
53
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": false },
|
|
54
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
55
|
-
"supported": true,
|
|
56
|
-
"outcome": "acquire",
|
|
57
|
-
"refusedBeforeMutation": false,
|
|
58
|
-
"verifiedBy": "unit-test"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "frontend-daemon-build-mismatch",
|
|
62
|
-
"description": "A frontend whose daemon handshake reports a version or build mismatch is refused before acquisition.",
|
|
63
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": false },
|
|
64
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
65
|
-
"supported": false,
|
|
66
|
-
"outcome": "contract_unsupported",
|
|
67
|
-
"refusedBeforeMutation": true,
|
|
68
|
-
"verifiedBy": "unit-test",
|
|
69
|
-
"daemonConnect": "handshake-mismatch"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"id": "v1-on-v1-only-daemon",
|
|
73
|
-
"description": "A base v1 config can acquire on a daemon advertising only the base capability.",
|
|
74
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": false },
|
|
75
|
-
"daemonCapabilities": ["managed-slots/v1"],
|
|
76
|
-
"supported": true,
|
|
77
|
-
"outcome": "acquire",
|
|
78
|
-
"refusedBeforeMutation": false,
|
|
79
|
-
"verifiedBy": "unit-test"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"id": "device-family-on-v1-only-daemon",
|
|
83
|
-
"description": "A deviceFamily config is refused by a daemon lacking its additive capability.",
|
|
84
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": true },
|
|
85
|
-
"daemonCapabilities": ["managed-slots/v1"],
|
|
86
|
-
"supported": false,
|
|
87
|
-
"outcome": "contract_unsupported",
|
|
88
|
-
"refusedBeforeMutation": true,
|
|
89
|
-
"verifiedBy": "unit-test"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"id": "device-family-on-current-daemon",
|
|
93
|
-
"description": "A deviceFamily config can acquire when the daemon advertises its additive capability.",
|
|
94
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": true },
|
|
95
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
96
|
-
"supported": true,
|
|
97
|
-
"outcome": "acquire",
|
|
98
|
-
"refusedBeforeMutation": false,
|
|
99
|
-
"verifiedBy": "unit-test"
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"id": "any-on-daemon-without-managed-slots",
|
|
103
|
-
"description": "A managed frontend is refused by a daemon without managed-slot support, including 0.0.84.",
|
|
104
|
-
"frontend": { "contractVersion": 1, "groupSize": 1, "usesDeviceFamily": false },
|
|
105
|
-
"daemonCapabilities": [],
|
|
106
|
-
"supported": false,
|
|
107
|
-
"outcome": "contract_unsupported",
|
|
108
|
-
"refusedBeforeMutation": true,
|
|
109
|
-
"verifiedBy": "unit-test"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"id": "contract-version-2",
|
|
113
|
-
"description": "Contract version 2 is refused during config parsing.",
|
|
114
|
-
"frontend": { "contractVersion": 2, "groupSize": 1, "usesDeviceFamily": false },
|
|
115
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
116
|
-
"supported": false,
|
|
117
|
-
"outcome": "contract_unsupported",
|
|
118
|
-
"refusedBeforeMutation": true,
|
|
119
|
-
"verifiedBy": "unit-test"
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"id": "multi-device-group",
|
|
123
|
-
"description": "Groups of two devices are refused during config parsing.",
|
|
124
|
-
"frontend": { "contractVersion": 1, "groupSize": 2, "usesDeviceFamily": false },
|
|
125
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
126
|
-
"supported": false,
|
|
127
|
-
"outcome": "managed_slot_group_unsupported",
|
|
128
|
-
"refusedBeforeMutation": true,
|
|
129
|
-
"verifiedBy": "unit-test"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"id": "unmanaged-frontend-shares-daemon",
|
|
133
|
-
"description": "An ordinary frontend can share a managed-slot daemon; native qualification is still owed.",
|
|
134
|
-
"frontend": null,
|
|
135
|
-
"daemonCapabilities": ["managed-slots/v1", "managed-slots/v1.deviceFamily"],
|
|
136
|
-
"supported": true,
|
|
137
|
-
"outcome": "unmanaged",
|
|
138
|
-
"refusedBeforeMutation": false,
|
|
139
|
-
"verifiedBy": "native-qualification"
|
|
140
|
-
}
|
|
141
|
-
]
|
|
142
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type Kysely, sql } from "kysely";
|
|
2
|
-
|
|
3
|
-
export async function up(db: Kysely<unknown>): Promise<void> {
|
|
4
|
-
// Create device_configs table
|
|
5
|
-
await db.schema
|
|
6
|
-
.createTable("device_configs")
|
|
7
|
-
.ifNotExists()
|
|
8
|
-
.addColumn("id", "integer", (col) => col.primaryKey().autoIncrement())
|
|
9
|
-
.addColumn("device_id", "text", (col) => col.notNull().unique())
|
|
10
|
-
.addColumn("platform", "text", (col) => col.notNull())
|
|
11
|
-
.addColumn("active_mode", "text")
|
|
12
|
-
.addColumn("config_json", "text", (col) => col.notNull().defaultTo("{}"))
|
|
13
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo(sql`(datetime('now'))`))
|
|
14
|
-
.addColumn("updated_at", "text", (col) => col.notNull().defaultTo(sql`(datetime('now'))`))
|
|
15
|
-
.execute();
|
|
16
|
-
|
|
17
|
-
// Create index on device_id for fast lookups
|
|
18
|
-
await db.schema
|
|
19
|
-
.createIndex("idx_device_configs_device_id")
|
|
20
|
-
.ifNotExists()
|
|
21
|
-
.on("device_configs")
|
|
22
|
-
.column("device_id")
|
|
23
|
-
.execute();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function down(db: Kysely<unknown>): Promise<void> {
|
|
27
|
-
await db.schema.dropTable("device_configs").execute();
|
|
28
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { type Kysely, sql } from "kysely";
|
|
2
|
-
|
|
3
|
-
export async function up(db: Kysely<unknown>): Promise<void> {
|
|
4
|
-
// Create performance_thresholds table
|
|
5
|
-
await db.schema
|
|
6
|
-
.createTable("performance_thresholds")
|
|
7
|
-
.ifNotExists()
|
|
8
|
-
.addColumn("id", "integer", (col) => col.primaryKey().autoIncrement())
|
|
9
|
-
.addColumn("device_id", "text", (col) => col.notNull())
|
|
10
|
-
.addColumn("session_id", "text", (col) => col.notNull())
|
|
11
|
-
.addColumn("refresh_rate", "integer", (col) => col.notNull()) // Hz: 60, 90, 120, etc.
|
|
12
|
-
.addColumn("frame_time_threshold_ms", "real", (col) => col.notNull()) // 16ms for 60Hz, 8.3ms for 120Hz
|
|
13
|
-
.addColumn("p50_threshold_ms", "real", (col) => col.notNull())
|
|
14
|
-
.addColumn("p90_threshold_ms", "real", (col) => col.notNull())
|
|
15
|
-
.addColumn("p95_threshold_ms", "real", (col) => col.notNull())
|
|
16
|
-
.addColumn("p99_threshold_ms", "real", (col) => col.notNull())
|
|
17
|
-
.addColumn("jank_count_threshold", "integer", (col) => col.notNull()) // Max allowed jank frames
|
|
18
|
-
.addColumn("cpu_usage_threshold_percent", "real", (col) => col.notNull()) // Max CPU %
|
|
19
|
-
.addColumn("touch_latency_threshold_ms", "real", (col) => col.notNull())
|
|
20
|
-
.addColumn("weight", "real", (col) => col.notNull().defaultTo(1.0)) // For weighted average
|
|
21
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo(sql`(datetime('now'))`))
|
|
22
|
-
.addColumn("ttl_hours", "integer", (col) => col.notNull().defaultTo(24)) // TTL in hours
|
|
23
|
-
.execute();
|
|
24
|
-
|
|
25
|
-
// Create index on device_id for fast lookups
|
|
26
|
-
await db.schema
|
|
27
|
-
.createIndex("idx_performance_thresholds_device_id")
|
|
28
|
-
.ifNotExists()
|
|
29
|
-
.on("performance_thresholds")
|
|
30
|
-
.column("device_id")
|
|
31
|
-
.execute();
|
|
32
|
-
|
|
33
|
-
// Create index on session_id for session-specific queries
|
|
34
|
-
await db.schema
|
|
35
|
-
.createIndex("idx_performance_thresholds_session_id")
|
|
36
|
-
.ifNotExists()
|
|
37
|
-
.on("performance_thresholds")
|
|
38
|
-
.column("session_id")
|
|
39
|
-
.execute();
|
|
40
|
-
|
|
41
|
-
// Create composite index for device + created_at for TTL queries
|
|
42
|
-
await db.schema
|
|
43
|
-
.createIndex("idx_performance_thresholds_device_created")
|
|
44
|
-
.ifNotExists()
|
|
45
|
-
.on("performance_thresholds")
|
|
46
|
-
.columns(["device_id", "created_at"])
|
|
47
|
-
.execute();
|
|
48
|
-
|
|
49
|
-
// Create performance_audit_results table to store audit outcomes
|
|
50
|
-
await db.schema
|
|
51
|
-
.createTable("performance_audit_results")
|
|
52
|
-
.ifNotExists()
|
|
53
|
-
.addColumn("id", "integer", (col) => col.primaryKey().autoIncrement())
|
|
54
|
-
.addColumn("device_id", "text", (col) => col.notNull())
|
|
55
|
-
.addColumn("session_id", "text", (col) => col.notNull())
|
|
56
|
-
.addColumn("package_name", "text", (col) => col.notNull())
|
|
57
|
-
.addColumn("timestamp", "text", (col) => col.notNull())
|
|
58
|
-
.addColumn("passed", "integer", (col) => col.notNull()) // 0 = failed, 1 = passed
|
|
59
|
-
.addColumn("p50_ms", "real")
|
|
60
|
-
.addColumn("p90_ms", "real")
|
|
61
|
-
.addColumn("p95_ms", "real")
|
|
62
|
-
.addColumn("p99_ms", "real")
|
|
63
|
-
.addColumn("jank_count", "integer")
|
|
64
|
-
.addColumn("missed_vsync_count", "integer")
|
|
65
|
-
.addColumn("slow_ui_thread_count", "integer")
|
|
66
|
-
.addColumn("frame_deadline_missed_count", "integer")
|
|
67
|
-
.addColumn("cpu_usage_percent", "real")
|
|
68
|
-
.addColumn("touch_latency_ms", "real")
|
|
69
|
-
.addColumn("diagnostics_json", "text") // JSON blob for detailed diagnostics
|
|
70
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo(sql`(datetime('now'))`))
|
|
71
|
-
.execute();
|
|
72
|
-
|
|
73
|
-
// Create index on device_id + timestamp for historical queries
|
|
74
|
-
await db.schema
|
|
75
|
-
.createIndex("idx_performance_audit_results_device_timestamp")
|
|
76
|
-
.ifNotExists()
|
|
77
|
-
.on("performance_audit_results")
|
|
78
|
-
.columns(["device_id", "timestamp"])
|
|
79
|
-
.execute();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export async function down(db: Kysely<unknown>): Promise<void> {
|
|
83
|
-
await db.schema.dropTable("performance_audit_results").execute();
|
|
84
|
-
await db.schema.dropTable("performance_thresholds").execute();
|
|
85
|
-
}
|