@micromag/viewer-build 0.2.390 → 0.2.395
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/build/asset-manifest.json +39 -41
- package/build/index.html +1 -1
- package/build/static/css/{main.7f2f5b5a.chunk.css → main.f4d95294.chunk.css} +2 -2
- package/build/static/css/main.f4d95294.chunk.css.map +1 -0
- package/build/static/js/0.738d262a.chunk.js +2 -0
- package/build/static/js/0.738d262a.chunk.js.map +1 -0
- package/build/static/js/1.8b3ff205.chunk.js +2 -0
- package/build/static/js/1.8b3ff205.chunk.js.map +1 -0
- package/build/static/js/{11.9b03ae00.chunk.js → 10.1cb3daca.chunk.js} +2 -2
- package/build/static/js/{11.9b03ae00.chunk.js.map → 10.1cb3daca.chunk.js.map} +1 -1
- package/build/static/js/{12.07f6dfbf.chunk.js → 11.e5cda4e3.chunk.js} +2 -2
- package/build/static/js/{12.07f6dfbf.chunk.js.map → 11.e5cda4e3.chunk.js.map} +1 -1
- package/build/static/js/{13.af8da627.chunk.js → 12.06c49e96.chunk.js} +2 -2
- package/build/static/js/{13.af8da627.chunk.js.map → 12.06c49e96.chunk.js.map} +1 -1
- package/build/static/js/{14.e42f0789.chunk.js → 13.6888ee8a.chunk.js} +2 -2
- package/build/static/js/{14.e42f0789.chunk.js.map → 13.6888ee8a.chunk.js.map} +1 -1
- package/build/static/js/14.06a09227.chunk.js +2 -0
- package/build/static/js/14.06a09227.chunk.js.map +1 -0
- package/build/static/js/{16.d2386b37.chunk.js → 15.be60e44e.chunk.js} +2 -2
- package/build/static/js/{16.d2386b37.chunk.js.map → 15.be60e44e.chunk.js.map} +1 -1
- package/build/static/js/4.96c340f4.chunk.js +3 -0
- package/build/static/js/{5.36556929.chunk.js.LICENSE.txt → 4.96c340f4.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/4.96c340f4.chunk.js.map +1 -0
- package/build/static/js/{7.1cc6c06d.chunk.js → 5.5555a5fa.chunk.js} +2 -2
- package/build/static/js/{7.1cc6c06d.chunk.js.map → 5.5555a5fa.chunk.js.map} +1 -1
- package/build/static/js/{2.89735343.chunk.js → 6.4ca96426.chunk.js} +2 -2
- package/build/static/js/6.4ca96426.chunk.js.map +1 -0
- package/build/static/js/{8.7d772a7e.chunk.js → 7.f9e2e742.chunk.js} +2 -2
- package/build/static/js/{8.7d772a7e.chunk.js.map → 7.f9e2e742.chunk.js.map} +1 -1
- package/build/static/js/{9.2b1ae3f1.chunk.js → 8.e3121c5a.chunk.js} +2 -2
- package/build/static/js/{9.2b1ae3f1.chunk.js.map → 8.e3121c5a.chunk.js.map} +1 -1
- package/build/static/js/9.d9e4ad43.chunk.js +2 -0
- package/build/static/js/9.d9e4ad43.chunk.js.map +1 -0
- package/build/static/js/main.c42fa4c9.chunk.js +2 -0
- package/build/static/js/main.c42fa4c9.chunk.js.map +1 -0
- package/build/static/js/runtime-main.f4f072c5.js +2 -0
- package/build/static/js/runtime-main.f4f072c5.js.map +1 -0
- package/package.json +7 -7
- package/build/static/css/main.7f2f5b5a.chunk.css.map +0 -1
- package/build/static/js/0.b8a162a9.chunk.js +0 -2
- package/build/static/js/0.b8a162a9.chunk.js.map +0 -1
- package/build/static/js/1.c7a69c3d.chunk.js +0 -2
- package/build/static/js/1.c7a69c3d.chunk.js.map +0 -1
- package/build/static/js/10.11cb5892.chunk.js +0 -2
- package/build/static/js/10.11cb5892.chunk.js.map +0 -1
- package/build/static/js/15.15c6ee58.chunk.js +0 -2
- package/build/static/js/15.15c6ee58.chunk.js.map +0 -1
- package/build/static/js/2.89735343.chunk.js.map +0 -1
- package/build/static/js/5.36556929.chunk.js +0 -3
- package/build/static/js/5.36556929.chunk.js.map +0 -1
- package/build/static/js/6.9d7e4dda.chunk.js +0 -2
- package/build/static/js/6.9d7e4dda.chunk.js.map +0 -1
- package/build/static/js/main.271c3d25.chunk.js +0 -2
- package/build/static/js/main.271c3d25.chunk.js.map +0 -1
- package/build/static/js/runtime-main.82def290.js +0 -2
- package/build/static/js/runtime-main.82def290.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/engine.io-client/build/esm/util.js","../../../node_modules/@socket.io/component-emitter/index.js","../../../node_modules/engine.io-client/build/esm/globalThis.browser.js","../../../node_modules/engine.io-client/build/esm/transport.js","../../../node_modules/engine.io-parser/build/esm/commons.js","../../../src/index.ts","../../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../../../node_modules/engine.io-parser/build/esm/index.js","../../../node_modules/parseqs/index.js","../../../node_modules/component-emitter/index.js","../../../node_modules/parseuri/index.js","../../../node_modules/yeast/index.js","../../../node_modules/@uppy/transloadit/lib/Assembly.js","../../../node_modules/@uppy/transloadit/lib/parseUrl.js","../../../node_modules/has-cors/index.js","../../../node_modules/engine.io-client/build/esm/transports/websocket.js","../../../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../../../node_modules/backo2/index.js","../../../node_modules/@uppy/transloadit/lib/Client.js","../../../node_modules/@uppy/transloadit/lib/AssemblyOptions.js","../../../node_modules/@uppy/transloadit/lib/AssemblyWatcher.js","../../../node_modules/@uppy/transloadit/lib/locale.js","../../../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../../../node_modules/engine.io-client/build/esm/transports/polling.js","../../../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../../../node_modules/engine.io-client/build/esm/transports/index.js","../../../node_modules/engine.io-client/build/esm/socket.js","../../../node_modules/engine.io-client/build/esm/index.js","../../../node_modules/socket.io-parser/build/esm/is-binary.js","../../../node_modules/socket.io-parser/build/esm/binary.js","../../../node_modules/socket.io-parser/build/esm/index.js","../../../node_modules/socket.io-client/build/esm/on.js","../../../node_modules/socket.io-client/build/esm/socket.js","../../../node_modules/socket.io-client/build/esm/manager.js","../../../node_modules/socket.io-client/build/esm/index.js","../../../node_modules/socket.io-client/build/esm/url.js","../../../node_modules/@uppy/transloadit/lib/index.js"],"names":["pick","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","Emitter","key","prototype","mixin","exports","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","self","window","Function","Transport","writable","query","readyState","socket","msg","desc","err","Error","type","description","doOpen","doClose","onClose","packets","write","data","packet","decodePacket","binaryType","onPacket","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodeBlobAsBase64","callback","fileReader","FileReader","onload","content","result","split","readAsDataURL","encodePacket","supportsBinary","isView","buffer","decodeBase64Packet","decoded","decode","mapBinary","base64","encodedPacket","charAt","substring","SEPARATOR","String","fromCharCode","encodePayload","encodedPackets","count","join","decodePayload","encodedPayload","decodedPacket","protocol","encode","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","module","re","parts","src","b","indexOf","e","replace","m","exec","uri","source","host","authority","ipv6uri","pathNames","path","regx","names","substr","queryKey","$0","$1","$2","prev","alphabet","map","seed","num","encoded","Math","floor","yeast","now","Date","_classPrivateFieldLooseBase","receiver","privateKey","TypeError","id","_classPrivateFieldLooseKey","name","socketIo","require","has","NetworkError","fetchWithNetworkError","parseUrl","ASSEMBLY_EXECUTING","ASSEMBLY_COMPLETED","statusOrder","isStatus","status","test","_onFinished","_connectSocket","_onError","_beginPolling","_fetchStatus","_diffStatus","TransloaditAssembly","assembly","defineProperty","value","_diffStatus2","_fetchStatus2","_beginPolling2","_onError2","_connectSocket2","_onFinished2","pollInterval","closed","diff","next","disconnect","clearInterval","close","parsed","websocket_url","connect","origin","transports","pathname","assembly_id","file","uploads","stepName","results","assign","message","setInterval","connected","_temp","assembly_ssl_url","then","response","json","updateStatus","prevStatus","ok","nextStatus","error","nowExecuting","filter","upload","nextResults","prevResults","n","some","p","url","scheme","slashIndex","XMLHttpRequest","isReactNative","navigator","product","toLowerCase","WS","forceBase64","check","protocols","extraHeaders","headers","ws","usingBrowserWebSocket","WebSocket","defaultBinaryType","addEventListeners","onopen","autoUnref","_socket","unref","onOpen","onclose","onmessage","ev","onData","onerror","onError","lastPacket","options","compress","perMessageDeflate","Buffer","byteLength","threshold","send","nextTick","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","parseqs","hostname","Promise","resolve","MozWebSocket","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","_headers","_reportError","_opts","params","errorReporting","instance","endpoint","submitError","client","_ref","fields","signature","expectedFiles","FormData","append","JSON","stringify","URL","service","href","method","body","details","size","uploadURL","reject","uploadUrl","filename","agent","userAgent","validateParams","parse","cause","auth","dedupe","list","dedupeMap","fileIDs","fileIDArrays","values","flat","_getAssemblyOptions","AssemblyOptions","files","_getAssemblyOptions2","all","alwaysRunAssembly","getAssemblyOptions","assemblyOptions","isArray","fromEntries","fieldName","meta","_assemblyIDs","_reject","_remaining","_resolve","_uppy","_watching","_onAssemblyComplete","_onAssemblyCancel","_onAssemblyError","_onImportError","_checkAllComplete","_removeListeners","_addListeners","TransloaditAssemblyWatcher","uppy","assemblyIDs","_addListeners2","_removeListeners2","_checkAllComplete2","_watching2","log","fileID","promise","strings","creatingAssembly","creatingAssemblyFailed","encoding","xdomain","hasCORS","concat","Polling","polling","poll","onPause","pause","total","doPoll","doWrite","sid","empty","hasXHR2","responseType","XHR","location","isSSL","xd","xs","Request","req","request","pollXhr","async","undefined","xscheme","xhr","open","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","onLoad","document","index","requestsCount","requests","cleanup","onSuccess","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","websocket","Socket","parseuri","writeBuffer","prevBufferLen","upgrade","rememberUpgrade","rejectUnauthorized","transportOptions","closeOnBeforeunload","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","o","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","onTransportClose","onupgrade","to","probe","onHandshake","resetPingTimeout","sendPacket","code","filterUpgrades","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","withNativeFile","File","isBinary","hasBinary","toJSON","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","EVENT","ACK","encodeAsString","BINARY_EVENT","BINARY_ACK","encodeAsBinary","nsp","deconstruction","unshift","Decoder","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","c","payload","tryParse","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","RESERVED_EVENTS","freeze","connect_error","disconnecting","newListener","io","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","_autoConnect","subs","onpacket","subEvents","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","timer","_packet","onconnect","onevent","onack","ondisconnect","destroy","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","listener","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","lookup","loc","sameNamespace","forceNew","multiplex","_class","_getClientVersion","_attachAssemblyMetadata","_createAssembly","_createAssemblyWatcher","_shouldWaitAfterUpload","_reserveFiles","_onFileUploadURLAvailable","_findFile","_onFileUploadComplete","_onResult","_onAssemblyFinished","_cancelAssembly","_onCancelAll","_getPersistentData","_onRestored","_connectAssembly","_prepareUpload","_afterUpload","_onTusError","hasProperty","BasePlugin","Tus","Assembly","Client","AssemblyWatcher","locale","defaultGetAssemblyOptions","sendErrorToConsole","originalErr","console","TL_COMPANION","_getClientVersion2","constructor","VERSION","addPluginVersion","pluginName","versionName","plugin","getPlugin","importFromUploadURLs","_attachAssemblyMetadata2","assembly_url","fieldname","tus","tus_url","addRequestId","remote","companionUrl","newHost","companion_url","newFile","transloadit","_createAssembly2","uploadID","createAssembly","newAssembly","assemblyID","getPluginState","assemblies","uploadsAssemblies","setPluginState","getState","updatedFiles","getFile","setState","i18n","_createAssemblyWatcher2","watcher","getAssemblyFiles","completedFiles","assemblyWatchers","_shouldWaitAfterUpload2","waitForEncoding","waitForMetadata","_reserveFiles2","reserveFile","_findFile2","uploadedFile","getFiles","tus_upload_url","is_tus_file","_onFileUploadComplete2","assemblyId","state","getAssembly","_onResult2","original_id","localId","entry","_onAssemblyFinished2","getAssemblyStatus","finalStatus","_cancelAssembly2","cancelAssembly","_connectAssembly2","activeAssemblies","newStatus","_this","rawFile","addFile","cancelPromises","setData","pluginData","savedState","previousAssemblies","restored","entries","restoreState","fileIDsInUpload","flatMap","restoreAssemblies","update","updateAssemblies","filteredFileIDs","mode","build","createdAssemblies","closeSocketConnections","addResultData","originalRequest","getUnderlyingObject","responseURL","title","defaultLocale","defaultOptions","limit","i18nInit","hasCustomAssemblyOptions","addPreProcessor","addPostProcessor","use","storeFingerprintForResuming","useFastRemoteRetry","metaFields","capabilities","individualCancellation","removePreProcessor","removePostProcessor","COMPANION","COMPANION_PATTERN"],"mappings":"wIAAA,iFACO,SAASA,EAAKC,GAAc,2BAANC,EAAM,iCAANA,EAAM,kBAC/B,OAAOA,EAAKC,QAAO,SAACC,EAAKC,GAIrB,OAHIJ,EAAIK,eAAeD,KACnBD,EAAIC,GAAKJ,EAAII,IAEVD,IACR,IAGP,IAAMG,EAAqBC,WACrBC,EAAuBC,aACtB,SAASC,EAAsBV,EAAKW,GACnCA,EAAKC,iBACLZ,EAAIa,aAAeP,EAAmBQ,KAAKC,KAC3Cf,EAAIgB,eAAiBR,EAAqBM,KAAKC,OAG/Cf,EAAIa,aAAeN,WAAWO,KAAKC,KACnCf,EAAIgB,eAAiBP,aAAaK,KAAKC,Q,kBCN/C,SAASE,EAAQjB,GACf,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIkB,KAAOD,EAAQE,UACtBnB,EAAIkB,GAAOD,EAAQE,UAAUD,GAE/B,OAAOlB,EAfSoB,CAAMpB,GATxBqB,EAAQJ,QAAUA,EAoClBA,EAAQE,UAAUG,GAClBL,EAAQE,UAAUI,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,IACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,MAaTT,EAAQE,UAAUU,KAAO,SAASL,EAAOC,GACvC,SAASH,IACPI,KAAKI,IAAIN,EAAOF,GAChBG,EAAGM,MAAML,KAAMM,WAKjB,OAFAV,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,MAaTT,EAAQE,UAAUW,IAClBb,EAAQE,UAAUc,eAClBhB,EAAQE,UAAUe,mBAClBjB,EAAQE,UAAUgB,oBAAsB,SAASX,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,GAGjC,GAAKK,UAAUI,OAEjB,OADAV,KAAKC,WAAa,GACXD,KAIT,IAUIW,EAVAC,EAAYZ,KAAKC,WAAW,IAAMH,GACtC,IAAKc,EAAW,OAAOZ,KAGvB,GAAI,GAAKM,UAAUI,OAEjB,cADOV,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAIa,EAAI,EAAGA,EAAID,EAAUF,OAAQG,IAEpC,IADAF,EAAKC,EAAUC,MACJd,GAAMY,EAAGZ,KAAOA,EAAI,CAC7Ba,EAAUE,OAAOD,EAAG,GACpB,MAUJ,OAJyB,IAArBD,EAAUF,eACLV,KAAKC,WAAW,IAAMH,GAGxBE,MAWTT,EAAQE,UAAUsB,KAAO,SAASjB,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,GAKrC,IAHA,IAAIe,EAAO,IAAIC,MAAMX,UAAUI,OAAS,GACpCE,EAAYZ,KAAKC,WAAW,IAAMH,GAE7Be,EAAI,EAAGA,EAAIP,UAAUI,OAAQG,IACpCG,EAAKH,EAAI,GAAKP,UAAUO,GAG1B,GAAID,EAEG,CAAIC,EAAI,EAAb,IAAK,IAAWK,GADhBN,EAAYA,EAAUO,MAAM,IACIT,OAAQG,EAAIK,IAAOL,EACjDD,EAAUC,GAAGR,MAAML,KAAMgB,GAI7B,OAAOhB,MAITT,EAAQE,UAAU2B,aAAe7B,EAAQE,UAAUsB,KAUnDxB,EAAQE,UAAU4B,UAAY,SAASvB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,GAC9BD,KAAKC,WAAW,IAAMH,IAAU,IAWzCP,EAAQE,UAAU6B,aAAe,SAASxB,GACxC,QAAUE,KAAKqB,UAAUvB,GAAOY,S,iCC9KnB,IACS,qBAATa,KACAA,KAEgB,qBAAXC,OACLA,OAGAC,SAAS,cAATA,I,0JCLFC,EAAb,kDAOI,WAAYzC,GAAM,kCACd,gBACK0C,UAAW,EAChB3C,YAAsB,eAAMC,GAC5B,EAAKA,KAAOA,EACZ,EAAK2C,MAAQ3C,EAAK2C,MAClB,EAAKC,WAAa,GAClB,EAAKC,OAAS7C,EAAK6C,OAPL,EAPtB,2CAuBI,SAAQC,EAAKC,GACT,IAAMC,EAAM,IAAIC,MAAMH,GAMtB,OAJAE,EAAIE,KAAO,iBAEXF,EAAIG,YAAcJ,EAClB,4DAAW,QAASC,GACbjC,OA9Bf,kBAqCI,WAKI,MAJI,WAAaA,KAAK6B,YAAc,KAAO7B,KAAK6B,aAC5C7B,KAAK6B,WAAa,UAClB7B,KAAKqC,UAEFrC,OA1Cf,mBAiDI,WAKI,MAJI,YAAcA,KAAK6B,YAAc,SAAW7B,KAAK6B,aACjD7B,KAAKsC,UACLtC,KAAKuC,WAEFvC,OAtDf,kBA8DI,SAAKwC,GACG,SAAWxC,KAAK6B,YAChB7B,KAAKyC,MAAMD,KAhEvB,oBA2EI,WACIxC,KAAK6B,WAAa,OAClB7B,KAAK2B,UAAW,EAChB,4DAAW,UA9EnB,oBAsFI,SAAOe,GACH,IAAMC,EAASC,YAAaF,EAAM1C,KAAK8B,OAAOe,YAC9C7C,KAAK8C,SAASH,KAxFtB,sBA+FI,SAASA,GACL,4DAAW,SAAUA,KAhG7B,qBAuGI,WACI3C,KAAK6B,WAAa,SAClB,4DAAW,aAzGnB,GAA+BtC,Y,2MCH/B,IAAMwD,EAAeC,OAAOC,OAAO,MACnCF,EAAY,KAAW,IACvBA,EAAY,MAAY,IACxBA,EAAY,KAAW,IACvBA,EAAY,KAAW,IACvBA,EAAY,QAAc,IAC1BA,EAAY,QAAc,IAC1BA,EAAY,KAAW,IACvB,IAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQ,SAAA5D,GAC9B0D,EAAqBH,EAAavD,IAAQA,KCN9C,IDQA,IAAM6D,EAAe,CAAElB,KAAM,QAASO,KAAM,gBEXtCY,EAAiC,oBAATC,MACT,qBAATA,MACqC,6BAAzCP,OAAOvD,UAAU+D,SAASC,KAAKF,MACjCG,EAA+C,oBAAhBC,YA4B/BC,EAAqB,SAAClB,EAAMmB,GAC9B,IAAMC,EAAa,IAAIC,WAKvB,OAJAD,EAAWE,OAAS,WAChB,IAAMC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CN,EAAS,IAAMI,IAEZH,EAAWM,cAAc1B,IAErB2B,EA7BM,SAAC,EAAgBC,EAAgBT,GAAa,IALpDvF,EAKS6D,EAA2C,EAA3CA,KAAMO,EAAqC,EAArCA,KAC1B,OAAIY,GAAkBZ,aAAgBa,KAC9Be,EACOT,EAASnB,GAGTkB,EAAmBlB,EAAMmB,GAG/BH,IACJhB,aAAgBiB,cAfVrF,EAegCoE,EAdN,oBAAvBiB,YAAYY,OACpBZ,YAAYY,OAAOjG,GACnBA,GAAOA,EAAIkG,kBAAkBb,cAa3BW,EACOT,EAASnB,GAGTkB,EAAmB,IAAIL,KAAK,CAACb,IAAQmB,GAI7CA,EAASd,EAAaZ,IAASO,GAAQ,MD9B5C,EAAQ,mEAGR,EAA+B,qBAAf,WAA6B,GAAK,IAAI,WAAW,KAC9D,EAAI,EAAG,EAAI,EAAM,OAAQ,IAC9B,EAAO,EAAM,WAAW,IAAM,E,IEH5BgB,EAA+C,oBAAhBC,YA4B/Bc,EAAqB,SAAC/B,EAAMG,GAC9B,GAAIa,EAAuB,CACvB,IAAMgB,EFFQ,SAAC,GACjB,IAEE,EAEA,EACA,EACA,EACA,EAPA,EAA+B,IAAhB,EAAO,OACtB,EAAM,EAAO,OAEb,EAAI,EAM0B,MAA9B,EAAO,EAAO,OAAS,KACvB,IACkC,MAA9B,EAAO,EAAO,OAAS,IACvB,KAIR,IAAM,EAAc,IAAI,YAAY,GAChC,EAAQ,IAAI,WAAW,GAE3B,IAAK,EAAI,EAAG,EAAI,EAAK,GAAK,EACtB,EAAW,EAAO,EAAO,WAAW,IACpC,EAAW,EAAO,EAAO,WAAW,EAAI,IACxC,EAAW,EAAO,EAAO,WAAW,EAAI,IACxC,EAAW,EAAO,EAAO,WAAW,EAAI,IAExC,EAAM,KAAQ,GAAY,EAAM,GAAY,EAC5C,EAAM,MAAoB,GAAX,IAAkB,EAAM,GAAY,EACnD,EAAM,MAAoB,EAAX,IAAiB,EAAiB,GAAX,EAG1C,OAAO,EE7BaC,CAAOjC,GACvB,OAAOkC,EAAUF,EAAS7B,GAG1B,MAAO,CAAEgC,QAAQ,EAAMnC,SAGzBkC,EAAY,SAAClC,EAAMG,GACrB,MACS,SADDA,GAEOH,aAAgBiB,YAAc,IAAIJ,KAAK,CAACb,IAGxCA,GAGJE,EA7CM,SAACkC,EAAejC,GACjC,GAA6B,kBAAlBiC,EACP,MAAO,CACH3C,KAAM,UACNO,KAAMkC,EAAUE,EAAejC,IAGvC,IAAMV,EAAO2C,EAAcC,OAAO,GAClC,MAAa,MAAT5C,EACO,CACHA,KAAM,UACNO,KAAM+B,EAAmBK,EAAcE,UAAU,GAAInC,IAG1CK,EAAqBf,GAIjC2C,EAAcpE,OAAS,EACxB,CACEyB,KAAMe,EAAqBf,GAC3BO,KAAMoC,EAAcE,UAAU,IAEhC,CACE7C,KAAMe,EAAqBf,IARxBkB,GCjBT4B,EAAYC,OAAOC,aAAa,IAChCC,EAAgB,SAAC5C,EAASqB,GAE5B,IAAMnD,EAAS8B,EAAQ9B,OACjB2E,EAAiB,IAAIpE,MAAMP,GAC7B4E,EAAQ,EACZ9C,EAAQY,SAAQ,SAACT,EAAQ9B,GAErBwD,EAAa1B,GAAQ,GAAO,SAAAmC,GACxBO,EAAexE,GAAKiE,IACdQ,IAAU5E,GACZmD,EAASwB,EAAeE,KAAKN,WAKvCO,EAAgB,SAACC,EAAgB5C,GAGnC,IAFA,IAAMwC,EAAiBI,EAAetB,MAAMc,GACtCzC,EAAU,GACP3B,EAAI,EAAGA,EAAIwE,EAAe3E,OAAQG,IAAK,CAC5C,IAAM6E,EAAgB9C,EAAayC,EAAexE,GAAIgC,GAEtD,GADAL,EAAQtC,KAAKwF,GACc,UAAvBA,EAAcvD,KACd,MAGR,OAAOK,GAEEmD,EAAW,G,kBCtBxBhG,EAAQiG,OAAS,SAAUtH,GACzB,IAAIuH,EAAM,GAEV,IAAK,IAAIhF,KAAKvC,EACRA,EAAIK,eAAekC,KACjBgF,EAAInF,SAAQmF,GAAO,KACvBA,GAAOC,mBAAmBjF,GAAK,IAAMiF,mBAAmBxH,EAAIuC,KAIhE,OAAOgF,GAUTlG,EAAQgF,OAAS,SAASoB,GAGxB,IAFA,IAAIC,EAAM,GACNC,EAAQF,EAAG5B,MAAM,KACZtD,EAAI,EAAGqF,EAAID,EAAMvF,OAAQG,EAAIqF,EAAGrF,IAAK,CAC5C,IAAIsF,EAAOF,EAAMpF,GAAGsD,MAAM,KAC1B6B,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,IAE7D,OAAOH,I,oBCpBT,SAASzG,EAAQjB,GACf,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIkB,KAAOD,EAAQE,UACtBnB,EAAIkB,GAAOD,EAAQE,UAAUD,GAE/B,OAAOlB,EAfSoB,CAAMpB,GAVtB+H,EAAO1G,QAAUJ,EAqCnBA,EAAQE,UAAUG,GAClBL,EAAQE,UAAUI,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,IACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,MAaTT,EAAQE,UAAUU,KAAO,SAASL,EAAOC,GACvC,SAASH,IACPI,KAAKI,IAAIN,EAAOF,GAChBG,EAAGM,MAAML,KAAMM,WAKjB,OAFAV,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,MAaTT,EAAQE,UAAUW,IAClBb,EAAQE,UAAUc,eAClBhB,EAAQE,UAAUe,mBAClBjB,EAAQE,UAAUgB,oBAAsB,SAASX,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,GAGjC,GAAKK,UAAUI,OAEjB,OADAV,KAAKC,WAAa,GACXD,KAIT,IAUIW,EAVAC,EAAYZ,KAAKC,WAAW,IAAMH,GACtC,IAAKc,EAAW,OAAOZ,KAGvB,GAAI,GAAKM,UAAUI,OAEjB,cADOV,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAIa,EAAI,EAAGA,EAAID,EAAUF,OAAQG,IAEpC,IADAF,EAAKC,EAAUC,MACJd,GAAMY,EAAGZ,KAAOA,EAAI,CAC7Ba,EAAUE,OAAOD,EAAG,GACpB,MAUJ,OAJyB,IAArBD,EAAUF,eACLV,KAAKC,WAAW,IAAMH,GAGxBE,MAWTT,EAAQE,UAAUsB,KAAO,SAASjB,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,GAKrC,IAHA,IAAIe,EAAO,IAAIC,MAAMX,UAAUI,OAAS,GACpCE,EAAYZ,KAAKC,WAAW,IAAMH,GAE7Be,EAAI,EAAGA,EAAIP,UAAUI,OAAQG,IACpCG,EAAKH,EAAI,GAAKP,UAAUO,GAG1B,GAAID,EAEG,CAAIC,EAAI,EAAb,IAAK,IAAWK,GADhBN,EAAYA,EAAUO,MAAM,IACIT,OAAQG,EAAIK,IAAOL,EACjDD,EAAUC,GAAGR,MAAML,KAAMgB,GAI7B,OAAOhB,MAWTT,EAAQE,UAAU4B,UAAY,SAASvB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,GAC9BD,KAAKC,WAAW,IAAMH,IAAU,IAWzCP,EAAQE,UAAU6B,aAAe,SAASxB,GACxC,QAAUE,KAAKqB,UAAUvB,GAAOY,S,kBCtKlC,IAAI4F,EAAK,0OAELC,EAAQ,CACR,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAGzIF,EAAO1G,QAAU,SAAkBkG,GAC/B,IAAIW,EAAMX,EACNY,EAAIZ,EAAIa,QAAQ,KAChBC,EAAId,EAAIa,QAAQ,MAEV,GAAND,IAAiB,GAANE,IACXd,EAAMA,EAAIb,UAAU,EAAGyB,GAAKZ,EAAIb,UAAUyB,EAAGE,GAAGC,QAAQ,KAAM,KAAOf,EAAIb,UAAU2B,EAAGd,EAAInF,SAO9F,IAJA,IAAImG,EAAIP,EAAGQ,KAAKjB,GAAO,IACnBkB,EAAM,GACNlG,EAAI,GAEDA,KACHkG,EAAIR,EAAM1F,IAAMgG,EAAEhG,IAAM,GAa5B,OAVU,GAAN4F,IAAiB,GAANE,IACXI,EAAIC,OAASR,EACbO,EAAIE,KAAOF,EAAIE,KAAKjC,UAAU,EAAG+B,EAAIE,KAAKvG,OAAS,GAAGkG,QAAQ,KAAM,KACpEG,EAAIG,UAAYH,EAAIG,UAAUN,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9EG,EAAII,SAAU,GAGlBJ,EAAIK,UAMR,SAAmB9I,EAAK+I,GACpB,IAAIC,EAAO,WACPC,EAAQF,EAAKT,QAAQU,EAAM,KAAKnD,MAAM,KAEjB,KAArBkD,EAAKG,OAAO,EAAG,IAA6B,IAAhBH,EAAK3G,QACjC6G,EAAMzG,OAAO,EAAG,GAEmB,KAAnCuG,EAAKG,OAAOH,EAAK3G,OAAS,EAAG,IAC7B6G,EAAMzG,OAAOyG,EAAM7G,OAAS,EAAG,GAGnC,OAAO6G,EAjBSH,CAAUL,EAAKA,EAAG,MAClCA,EAAIU,SAmBR,SAAkBV,EAAKnF,GACnB,IAAIc,EAAO,GAQX,OANAd,EAAMgF,QAAQ,6BAA6B,SAAUc,EAAIC,EAAIC,GACrDD,IACAjF,EAAKiF,GAAMC,MAIZlF,EA5BQ+E,CAASV,EAAKA,EAAG,OAEzBA,I,iCCtCX,IAKIc,EALAC,EAAW,mEAAmE3D,MAAM,IAEpF4D,EAAM,GACNC,EAAO,EACPnH,EAAI,EAUR,SAAS+E,EAAOqC,GACd,IAAIC,EAAU,GAEd,GACEA,EAAUJ,EAASG,EAjBV,IAiB0BC,EACnCD,EAAME,KAAKC,MAAMH,EAlBR,UAmBFA,EAAM,GAEf,OAAOC,EA0BT,SAASG,IACP,IAAIC,EAAM1C,GAAQ,IAAI2C,MAEtB,OAAID,IAAQT,GAAaG,EAAO,EAAGH,EAAOS,GACnCA,EAAK,IAAK1C,EAAOoC,KAM1B,KAAOnH,EAzDM,GAyDMA,IAAKkH,EAAID,EAASjH,IAAMA,EAK3CwH,EAAMzC,OAASA,EACfyC,EAAM1D,OAhCN,SAAgBkB,GACd,IAAInB,EAAU,EAEd,IAAK7D,EAAI,EAAGA,EAAIgF,EAAInF,OAAQG,IAC1B6D,EAnCS,GAmCCA,EAAmBqD,EAAIlC,EAAId,OAAOlE,IAG9C,OAAO6D,GA0BT2B,EAAO1G,QAAU0I,G,6ECjEjB,SAASG,EAA4BC,EAAUC,GAAc,IAAK1F,OAAOvD,UAAUd,eAAe8E,KAAKgF,EAAUC,GAAe,MAAM,IAAIC,UAAU,kDAAqD,OAAOF,EAEhN,IAAIG,EAAK,EAET,SAASC,EAA2BC,GAAQ,MAAO,aAAeF,IAAO,IAAME,EAE/E,IAeIC,EAfExJ,EAAUyJ,EAAQ,KAElBC,EAAMD,EAAQ,KAEdE,EAAeF,EAAQ,KAEvBG,EAAwBH,EAAQ,KAEhCI,EAAWJ,EAAQ,KAiBzB,IACMK,EAAqB,qBACrBC,EAAqB,qBACrBC,EAAc,CAHO,qBAGcF,EAAoBC,GAY7D,SAASE,EAASC,EAAQC,GACxB,OAAOH,EAAY7C,QAAQ+C,IAAWF,EAAY7C,QAAQgD,GAG5D,IAAIC,EAA2Bd,EAA2B,cAEtDe,EAA8Bf,EAA2B,iBAEzDgB,EAAwBhB,EAA2B,WAEnDiB,EAA6BjB,EAA2B,gBAExDkB,EAA4BlB,EAA2B,eAEvDmB,EAA2BnB,EAA2B,cAEpDoB,E,8BACJ,WAAYC,GAAU,uBACpB,eAEAlH,OAAOmH,eAAP,KAA4BH,EAAa,CACvCI,MAAOC,IAETrH,OAAOmH,eAAP,KAA4BJ,EAAc,CACxCK,MAAOE,IAETtH,OAAOmH,eAAP,KAA4BL,EAAe,CACzCM,MAAOG,IAETvH,OAAOmH,eAAP,KAA4BN,EAAU,CACpCO,MAAOI,IAETxH,OAAOmH,eAAP,KAA4BP,EAAgB,CAC1CQ,MAAOK,IAETzH,OAAOmH,eAAP,KAA4BR,EAAa,CACvCS,MAAOM,IAET,EAAKjB,OAASS,EAEd,EAAKpI,OAAS,KAEd,EAAK6I,aAAe,KAEpB,EAAKC,QAAS,EA3BM,E,iCA8BtB,WACEpC,EAA4BxI,KAAM4J,GAAgBA,KAElDpB,EAA4BxI,KAAM8J,GAAeA,O,oBAGnD,WACE,OAAOtB,EAA4BxI,KAAM+J,GAAcA,GAAc,CACnEc,MAAM,M,0BAWV,SAAaC,GACXtC,EAA4BxI,KAAMgK,GAAaA,GAAahK,KAAKyJ,OAAQqB,GAEzE9K,KAAKyJ,OAASqB,I,mBAchB,WACE9K,KAAK4K,QAAS,EAEV5K,KAAK8B,SACP9B,KAAK8B,OAAOiJ,aACZ/K,KAAK8B,OAAS,MAGhBkJ,cAAchL,KAAK2K,kB,GA3EWpL,GAgFlC,SAASmL,IACP1K,KAAKe,KAAK,YACVf,KAAKiL,QAGP,SAASR,IAAkB,WACnBS,EAAS9B,EAASpJ,KAAKyJ,OAAO0B,eAC9BrJ,GA1HoB,MAAbiH,IAAgCA,EAAWC,EAAQ,MACzDD,GAyH0BqC,QAAQF,EAAOG,OAAQ,CACtDC,WAAY,CAAC,aACbjE,KAAM6D,EAAOK,WAEfzJ,EAAOlC,GAAG,WAAW,WACnBkC,EAAOf,KAAK,mBAAoB,CAC9B6H,GAAI,EAAKa,OAAO+B,cAElB,EAAKzK,KAAK,cAEZe,EAAOlC,GAAG,kBAAkB,WAC1B4I,EAA4B,EAAMqB,GAAUA,GAAU,IAAIX,EAAa,2CAEvE,EAAKpH,OAAS,QAEhBA,EAAOlC,GAAG,iBAAiB,WACzBkC,EAAOiJ,aACP,EAAKjJ,OAAS,QAEhBA,EAAOlC,GAAG,qBAAqB,WAC7B4I,EAA4B,EAAMmB,GAAaA,QAEjD7H,EAAOlC,GAAG,4BAA4B,SAAA6L,GACpC,EAAK1K,KAAK,SAAU0K,GACpB,EAAKhC,OAAOiC,QAAQxL,KAAKuL,MAE3B3J,EAAOlC,GAAG,+BAA+B,WACvC,EAAKmB,KAAK,gBAEZe,EAAOlC,GAAG,uCAAuC,WAC/C,EAAKmB,KAAK,YAEVyH,EAA4B,EAAMuB,GAAcA,GAAc,CAC5Dc,MAAM,OAGV/I,EAAOlC,GAAG,4BAA4B,SAAC+L,EAAUzH,GAC/C,EAAKnD,KAAK,SAAU4K,EAAUzH,GAEzB,EAAKuF,OAAOmC,QAAQD,KACvB,EAAKlC,OAAOmC,QAAQD,GAAY,IAGlC,EAAKlC,OAAOmC,QAAQD,GAAUzL,KAAKgE,MAErCpC,EAAOlC,GAAG,kBAAkB,SAAAqC,GAC1BuG,EAA4B,EAAMqB,GAAUA,GAAU5H,GAGtDuG,EAA4B,EAAMuB,GAAcA,GAAc,CAC5Dc,MAAM,OAGV7K,KAAK8B,OAASA,EAGhB,SAAS0I,EAAUvI,GACjBjC,KAAKe,KAAK,QAASiC,OAAO6I,OAAO,IAAI3J,MAAMD,EAAI6J,SAAU7J,IAG3D,SAASsI,IAAiB,WACxBvK,KAAK2K,aAAeoB,aAAY,WACzB,EAAKjK,QAAW,EAAKA,OAAOkK,WAC/BxD,EAA4B,EAAMuB,GAAcA,OAEjD,KAGL,SAASO,EAAc2B,GAAO,WAC5B,QAEc,IAAVA,EAAmB,GAAKA,GAD1BpB,YADF,SAGA,OAAO1B,EAAsBnJ,KAAKyJ,OAAOyC,kBAAkBC,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAAQF,MAAK,SAAA1C,GAE5F,EAAKmB,SACT,EAAK7J,KAAK,SAAU0I,GAEhBoB,EACF,EAAKyB,aAAa7C,GAElB,EAAKA,OAASA,MARX,OAUE,SAAAxH,GAAG,OAAIuG,EAA4B,EAAMqB,GAAUA,GAAU5H,MAGxE,SAASoI,EAAaxC,EAAMiD,GAAM,WAC1ByB,EAAa1E,EAAK2E,GAClBC,EAAa3B,EAAK0B,GAExB,GAAI1B,EAAK4B,QAAU7E,EAAK6E,MACtB,OAAOlE,EAA4BxI,KAAM6J,GAAUA,GAAUiB,GAW/D,IAAM6B,EAAenD,EAASiD,EAAYpD,KAAwBG,EAAS+C,EAAYlD,GAEnFsD,GAKF3M,KAAKe,KAAK,aAIZiC,OAAOG,KAAK2H,EAAKY,SAASkB,QAAO,SAAAC,GAAM,OAAK5D,EAAIpB,EAAK6D,QAASmB,MAASzJ,SAAQ,SAAAyJ,GAC7E,EAAK9L,KAAK,SAAU+J,EAAKY,QAAQmB,OAG/BF,GACF3M,KAAKe,KAAK,YAIZiC,OAAOG,KAAK2H,EAAKc,SAASxI,SAAQ,SAAAuI,GAChC,IAAMmB,EAAchC,EAAKc,QAAQD,GAC3BoB,EAAclF,EAAK+D,QAAQD,GACjCmB,EAAYF,QAAO,SAAAI,GAAC,OAAKD,IAAgBA,EAAYE,MAAK,SAAAC,GAAC,OAAIA,EAAEtE,KAAOoE,EAAEpE,SAAKxF,SAAQ,SAAAc,GACrF,EAAKnD,KAAK,SAAU4K,EAAUzH,SAI9BsF,EAASiD,EAAYnD,KAAwBE,EAAS+C,EAAYjD,IACpEtJ,KAAKe,KAAK,YAMdsF,EAAO1G,QAAUsK,G,iCC7RjB5D,EAAO1G,QAAU,SAAkBwN,GACjC,IAAMC,EAAS,YAAYtG,KAAKqG,GAC5BtM,EAAI,EAEJuM,IACFvM,EAAIuM,EAAO,GAAG1M,OAAS,GAGzB,IAAM2M,EAAaF,EAAIzG,QAAQ,IAAK7F,GAEpC,OAAoB,IAAhBwM,EACK,CACLhC,OAAQ8B,EACR5B,SAAU,KAIP,CACLF,OAAQ8B,EAAIhM,MAAM,EAAGkM,GACrB9B,SAAU4B,EAAIhM,MAAMkM,M,kBCZxB,IACEhH,EAAO1G,QAAoC,qBAAnB2N,gBACtB,oBAAqB,IAAIA,eAC3B,MAAOrL,GAGPoE,EAAO1G,SAAU,I,4LCRb4N,EAAqC,qBAAdC,WACI,kBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cACTC,EAAb,kDAOI,WAAY1O,GAAM,kCACd,cAAMA,IACDqF,gBAAkBrF,EAAK2O,YAFd,EAPtB,sCAgBI,WACI,MAAO,cAjBf,oBAwBI,WACI,GAAK5N,KAAK6N,QAAV,CAIA,IAAM9G,EAAM/G,KAAK+G,MACX+G,EAAY9N,KAAKf,KAAK6O,UAEtB7O,EAAOsO,EACP,GACAlP,YAAK2B,KAAKf,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMe,KAAKf,KAAK8O,eACV9O,EAAK+O,QAAUhO,KAAKf,KAAK8O,cAE7B,IACI/N,KAAKiO,GACDC,MAA0BX,EACpBO,EACI,IAAIK,IAAUpH,EAAK+G,GACnB,IAAIK,IAAUpH,GAClB,IAAIoH,IAAUpH,EAAK+G,EAAW7O,GAE5C,MAAOgD,GACH,OAAOjC,KAAKe,KAAK,QAASkB,GAE9BjC,KAAKiO,GAAGpL,WAAa7C,KAAK8B,OAAOe,YAAcuL,IAC/CpO,KAAKqO,uBAlDb,+BAyDI,WAAoB,WAChBrO,KAAKiO,GAAGK,OAAS,WACT,EAAKrP,KAAKsP,WACV,EAAKN,GAAGO,QAAQC,QAEpB,EAAKC,UAET1O,KAAKiO,GAAGU,QAAU3O,KAAKuC,QAAQnD,KAAKY,MACpCA,KAAKiO,GAAGW,UAAY,SAAAC,GAAE,OAAI,EAAKC,OAAOD,EAAGnM,OACzC1C,KAAKiO,GAAGc,QAAU,SAAApI,GAAC,OAAI,EAAKqI,QAAQ,kBAAmBrI,MAlE/D,mBA0EI,SAAMnE,GAAS,WACXxC,KAAK2B,UAAW,EAGhB,IAJW,eAIFd,GACL,IAAM8B,EAASH,EAAQ3B,GACjBoO,EAAapO,IAAM2B,EAAQ9B,OAAS,EAC1C2D,YAAa1B,EAAQ,EAAK2B,gBAAgB,SAAA5B,GAEtC,IAAMzD,EAAO,GACRiP,MACGvL,EAAOuM,UACPjQ,EAAKkQ,SAAWxM,EAAOuM,QAAQC,UAE/B,EAAKlQ,KAAKmQ,oBACE,kBAAoB1M,EAAO2M,EAAOC,WAAW5M,GAAQA,EAAKhC,QAC5D,EAAKzB,KAAKmQ,kBAAkBG,YAClCtQ,EAAKkQ,UAAW,IAO5B,IACQjB,IAEA,EAAKD,GAAGuB,KAAK9M,GAGb,EAAKuL,GAAGuB,KAAK9M,EAAMzD,GAG3B,MAAO0H,IAEHsI,GAGAQ,aAAS,WACL,EAAK9N,UAAW,EAChB,EAAKZ,KAAK,WACX,EAAK5B,kBArCX0B,EAAI,EAAGA,EAAI2B,EAAQ9B,OAAQG,IAAK,EAAhCA,KA9EjB,qBA6HI,WAC2B,qBAAZb,KAAKiO,KACZjO,KAAKiO,GAAGhD,QACRjL,KAAKiO,GAAK,QAhItB,iBAwII,WACI,IAAIrM,EAAQ5B,KAAK4B,OAAS,GACpB8N,EAAS1P,KAAKf,KAAK0Q,OAAS,MAAQ,KACtCC,EAAO,GAEP5P,KAAKf,KAAK2Q,OACR,QAAUF,GAAqC,MAA3BG,OAAO7P,KAAKf,KAAK2Q,OAClC,OAASF,GAAqC,KAA3BG,OAAO7P,KAAKf,KAAK2Q,SACzCA,EAAO,IAAM5P,KAAKf,KAAK2Q,MAGvB5P,KAAKf,KAAK6Q,oBACVlO,EAAM5B,KAAKf,KAAK8Q,gBAAkB1H,OAGjCrI,KAAKsE,iBACN1C,EAAMoO,IAAM,GAEhB,IAAMC,EAAeC,IAAQtK,OAAOhE,GAEpC,OAAQ8N,EACJ,QAF8C,IAArC1P,KAAKf,KAAKkR,SAASzJ,QAAQ,KAG5B,IAAM1G,KAAKf,KAAKkR,SAAW,IAAMnQ,KAAKf,KAAKkR,UACnDP,EACA5P,KAAKf,KAAKoI,MACT4I,EAAavP,OAAS,IAAMuP,EAAe,MAjKxD,mBAyKI,WACI,QAAU9B,OACJ,iBAAkBA,KAAanO,KAAK8I,OAAS6E,EAAGlO,UAAUqJ,UA3KxE,GAAwBpH,O,2DCVxB,qJACa+N,EACqC,oBAAZW,SAAqD,oBAApBA,QAAQC,QAEhE,SAAA1P,GAAE,OAAIyP,QAAQC,UAAUlE,KAAKxL,IAG7B,SAACA,EAAIxB,GAAL,OAAsBA,EAAawB,EAAI,IAGzCwN,EAAY9O,IAAW8O,WAAa9O,IAAWiR,aAC/CpC,GAAwB,EACxBE,EAAoB,e,kBCOjC,SAASmC,EAAQtR,GACfA,EAAOA,GAAQ,GACfe,KAAKwQ,GAAKvR,EAAKwR,KAAO,IACtBzQ,KAAK0Q,IAAMzR,EAAKyR,KAAO,IACvB1Q,KAAK2Q,OAAS1R,EAAK0R,QAAU,EAC7B3Q,KAAK4Q,OAAS3R,EAAK2R,OAAS,GAAK3R,EAAK2R,QAAU,EAAI3R,EAAK2R,OAAS,EAClE5Q,KAAK6Q,SAAW,EApBlBxK,EAAO1G,QAAU4Q,EA8BjBA,EAAQ9Q,UAAUqR,SAAW,WAC3B,IAAIN,EAAKxQ,KAAKwQ,GAAKrI,KAAK4I,IAAI/Q,KAAK2Q,OAAQ3Q,KAAK6Q,YAC9C,GAAI7Q,KAAK4Q,OAAQ,CACf,IAAII,EAAQ7I,KAAK8I,SACbC,EAAY/I,KAAKC,MAAM4I,EAAOhR,KAAK4Q,OAASJ,GAChDA,EAAoC,IAAN,EAAxBrI,KAAKC,MAAa,GAAP4I,IAAwBR,EAAKU,EAAYV,EAAKU,EAEjE,OAAgC,EAAzB/I,KAAKsI,IAAID,EAAIxQ,KAAK0Q,MAS3BH,EAAQ9Q,UAAU0R,MAAQ,WACxBnR,KAAK6Q,SAAW,GASlBN,EAAQ9Q,UAAU2R,OAAS,SAASX,GAClCzQ,KAAKwQ,GAAKC,GASZF,EAAQ9Q,UAAU4R,OAAS,SAASX,GAClC1Q,KAAK0Q,IAAMA,GASbH,EAAQ9Q,UAAU6R,UAAY,SAASV,GACrC5Q,KAAK4Q,OAASA,I,qCChFZW,EAAUC,E,gBAEd,SAAShJ,EAA4BC,EAAUC,GAAc,IAAK1F,OAAOvD,UAAUd,eAAe8E,KAAKgF,EAAUC,GAAe,MAAM,IAAIC,UAAU,kDAAqD,OAAOF,EAEhN,IAAIG,EAAK,EAET,SAASC,EAA2BC,GAAQ,MAAO,aAAeF,IAAO,IAAME,EAE/E,IAAMK,EAAwBH,EAAQ,KAMtC3C,EAAO1G,SAAW4R,EAAwB1I,EAA2B,WAAY2I,EAA4B3I,EAA2B,eAAtH,WAChB,WAAY4I,GAAO,0BACH,IAAVA,IACFA,EAAQ,IAGVzO,OAAOmH,eAAenK,KAAMuR,EAAU,CACpC5P,UAAU,EACVyI,MAAO,KAETpH,OAAOmH,eAAenK,KAAMwR,EAAc,CACxC7P,UAAU,EACVyI,MAAO,SAACnI,EAAKyP,GACX,IAAiC,IAA7B,EAAKzS,KAAK0S,eACZ,MAAM1P,EAGR,IAAMhD,EAAO,CACXkD,KAAMuP,EAAOvP,MAcf,MAXIuP,EAAOxH,WACTjL,EAAKiL,SAAWwH,EAAOxH,SAASsB,YAChCvM,EAAK2S,SAAWF,EAAOxH,SAAS0H,UAG9BF,EAAOvE,MACTlO,EAAK4S,SAAWH,EAAOvE,KAGzB,EAAK2E,YAAY7P,EAAKhD,GAAtB,OAAkC,eAE5BgD,KAGVjC,KAAKf,KAAOwS,EAEY,MAApBzR,KAAKf,KAAK8S,SACZvJ,EAA4BxI,KAAMuR,GAAUA,GAAU,sBAAwBvR,KAAKf,KAAK8S,QAtC5E,wCAoDhB,SAAeC,GAAM,WAEjBN,EAIEM,EAJFN,OACAO,EAGED,EAHFC,OACAC,EAEEF,EAFFE,UACAC,EACEH,EADFG,cAEIzP,EAAO,IAAI0P,SACjB1P,EAAK2P,OAAO,SAA4B,kBAAXX,EAAsBA,EAASY,KAAKC,UAAUb,IAEvEQ,GACFxP,EAAK2P,OAAO,YAAaH,GAG3BlP,OAAOG,KAAK8O,GAAQ7O,SAAQ,SAAA5D,GAC1BkD,EAAK2P,OAAO7S,EAAKyS,EAAOzS,OAE1BkD,EAAK2P,OAAO,4BAA6BF,GACzC,IAAMhF,EAAM,IAAIqF,IAAI,cAAR,UAA0BxS,KAAKf,KAAKwT,UAAWC,KAC3D,OAAOvJ,EAAsBgE,EAAK,CAChCwF,OAAQ,OACR3E,QAASxF,EAA4BxI,KAAMuR,GAAUA,GACrDqB,KAAMlQ,IACLyJ,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAAQF,MAAK,SAAAjC,GACxC,GAAIA,EAASwC,MAAO,CAClB,IAAMA,EAAQ,IAAIxK,MAAMgI,EAASwC,OAQjC,MAPAA,EAAMmG,QAAU3I,EAAS4B,QACzBY,EAAMxC,SAAWA,EAEbA,EAASsB,cACXkB,EAAMmG,SAAN,wBAAkC3I,EAASsB,cAGvCkB,EAGR,OAAOxC,KAjBF,OAkBE,SAAAjI,GAAG,OAAIuG,EAA4B,EAAMgJ,GAAcA,GAAcvP,EAAK,CACjFkL,MACAhL,KAAM,mBA3FM,yBAsGhB,SAAY+H,EAAUuB,GAAM,WACpBqH,EAAOhN,mBAAmB2F,EAAKqH,MAC/B3F,EAAM,GAAH,OAAMjD,EAASgC,iBAAf,8BAAqD4G,GAC9D,OAAO3J,EAAsBgE,EAAK,CAChCwF,OAAQ,OACR3E,QAASxF,EAA4BxI,KAAMuR,GAAUA,KACpDpF,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAHtB,OAGoC,SAAApK,GAAG,OAAIuG,EAA4B,EAAMgJ,GAAcA,GAAcvP,EAAK,CACnHiI,WACAuB,OACA0B,MACAhL,KAAM,mBAhHM,qBA2HhB,SAAQ+H,EAAUuB,GAAM,WACtB,IAAKA,EAAKsH,UACR,OAAO3C,QAAQ4C,OAAO,IAAI9Q,MAAM,uCAGlC,IAAM4Q,EAAOhN,mBAAmB2F,EAAKqH,MAC/BG,EAAYnN,mBAAmB2F,EAAKsH,WACpCG,EAAWpN,mBAAmB2F,EAAK3C,MAEnC/C,EAAK,QAAH,OAAW+M,EAAX,qBAA4BI,EAA5B,sBADU,OACV,kBAAqED,GACvE9F,EAAM,GAAH,OAAMjD,EAASgC,iBAAf,qBAA4CnG,GACrD,OAAOoD,EAAsBgE,EAAK,CAChCwF,OAAQ,OACR3E,QAASxF,EAA4BxI,KAAMuR,GAAUA,KACpDpF,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAHtB,OAGoC,SAAApK,GAAG,OAAIuG,EAA4B,EAAMgJ,GAAcA,GAAcvP,EAAK,CACnHiI,WACAuB,OACA0B,MACAhL,KAAM,mBA7IM,4BAuJhB,SAAe+H,GAAU,WACjBiD,EAAMjD,EAASgC,iBACrB,OAAO/C,EAAsBgE,EAAK,CAChCwF,OAAQ,SACR3E,QAASxF,EAA4BxI,KAAMuR,GAAUA,KACpDpF,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAHtB,OAGoC,SAAApK,GAAG,OAAIuG,EAA4B,EAAMgJ,GAAcA,GAAcvP,EAAK,CACnHkL,MACAhL,KAAM,mBA9JM,+BAwKhB,SAAkBgL,GAAK,WACrB,OAAOhE,EAAsBgE,EAAK,CAChCa,QAASxF,EAA4BxI,KAAMuR,GAAUA,KACpDpF,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAFtB,OAEoC,SAAApK,GAAG,OAAIuG,EAA4B,EAAMgJ,GAAcA,GAAcvP,EAAK,CACnHkL,MACAhL,KAAM,sBA7KM,yBAiLhB,SAAYF,EAAKgK,GACf,WAIc,IAAVA,EAAmB,GAAKA,EAH1B4F,EADF,EACEA,SACAD,EAFF,EAEEA,SACA1H,EAHF,EAGEA,SAEI4B,EAAU7J,EAAI4Q,QAAJ,UAAiB5Q,EAAI6J,QAArB,aAAiC7J,EAAI4Q,QAArC,KAAkD5Q,EAAI6J,QACtE,OAAO3C,EAAsB,6CAA8C,CACzEwJ,OAAQ,OACRC,KAAMN,KAAKC,UAAU,CACnBV,WACAD,WACApG,YAAatB,EACbiJ,MAA4B,qBAAd3F,UAA4BA,UAAU4F,UAAY,GAChErB,OAAQ/R,KAAKf,KAAK8S,OAClBrF,MAAOZ,MAERK,MAAK,SAAAC,GAAQ,OAAIA,EAASC,cAlMf,O,+ECdlB,SAAS7D,EAA4BC,EAAUC,GAAc,IAAK1F,OAAOvD,UAAUd,eAAe8E,KAAKgF,EAAUC,GAAe,MAAM,IAAIC,UAAU,kDAAqD,OAAOF,EAEhN,IAAIG,EAAK,EAET,SAASC,EAA2BC,GAAQ,MAAO,aAAeF,IAAO,IAAME,EAK/E,SAASuK,EAAe3B,GACtB,GAAc,MAAVA,EACF,MAAM,IAAIxP,MAAM,iDAGlB,GAAsB,kBAAXwP,EACT,IAEEA,EAASY,KAAKgB,MAAM5B,GACpB,MAAOzP,GAEP,IAAMyK,EAAQ,IAAIxK,MAAM,gEAExB,MADAD,EAAIsR,MAAQtR,EACNyK,EAIV,IAAKgF,EAAO8B,OAAS9B,EAAO8B,KAAKhU,IAC/B,MAAM,IAAI0C,MAAM,kJASpB,SAASuR,EAAOC,GACd,IADoB,EACdC,EAAY3Q,OAAOC,OAAO,MADZ,IAMfyQ,GANe,IAGpB,2BAGW,eAFTE,EAES,EAFTA,QACA1E,EACS,EADTA,QAEMtG,EAAK0J,KAAKC,UAAUrD,GAEtBtG,KAAM+K,EACRA,EAAU/K,GAAIiL,aAAa3T,KAAK0T,GAEhCD,EAAU/K,GAAM,CACdsG,UACA2E,aAAc,CAACD,KAdD,8BAmBpB,OAAO5Q,OAAO8Q,OAAOH,GAAW5L,KAAI,SAAAiK,GAKlC,MAAO,CACL9C,QAFE8C,EAFF9C,QAKA0E,QAHE5B,EADF6B,aAIsBE,KAAK,OAUjC,IAAIC,EAAmCnL,EAA2B,sBAE5DoL,E,WACJ,WAAYC,EAAOjV,GAAM,UACvB+D,OAAOmH,eAAenK,KAAMgU,EAAqB,CAC/C5J,MAAO+J,IAETnU,KAAKkU,MAAQA,EACblU,KAAKf,KAAOA,E,0DAad,8FACQiQ,EAAUlP,KAAKf,OAEjBe,KAAKkU,MAAMxT,OAAS,GAH1B,yCAIW0P,QAAQgE,IAAIpU,KAAKkU,MAAMnM,KAAI,SAAA0D,GAAI,OAAIjD,EAA4B,EAAMwL,GAAqBA,GAAqBvI,OAAQU,KAAKsH,IAJvI,WAOMvE,EAAQmF,kBAPd,gCASkCnF,EAAQoF,mBAAmB,KAAMpF,GATnE,cAUImE,GADMkB,EATV,QAUmC7C,QAVnC,kBAWW,CAAC,CACNkC,QAAS5T,KAAKkU,MAAMnM,KAAI,SAAA0D,GAAI,OAAIA,EAAK7C,MACrCsG,QAASqF,KAbf,gCAmBS,IAnBT,iD,sEAwBaJ,E,kEAAf,WAAoC1I,GAApC,8EACQyD,EAAUlP,KAAKf,KADvB,SAEgCiQ,EAAQoF,mBAAmB7I,EAAMyD,GAFjE,cAEQqF,EAFR,OAIMtT,MAAMuT,QAAQD,EAAgBtC,QAChCsC,EAAgBtC,OAASjP,OAAOyR,YAAYF,EAAgBtC,OAAOlK,KAAI,SAAA2M,GAAS,MAAI,CAACA,EAAWjJ,EAAKkJ,KAAKD,QACvE,MAA1BH,EAAgBtC,SACzBsC,EAAgBtC,OAAS,IAG3BoB,EAAekB,EAAgB7C,QAVjC,kBAWS,CACLkC,QAAS,CAACnI,EAAK7C,IACfsG,QAASqF,IAbb,iD,sBAiBAlO,EAAO1G,QAAUsU,EACjB5N,EAAO1G,QAAQ0T,eAAiBA,G,qECvIhC,SAAS7K,EAA4BC,EAAUC,GAAc,IAAK1F,OAAOvD,UAAUd,eAAe8E,KAAKgF,EAAUC,GAAe,MAAM,IAAIC,UAAU,kDAAqD,OAAOF,EAEhN,IAAIG,EAAK,EAET,SAASC,EAA2BC,GAAQ,MAAO,aAAeF,IAAO,IAAME,EAE/E,IAAMvJ,EAAUyJ,EAAQ,KAWpB4L,EAA4B/L,EAA2B,eAEvDgM,EAAuBhM,EAA2B,UAElDiM,EAA0BjM,EAA2B,aAErDkM,EAAwBlM,EAA2B,WAEnDmM,EAAqBnM,EAA2B,QAEhDoM,EAAyBpM,EAA2B,YAEpDqM,EAAmCrM,EAA2B,sBAE9DsM,EAAiCtM,EAA2B,oBAE5DuM,EAAgCvM,EAA2B,mBAE3DwM,EAA8BxM,EAA2B,iBAEzDyM,EAAiCzM,EAA2B,oBAE5D0M,EAAgC1M,EAA2B,mBAE3D2M,EAA6B3M,EAA2B,gBAEtD4M,E,8BACJ,WAAYC,EAAMC,GAAa,uBAC7B,eACA3S,OAAOmH,eAAP,KAA4BqL,EAAe,CACzCpL,MAAOwL,IAET5S,OAAOmH,eAAP,KAA4BoL,EAAkB,CAC5CnL,MAAOyL,IAET7S,OAAOmH,eAAP,KAA4BmL,EAAmB,CAC7ClL,MAAO0L,IAET9S,OAAOmH,eAAP,KAA4B8K,EAAW,CACrC7K,MAAO2L,IAET/S,OAAOmH,eAAP,KAA4ByK,EAAc,CACxCjT,UAAU,EACVyI,WAAO,IAETpH,OAAOmH,eAAP,KAA4B0K,EAAS,CACnClT,UAAU,EACVyI,WAAO,IAETpH,OAAOmH,eAAP,KAA4B2K,EAAY,CACtCnT,UAAU,EACVyI,WAAO,IAETpH,OAAOmH,eAAP,KAA4B4K,EAAU,CACpCpT,UAAU,EACVyI,WAAO,IAETpH,OAAOmH,eAAP,KAA4B6K,EAAO,CACjCrT,UAAU,EACVyI,WAAO,IAETpH,OAAOmH,eAAP,KAA4B+K,EAAqB,CAC/CvT,UAAU,EACVyI,MAAO,SAAAF,GACA1B,EAA4B,EAAD,GAAOyM,GAAWA,GAAW/K,EAASsB,eAItEhD,EAA4B,EAAD,GAAOwM,GAAOA,GAAOgB,IAAhD,6DAA0G9L,EAASsB,cAEnH,EAAKzK,KAAK,oBAAqBmJ,EAASsB,aAExChD,EAA4B,EAAD,GAAO8M,GAAmBA,SAGzDtS,OAAOmH,eAAP,KAA4BgL,EAAmB,CAC7CxT,UAAU,EACVyI,MAAO,SAAAF,GACA1B,EAA4B,EAAD,GAAOyM,GAAWA,GAAW/K,EAASsB,cAItEhD,EAA4B,EAAD,GAAO8M,GAAmBA,QAGzDtS,OAAOmH,eAAP,KAA4BiL,EAAkB,CAC5CzT,UAAU,EACVyI,MAAO,SAACF,EAAUwC,GACXlE,EAA4B,EAAD,GAAOyM,GAAWA,GAAW/K,EAASsB,eAItEhD,EAA4B,EAAD,GAAOwM,GAAOA,GAAOgB,IAAhD,4DAAyG9L,EAASsB,cAElHhD,EAA4B,EAAD,GAAOwM,GAAOA,GAAOgB,IAAItJ,GAEpD,EAAK3L,KAAK,iBAAkBmJ,EAASsB,YAAakB,GAElDlE,EAA4B,EAAD,GAAO8M,GAAmBA,SAGzDtS,OAAOmH,eAAP,KAA4BkL,EAAgB,CAC1C1T,UAAU,EACVyI,MAAO,SAACF,EAAU+L,EAAQvJ,GACnBlE,EAA4B,EAAD,GAAOyM,GAAWA,GAAW/K,EAASsB,cAStEhD,EAA4B,EAAD,GAAO4M,GAAkBA,GAAkBlL,EAAUwC,MAGpFlE,EAA4B,EAAD,GAAOwM,GAAOA,GAASU,EAClDlN,EAA4B,EAAD,GAAOoM,GAAcA,GAAgBe,EAChEnN,EAA4B,EAAD,GAAOsM,GAAYA,GAAca,EAAYjV,OACxE,EAAKwV,QAAU,IAAI9F,SAAQ,SAACC,EAAS2C,GACnCxK,EAA4B,EAAD,GAAOuM,GAAUA,GAAY1E,EACxD7H,EAA4B,EAAD,GAAOqM,GAASA,GAAW7B,KAGxDxK,EAA4B,EAAD,GAAOgN,GAAeA,KAjGpB,E,UADQjW,GA2GzC,SAASwW,EAAWnN,GAClB,OAAsF,IAA/EJ,EAA4BxI,KAAM4U,GAAcA,GAAclO,QAAQkC,GAG/E,SAASkN,IACPtN,EAA4BxI,KAAM8U,GAAYA,IAAe,EAEK,IAA9DtM,EAA4BxI,KAAM8U,GAAYA,KAEhDtM,EAA4BxI,KAAMuV,GAAkBA,KAEpD/M,EAA4BxI,KAAM+U,GAAUA,MAIhD,SAASc,IACPrN,EAA4BxI,KAAMgV,GAAOA,GAAO5U,IAAI,uBAAwBoI,EAA4BxI,KAAMkV,GAAqBA,IAEnI1M,EAA4BxI,KAAMgV,GAAOA,GAAO5U,IAAI,8BAA+BoI,EAA4BxI,KAAMmV,GAAmBA,IAExI3M,EAA4BxI,KAAMgV,GAAOA,GAAO5U,IAAI,6BAA8BoI,EAA4BxI,KAAMoV,GAAkBA,IAEtI5M,EAA4BxI,KAAMgV,GAAOA,GAAO5U,IAAI,2BAA4BoI,EAA4BxI,KAAMqV,GAAgBA,IAGpI,SAASO,IACPpN,EAA4BxI,KAAMgV,GAAOA,GAAOpV,GAAG,uBAAwB4I,EAA4BxI,KAAMkV,GAAqBA,IAElI1M,EAA4BxI,KAAMgV,GAAOA,GAAOpV,GAAG,8BAA+B4I,EAA4BxI,KAAMmV,GAAmBA,IAEvI3M,EAA4BxI,KAAMgV,GAAOA,GAAOpV,GAAG,6BAA8B4I,EAA4BxI,KAAMoV,GAAkBA,IAErI5M,EAA4BxI,KAAMgV,GAAOA,GAAOpV,GAAG,2BAA4B4I,EAA4BxI,KAAMqV,GAAgBA,IAGnIhP,EAAO1G,QAAU8V,G,iCCzLjBpP,EAAO1G,QAAU,CACfwW,QAAS,CAEPC,iBAAkB,sBAElBC,uBAAwB,yCAGxBC,SAAU,iB,wiBCPC,WAAUrX,GACrB,IAAMsX,EAAUtX,EAAKsX,QAErB,IACI,GAAI,qBAAuBjJ,kBAAoBiJ,GAAWC,KACtD,OAAO,IAAIlJ,eAGnB,MAAO3G,IACP,IAAK4P,EACD,IACI,OAAO,IAAIlX,IAAW,CAAC,UAAUoX,OAAO,UAAUlR,KAAK,OAAM,qBAEjE,MAAOoB,M,wECZF+P,EAAb,kDACI,aAAc,kCACV,eAASpW,YACJqW,SAAU,EAFL,EADlB,sCAQI,WACI,MAAO,YATf,oBAiBI,WACI3W,KAAK4W,SAlBb,mBA0BI,SAAMC,GAAS,WACX7W,KAAK6B,WAAa,UAClB,IAAMiV,EAAQ,WACV,EAAKjV,WAAa,SAClBgV,KAEJ,GAAI7W,KAAK2W,UAAY3W,KAAK2B,SAAU,CAChC,IAAIoV,EAAQ,EACR/W,KAAK2W,UACLI,IACA/W,KAAKG,KAAK,gBAAgB,aACpB4W,GAASD,QAGd9W,KAAK2B,WACNoV,IACA/W,KAAKG,KAAK,SAAS,aACb4W,GAASD,aAKnBA,MAhDZ,kBAwDI,WACI9W,KAAK2W,SAAU,EACf3W,KAAKgX,SACLhX,KAAKe,KAAK,UA3DlB,oBAkEI,SAAO2B,GAAM,WAeT8C,YAAc9C,EAAM1C,KAAK8B,OAAOe,YAAYO,SAd3B,SAAAT,GAMb,GAJI,YAAc,EAAKd,YAA8B,SAAhBc,EAAOR,MACxC,EAAKuM,SAGL,UAAY/L,EAAOR,KAEnB,OADA,EAAKI,WACE,EAGX,EAAKO,SAASH,MAKd,WAAa3C,KAAK6B,aAElB7B,KAAK2W,SAAU,EACf3W,KAAKe,KAAK,gBACN,SAAWf,KAAK6B,YAChB7B,KAAK4W,UAxFrB,qBAmGI,WAAU,WACA3L,EAAQ,WACV,EAAKxI,MAAM,CAAC,CAAEN,KAAM,YAEpB,SAAWnC,KAAK6B,WAChBoJ,IAKAjL,KAAKG,KAAK,OAAQ8K,KA7G9B,mBAuHI,SAAMzI,GAAS,WACXxC,KAAK2B,UAAW,EAChByD,YAAc5C,GAAS,SAAAE,GACnB,EAAKuU,QAAQvU,GAAM,WACf,EAAKf,UAAW,EAChB,EAAKZ,KAAK,iBA5H1B,iBAqII,WACI,IAAIa,EAAQ5B,KAAK4B,OAAS,GACpB8N,EAAS1P,KAAKf,KAAK0Q,OAAS,QAAU,OACxCC,EAAO,IAEP,IAAU5P,KAAKf,KAAK6Q,oBACpBlO,EAAM5B,KAAKf,KAAK8Q,gBAAkB1H,OAEjCrI,KAAKsE,gBAAmB1C,EAAMsV,MAC/BtV,EAAMoO,IAAM,GAGZhQ,KAAKf,KAAK2Q,OACR,UAAYF,GAAqC,MAA3BG,OAAO7P,KAAKf,KAAK2Q,OACpC,SAAWF,GAAqC,KAA3BG,OAAO7P,KAAKf,KAAK2Q,SAC3CA,EAAO,IAAM5P,KAAKf,KAAK2Q,MAE3B,IAAMK,EAAeC,IAAQtK,OAAOhE,GAEpC,OAAQ8N,EACJ,QAF8C,IAArC1P,KAAKf,KAAKkR,SAASzJ,QAAQ,KAG5B,IAAM1G,KAAKf,KAAKkR,SAAW,IAAMnQ,KAAKf,KAAKkR,UACnDP,EACA5P,KAAKf,KAAKoI,MACT4I,EAAavP,OAAS,IAAMuP,EAAe,QA7JxD,GAA6BvO,KCK7B,SAASyV,KACT,IAAMC,EAIK,MAHK,IAAI9J,EAAe,CAC3BiJ,SAAS,IAEMc,aAEVC,EAAb,kDAOI,WAAYrY,GAAM,MAEd,GAFc,oBACd,cAAMA,GACkB,qBAAbsY,SAA0B,CACjC,IAAMC,EAAQ,WAAaD,SAAS5R,SAChCiK,EAAO2H,SAAS3H,KAEfA,IACDA,EAAO4H,EAAQ,MAAQ,MAE3B,EAAKC,GACoB,qBAAbF,UACJtY,EAAKkR,WAAaoH,SAASpH,UAC3BP,IAAS3Q,EAAK2Q,KACtB,EAAK8H,GAAKzY,EAAK0Q,SAAW6H,EAK9B,IAAM5J,EAAc3O,GAAQA,EAAK2O,YAlBnB,OAmBd,EAAKtJ,eAAiB8S,IAAYxJ,EAnBpB,EAPtB,2CAkCI,WAAmB,IAAX3O,EAAW,uDAAJ,GAEX,OADA+D,OAAO6I,OAAO5M,EAAM,CAAEwY,GAAIzX,KAAKyX,GAAIC,GAAI1X,KAAK0X,IAAM1X,KAAKf,MAChD,IAAI0Y,EAAQ3X,KAAK+G,MAAO9H,KApCvC,qBA6CI,SAAQyD,EAAM3C,GAAI,WACR6X,EAAM5X,KAAK6X,QAAQ,CACrBlF,OAAQ,OACRjQ,KAAMA,IAEVkV,EAAIhY,GAAG,UAAWG,GAClB6X,EAAIhY,GAAG,SAAS,SAAAqC,GACZ,EAAK+M,QAAQ,iBAAkB/M,QApD3C,oBA4DI,WAAS,WACC2V,EAAM5X,KAAK6X,UACjBD,EAAIhY,GAAG,OAAQI,KAAK8O,OAAO1P,KAAKY,OAChC4X,EAAIhY,GAAG,SAAS,SAAAqC,GACZ,EAAK+M,QAAQ,iBAAkB/M,MAEnCjC,KAAK8X,QAAUF,MAlEvB,GAAyBlB,GAqEZiB,EAAb,kDAOI,WAAY5Q,EAAK9H,GAAM,iCACnB,eACAD,YAAsB,eAAMC,GAC5B,EAAKA,KAAOA,EACZ,EAAK0T,OAAS1T,EAAK0T,QAAU,MAC7B,EAAK5L,IAAMA,EACX,EAAKgR,OAAQ,IAAU9Y,EAAK8Y,MAC5B,EAAKrV,UAAOsV,IAAc/Y,EAAKyD,KAAOzD,EAAKyD,KAAO,KAClD,EAAKO,SARc,EAP3B,0CAsBI,WAAS,WACChE,EAAOZ,YAAK2B,KAAKf,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKsX,UAAYvW,KAAKf,KAAKwY,GAC3BxY,EAAKgZ,UAAYjY,KAAKf,KAAKyY,GAC3B,IAAMQ,EAAOlY,KAAKkY,IAAM,IAAI5K,EAAerO,GAC3C,IACIiZ,EAAIC,KAAKnY,KAAK2S,OAAQ3S,KAAK+G,IAAK/G,KAAK+X,OACrC,IACI,GAAI/X,KAAKf,KAAK8O,aAEV,IAAK,IAAIlN,KADTqX,EAAIE,uBAAyBF,EAAIE,uBAAsB,GACzCpY,KAAKf,KAAK8O,aAChB/N,KAAKf,KAAK8O,aAAapP,eAAekC,IACtCqX,EAAIG,iBAAiBxX,EAAGb,KAAKf,KAAK8O,aAAalN,IAK/D,MAAO8F,IACP,GAAI,SAAW3G,KAAK2S,OAChB,IACIuF,EAAIG,iBAAiB,eAAgB,4BAEzC,MAAO1R,IAEX,IACIuR,EAAIG,iBAAiB,SAAU,OAEnC,MAAO1R,IAEH,oBAAqBuR,IACrBA,EAAII,gBAAkBtY,KAAKf,KAAKqZ,iBAEhCtY,KAAKf,KAAKsZ,iBACVL,EAAIM,QAAUxY,KAAKf,KAAKsZ,gBAE5BL,EAAIO,mBAAqB,WACjB,IAAMP,EAAIrW,aAEV,MAAQqW,EAAIzO,QAAU,OAASyO,EAAIzO,OACnC,EAAKiP,SAKL,EAAKvZ,cAAa,WACd,EAAK6P,QAA8B,kBAAfkJ,EAAIzO,OAAsByO,EAAIzO,OAAS,KAC5D,KAGXyO,EAAI1I,KAAKxP,KAAK0C,MAElB,MAAOiE,GAOH,YAHA3G,KAAKb,cAAa,WACd,EAAK6P,QAAQrI,KACd,GAGiB,qBAAbgS,WACP3Y,KAAK4Y,MAAQjB,EAAQkB,gBACrBlB,EAAQmB,SAAS9Y,KAAK4Y,OAAS5Y,QApF3C,uBA4FI,WACIA,KAAKe,KAAK,WACVf,KAAK+Y,YA9Fb,oBAqGI,SAAOrW,GACH1C,KAAKe,KAAK,OAAQ2B,GAClB1C,KAAKgZ,cAvGb,qBA8GI,SAAQ/W,GACJjC,KAAKe,KAAK,QAASkB,GACnBjC,KAAK+Y,SAAQ,KAhHrB,qBAuHI,SAAQE,GACJ,GAAI,qBAAuBjZ,KAAKkY,KAAO,OAASlY,KAAKkY,IAArD,CAIA,GADAlY,KAAKkY,IAAIO,mBAAqBtB,EAC1B8B,EACA,IACIjZ,KAAKkY,IAAIgB,QAEb,MAAOvS,IAEa,qBAAbgS,iBACAhB,EAAQmB,SAAS9Y,KAAK4Y,OAEjC5Y,KAAKkY,IAAM,QArInB,oBA4II,WACI,IAAMxV,EAAO1C,KAAKkY,IAAIiB,aACT,OAATzW,GACA1C,KAAK8O,OAAOpM,KA/IxB,mBAuJI,WACI1C,KAAK+Y,cAxJb,GAA6BxZ,WAkK7B,GAPAoY,EAAQkB,cAAgB,EACxBlB,EAAQmB,SAAW,GAMK,qBAAbH,SAEP,GAA2B,oBAAhBS,YAEPA,YAAY,WAAYC,QAEvB,GAAgC,oBAArBxZ,iBAAiC,CAC7C,IAAMyZ,EAAmB,eAAgBja,IAAa,WAAa,SACnEQ,iBAAiByZ,EAAkBD,GAAe,GAG1D,SAASA,IACL,IAAK,IAAIxY,KAAK8W,EAAQmB,SACdnB,EAAQmB,SAASna,eAAekC,IAChC8W,EAAQmB,SAASjY,GAAGqY,Q,ICnQnB5N,EAAa,CACtBiO,U,OAAW5L,EACXgJ,QAASW,GCEAkC,EAAb,kDAQI,WAAYzS,GAAgB,MAAX9H,EAAW,uDAAJ,GAAI,2BACxB,eACI8H,GAAO,kBAAoBA,IAC3B9H,EAAO8H,EACPA,EAAM,MAENA,GACAA,EAAM0S,IAAS1S,GACf9H,EAAKkR,SAAWpJ,EAAIE,KACpBhI,EAAK0Q,OAA0B,UAAjB5I,EAAIpB,UAAyC,QAAjBoB,EAAIpB,SAC9C1G,EAAK2Q,KAAO7I,EAAI6I,KACZ7I,EAAInF,QACJ3C,EAAK2C,MAAQmF,EAAInF,QAEhB3C,EAAKgI,OACVhI,EAAKkR,SAAWsJ,IAASxa,EAAKgI,MAAMA,MAExCjI,YAAsB,eAAMC,GAC5B,EAAK0Q,OACD,MAAQ1Q,EAAK0Q,OACP1Q,EAAK0Q,OACe,qBAAb4H,UAA4B,WAAaA,SAAS5R,SAC/D1G,EAAKkR,WAAalR,EAAK2Q,OAEvB3Q,EAAK2Q,KAAO,EAAKD,OAAS,MAAQ,MAEtC,EAAKQ,SACDlR,EAAKkR,WACoB,qBAAboH,SAA2BA,SAASpH,SAAW,aAC/D,EAAKP,KACD3Q,EAAK2Q,OACoB,qBAAb2H,UAA4BA,SAAS3H,KACvC2H,SAAS3H,KACT,EAAKD,OACD,MACA,MAClB,EAAKrE,WAAarM,EAAKqM,YAAc,CAAC,UAAW,aACjD,EAAKzJ,WAAa,GAClB,EAAK6X,YAAc,GACnB,EAAKC,cAAgB,EACrB,EAAK1a,KAAO+D,OAAO6I,OAAO,CACtBxE,KAAM,aACN8L,OAAO,EACPmF,iBAAiB,EACjBsB,SAAS,EACT7J,eAAgB,IAChB8J,iBAAiB,EACjBC,oBAAoB,EACpB1K,kBAAmB,CACfG,UAAW,MAEfwK,iBAAkB,GAClBC,qBAAqB,GACtB/a,GACH,EAAKA,KAAKoI,KAAO,EAAKpI,KAAKoI,KAAKT,QAAQ,MAAO,IAAM,IACtB,kBAApB,EAAK3H,KAAK2C,QACjB,EAAK3C,KAAK2C,MAAQsO,IAAQvL,OAAO,EAAK1F,KAAK2C,QAG/C,EAAKgH,GAAK,KACV,EAAKqR,SAAW,KAChB,EAAKC,aAAe,KACpB,EAAKC,YAAc,KAEnB,EAAKC,iBAAmB,KACQ,oBAArBva,mBACH,EAAKZ,KAAK+a,qBAIVna,iBAAiB,gBAAgB,WACzB,EAAKwa,YAEL,EAAKA,UAAU7Z,qBACf,EAAK6Z,UAAUpP,YAEpB,GAEe,cAAlB,EAAKkF,WACL,EAAKmK,qBAAuB,WACxB,EAAK/X,QAAQ,oBAEjB1C,iBAAiB,UAAW,EAAKya,sBAAsB,KAG/D,EAAKnC,OArFmB,EARhC,mDAsGI,SAAgBrP,GACZ,IAAMlH,EA0bd,SAAetD,GACX,IAAMic,EAAI,GACV,IAAK,IAAI1Z,KAAKvC,EACNA,EAAIK,eAAekC,KACnB0Z,EAAE1Z,GAAKvC,EAAIuC,IAGnB,OAAO0Z,EAjcWC,CAAMxa,KAAKf,KAAK2C,OAE9BA,EAAM6Y,IAAM9U,IAEZ/D,EAAMyY,UAAYvR,EAEd9I,KAAK4I,KACLhH,EAAMsV,IAAMlX,KAAK4I,IACrB,IAAM3J,EAAO+D,OAAO6I,OAAO,GAAI7L,KAAKf,KAAK8a,iBAAiBjR,GAAO9I,KAAKf,KAAM,CACxE2C,QACAE,OAAQ9B,KACRmQ,SAAUnQ,KAAKmQ,SACfR,OAAQ3P,KAAK2P,OACbC,KAAM5P,KAAK4P,OAEf,OAAO,IAAItE,EAAWxC,GAAM7J,KAtHpC,kBA6HI,WAAO,IACCob,EADD,OAEH,GAAIra,KAAKf,KAAK4a,iBACVL,EAAOkB,wBACmC,IAA1C1a,KAAKsL,WAAW5E,QAAQ,aACxB2T,EAAY,gBAEX,IAAI,IAAMra,KAAKsL,WAAW5K,OAK3B,YAHAV,KAAKb,cAAa,WACd,EAAKiC,aAAa,QAAS,6BAC5B,GAIHiZ,EAAYra,KAAKsL,WAAW,GAEhCtL,KAAK6B,WAAa,UAElB,IACIwY,EAAYra,KAAK2a,gBAAgBN,GAErC,MAAO1T,GAGH,OAFA3G,KAAKsL,WAAWsP,aAChB5a,KAAKmY,OAGTkC,EAAUlC,OACVnY,KAAK6a,aAAaR,KAzJ1B,0BAgKI,SAAaA,GAAW,WAChBra,KAAKqa,WACLra,KAAKqa,UAAU7Z,qBAGnBR,KAAKqa,UAAYA,EAEjBA,EACKza,GAAG,QAASI,KAAK8a,QAAQ1b,KAAKY,OAC9BJ,GAAG,SAAUI,KAAK8C,SAAS1D,KAAKY,OAChCJ,GAAG,QAASI,KAAKgP,QAAQ5P,KAAKY,OAC9BJ,GAAG,SAAS,WACb,EAAK2C,QAAQ,wBA5KzB,mBAqLI,SAAMuG,GAAM,WACJuR,EAAYra,KAAK2a,gBAAgB7R,GACjCiS,GAAS,EACbvB,EAAOkB,uBAAwB,EAC/B,IAAMM,EAAkB,WAChBD,IAEJV,EAAU7K,KAAK,CAAC,CAAErN,KAAM,OAAQO,KAAM,WACtC2X,EAAUla,KAAK,UAAU,SAAA4B,GACrB,IAAIgZ,EAEJ,GAAI,SAAWhZ,EAAII,MAAQ,UAAYJ,EAAIW,KAAM,CAG7C,GAFA,EAAKuY,WAAY,EACjB,EAAK7Z,aAAa,YAAaiZ,IAC1BA,EACD,OACJb,EAAOkB,sBAAwB,cAAgBL,EAAUvR,KACzD,EAAKuR,UAAUvD,OAAM,WACbiE,GAEA,WAAa,EAAKlZ,aAEtBkX,IACA,EAAK8B,aAAaR,GAClBA,EAAU7K,KAAK,CAAC,CAAErN,KAAM,aACxB,EAAKf,aAAa,UAAWiZ,GAC7BA,EAAY,KACZ,EAAKY,WAAY,EACjB,EAAKC,gBAGR,CACD,IAAMjZ,EAAM,IAAIC,MAAM,eAEtBD,EAAIoY,UAAYA,EAAUvR,KAC1B,EAAK1H,aAAa,eAAgBa,SAI9C,SAASkZ,IACDJ,IAGJA,GAAS,EACThC,IACAsB,EAAUpP,QACVoP,EAAY,MAGhB,IAAMtL,EAAU,SAAA9M,GACZ,IAAMyK,EAAQ,IAAIxK,MAAM,gBAAkBD,GAE1CyK,EAAM2N,UAAYA,EAAUvR,KAC5BqS,IACA,EAAK/Z,aAAa,eAAgBsL,IAEtC,SAAS0O,IACLrM,EAAQ,oBAGZ,SAASJ,IACLI,EAAQ,iBAGZ,SAASsM,EAAUC,GACXjB,GAAaiB,EAAGxS,OAASuR,EAAUvR,MACnCqS,IAIR,IAAMpC,EAAU,WACZsB,EAAU9Z,eAAe,OAAQya,GACjCX,EAAU9Z,eAAe,QAASwO,GAClCsL,EAAU9Z,eAAe,QAAS6a,GAClC,EAAKhb,IAAI,QAASuO,GAClB,EAAKvO,IAAI,YAAaib,IAE1BhB,EAAUla,KAAK,OAAQ6a,GACvBX,EAAUla,KAAK,QAAS4O,GACxBsL,EAAUla,KAAK,QAASib,GACxBpb,KAAKG,KAAK,QAASwO,GACnB3O,KAAKG,KAAK,YAAakb,GACvBhB,EAAUlC,SAvQlB,oBA8QI,WAOI,GANAnY,KAAK6B,WAAa,OAClB2X,EAAOkB,sBAAwB,cAAgB1a,KAAKqa,UAAUvR,KAC9D9I,KAAKoB,aAAa,QAClBpB,KAAKkb,QAGD,SAAWlb,KAAK6B,YAChB7B,KAAKf,KAAK2a,SACV5Z,KAAKqa,UAAUvD,MAGf,IAFA,IAAIjW,EAAI,EACFqF,EAAIlG,KAAKia,SAASvZ,OACjBG,EAAIqF,EAAGrF,IACVb,KAAKub,MAAMvb,KAAKia,SAASpZ,MA3RzC,sBAoSI,SAAS8B,GACL,GAAI,YAAc3C,KAAK6B,YACnB,SAAW7B,KAAK6B,YAChB,YAAc7B,KAAK6B,WAInB,OAHA7B,KAAKoB,aAAa,SAAUuB,GAE5B3C,KAAKoB,aAAa,aACVuB,EAAOR,MACX,IAAK,OACDnC,KAAKwb,YAAYlJ,KAAKgB,MAAM3Q,EAAOD,OACnC,MACJ,IAAK,OACD1C,KAAKyb,mBACLzb,KAAK0b,WAAW,QAChB1b,KAAKoB,aAAa,QAClBpB,KAAKoB,aAAa,QAClB,MACJ,IAAK,QACD,IAAMa,EAAM,IAAIC,MAAM,gBAEtBD,EAAI0Z,KAAOhZ,EAAOD,KAClB1C,KAAKgP,QAAQ/M,GACb,MACJ,IAAK,UACDjC,KAAKoB,aAAa,OAAQuB,EAAOD,MACjC1C,KAAKoB,aAAa,UAAWuB,EAAOD,SA7TxD,yBA0UI,SAAYA,GACR1C,KAAKoB,aAAa,YAAasB,GAC/B1C,KAAK4I,GAAKlG,EAAKwU,IACflX,KAAKqa,UAAUzY,MAAMsV,IAAMxU,EAAKwU,IAChClX,KAAKia,SAAWja,KAAK4b,eAAelZ,EAAKuX,UACzCja,KAAKka,aAAexX,EAAKwX,aACzBla,KAAKma,YAAczX,EAAKyX,YACxBna,KAAK0O,SAED,WAAa1O,KAAK6B,YAEtB7B,KAAKyb,qBArVb,8BA4VI,WAAmB,WACfzb,KAAKV,eAAeU,KAAKoa,kBACzBpa,KAAKoa,iBAAmBpa,KAAKb,cAAa,WACtC,EAAKoD,QAAQ,kBACdvC,KAAKka,aAAela,KAAKma,aACxBna,KAAKf,KAAKsP,WACVvO,KAAKoa,iBAAiB3L,UAlWlC,qBA0WI,WACIzO,KAAK0Z,YAAY5Y,OAAO,EAAGd,KAAK2Z,eAIhC3Z,KAAK2Z,cAAgB,EACjB,IAAM3Z,KAAK0Z,YAAYhZ,OACvBV,KAAKoB,aAAa,SAGlBpB,KAAKkb,UApXjB,mBA4XI,WACQ,WAAalb,KAAK6B,YAClB7B,KAAKqa,UAAU1Y,WACd3B,KAAKib,WACNjb,KAAK0Z,YAAYhZ,SACjBV,KAAKqa,UAAU7K,KAAKxP,KAAK0Z,aAGzB1Z,KAAK2Z,cAAgB3Z,KAAK0Z,YAAYhZ,OACtCV,KAAKoB,aAAa,YArY9B,mBAiZI,SAAMW,EAAKmN,EAASnP,GAEhB,OADAC,KAAK0b,WAAW,UAAW3Z,EAAKmN,EAASnP,GAClCC,OAnZf,kBAqZI,SAAK+B,EAAKmN,EAASnP,GAEf,OADAC,KAAK0b,WAAW,UAAW3Z,EAAKmN,EAASnP,GAClCC,OAvZf,wBAkaI,SAAWmC,EAAMO,EAAMwM,EAASnP,GAS5B,GARI,oBAAsB2C,IACtB3C,EAAK2C,EACLA,OAAOsV,GAEP,oBAAsB9I,IACtBnP,EAAKmP,EACLA,EAAU,MAEV,YAAclP,KAAK6B,YAAc,WAAa7B,KAAK6B,WAAvD,EAGAqN,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,SACrC,IAAMxM,EAAS,CACXR,KAAMA,EACNO,KAAMA,EACNwM,QAASA,GAEblP,KAAKoB,aAAa,eAAgBuB,GAClC3C,KAAK0Z,YAAYxZ,KAAKyC,GAClB5C,GACAC,KAAKG,KAAK,QAASJ,GACvBC,KAAKkb,WAzbb,mBAgcI,WAAQ,WACEjQ,EAAQ,WACV,EAAK1I,QAAQ,gBACb,EAAK8X,UAAUpP,SAEb4Q,EAAkB,SAAlBA,IACF,EAAKzb,IAAI,UAAWyb,GACpB,EAAKzb,IAAI,eAAgByb,GACzB5Q,KAEE6Q,EAAiB,WAEnB,EAAK3b,KAAK,UAAW0b,GACrB,EAAK1b,KAAK,eAAgB0b,IAqB9B,MAnBI,YAAc7b,KAAK6B,YAAc,SAAW7B,KAAK6B,aACjD7B,KAAK6B,WAAa,UACd7B,KAAK0Z,YAAYhZ,OACjBV,KAAKG,KAAK,SAAS,WACX,EAAK8a,UACLa,IAGA7Q,OAIHjL,KAAKib,UACVa,IAGA7Q,KAGDjL,OAlef,qBAyeI,SAAQiC,GACJuX,EAAOkB,uBAAwB,EAC/B1a,KAAKoB,aAAa,QAASa,GAC3BjC,KAAKuC,QAAQ,kBAAmBN,KA5exC,qBAmfI,SAAQ8Z,EAAQ/Z,GACR,YAAchC,KAAK6B,YACnB,SAAW7B,KAAK6B,YAChB,YAAc7B,KAAK6B,aAEnB7B,KAAKV,eAAeU,KAAKoa,kBAEzBpa,KAAKqa,UAAU7Z,mBAAmB,SAElCR,KAAKqa,UAAUpP,QAEfjL,KAAKqa,UAAU7Z,qBACoB,oBAAxBC,qBACPA,oBAAoB,UAAWT,KAAKsa,sBAAsB,GAG9Dta,KAAK6B,WAAa,SAElB7B,KAAK4I,GAAK,KAEV5I,KAAKoB,aAAa,QAAS2a,EAAQ/Z,GAGnChC,KAAK0Z,YAAc,GACnB1Z,KAAK2Z,cAAgB,KA3gBjC,4BAqhBI,SAAeM,GAIX,IAHA,IAAM+B,EAAmB,GACrBnb,EAAI,EACFob,EAAIhC,EAASvZ,OACZG,EAAIob,EAAGpb,KACLb,KAAKsL,WAAW5E,QAAQuT,EAASpZ,KAClCmb,EAAiB9b,KAAK+Z,EAASpZ,IAEvC,OAAOmb,MA7hBf,GAA4Bzc,WAgiB5Bia,EAAO7T,SAAWA,ICpiBM6T,EAAO7T,SAAxB,I,yBCFDjC,EAA+C,oBAAhBC,YAM/BH,EAAWR,OAAOvD,UAAU+D,SAC5BF,EAAiC,oBAATC,MACT,qBAATA,MACoB,6BAAxBC,EAASC,KAAKF,MAChB2Y,EAAiC,oBAATC,MACT,qBAATA,MACoB,6BAAxB3Y,EAASC,KAAK0Y,MAMf,SAASC,EAAS9d,GACrB,OAASoF,IAA0BpF,aAAeqF,aAlBvC,SAACrF,GACZ,MAAqC,oBAAvBqF,YAAYY,OACpBZ,YAAYY,OAAOjG,GACnBA,EAAIkG,kBAAkBb,YAeqCY,CAAOjG,KACnEgF,GAAkBhF,aAAeiF,MACjC2Y,GAAkB5d,aAAe6d,KAEnC,SAASE,EAAU/d,EAAKge,GAC3B,IAAKhe,GAAsB,kBAARA,EACf,OAAO,EAEX,GAAI2C,MAAMuT,QAAQlW,GAAM,CACpB,IAAK,IAAIuC,EAAI,EAAGqF,EAAI5H,EAAIoC,OAAQG,EAAIqF,EAAGrF,IACnC,GAAIwb,EAAU/d,EAAIuC,IACd,OAAO,EAGf,OAAO,EAEX,GAAIub,EAAS9d,GACT,OAAO,EAEX,GAAIA,EAAIge,QACkB,oBAAfhe,EAAIge,QACU,IAArBhc,UAAUI,OACV,OAAO2b,EAAU/d,EAAIge,UAAU,GAEnC,IAAK,IAAM9c,KAAOlB,EACd,GAAI0E,OAAOvD,UAAUd,eAAe8E,KAAKnF,EAAKkB,IAAQ6c,EAAU/d,EAAIkB,IAChE,OAAO,EAGf,OAAO,ECxCJ,SAAS+c,EAAkB5Z,GAC9B,IAAM6Z,EAAU,GACVC,EAAa9Z,EAAOD,KACpBga,EAAO/Z,EAGb,OAFA+Z,EAAKha,KAAOia,EAAmBF,EAAYD,GAC3CE,EAAKE,YAAcJ,EAAQ9b,OACpB,CAAEiC,OAAQ+Z,EAAMF,QAASA,GAEpC,SAASG,EAAmBja,EAAM8Z,GAC9B,IAAK9Z,EACD,OAAOA,EACX,GAAI0Z,EAAS1Z,GAAO,CAChB,IAAMma,EAAc,CAAEC,cAAc,EAAM7U,IAAKuU,EAAQ9b,QAEvD,OADA8b,EAAQtc,KAAKwC,GACNma,EAEN,GAAI5b,MAAMuT,QAAQ9R,GAAO,CAE1B,IADA,IAAMqa,EAAU,IAAI9b,MAAMyB,EAAKhC,QACtBG,EAAI,EAAGA,EAAI6B,EAAKhC,OAAQG,IAC7Bkc,EAAQlc,GAAK8b,EAAmBja,EAAK7B,GAAI2b,GAE7C,OAAOO,EAEN,GAAoB,kBAATra,KAAuBA,aAAgB6F,MAAO,CAC1D,IAAMwU,EAAU,GAChB,IAAK,IAAMvd,KAAOkD,EACVA,EAAK/D,eAAea,KACpBud,EAAQvd,GAAOmd,EAAmBja,EAAKlD,GAAMgd,IAGrD,OAAOO,EAEX,OAAOra,EAUJ,SAASsa,EAAkBra,EAAQ6Z,GAGtC,OAFA7Z,EAAOD,KAAOua,EAAmBta,EAAOD,KAAM8Z,GAC9C7Z,EAAOia,iBAAc5E,EACdrV,EAEX,SAASsa,EAAmBva,EAAM8Z,GAC9B,IAAK9Z,EACD,OAAOA,EACX,GAAIA,GAAQA,EAAKoa,aACb,OAAON,EAAQ9Z,EAAKuF,KAEnB,GAAIhH,MAAMuT,QAAQ9R,GACnB,IAAK,IAAI7B,EAAI,EAAGA,EAAI6B,EAAKhC,OAAQG,IAC7B6B,EAAK7B,GAAKoc,EAAmBva,EAAK7B,GAAI2b,QAGzC,GAAoB,kBAAT9Z,EACZ,IAAK,IAAMlD,KAAOkD,EACVA,EAAK/D,eAAea,KACpBkD,EAAKlD,GAAOyd,EAAmBva,EAAKlD,GAAMgd,IAItD,OAAO9Z,ECjEJ,IACIwa,EADEvX,EAAW,GAExB,SAAWuX,GACPA,EAAWA,EAAU,QAAc,GAAK,UACxCA,EAAWA,EAAU,WAAiB,GAAK,aAC3CA,EAAWA,EAAU,MAAY,GAAK,QACtCA,EAAWA,EAAU,IAAU,GAAK,MACpCA,EAAWA,EAAU,cAAoB,GAAK,gBAC9CA,EAAWA,EAAU,aAAmB,GAAK,eAC7CA,EAAWA,EAAU,WAAiB,GAAK,aAP/C,CAQGA,IAAeA,EAAa,KAIxB,IAAMC,EAAb,sFAOI,SAAO7e,GACH,OAAIA,EAAI6D,OAAS+a,EAAWE,OAAS9e,EAAI6D,OAAS+a,EAAWG,MACrDhB,EAAU/d,GAQX,CAAC0B,KAAKsd,eAAehf,KAPpBA,EAAI6D,KACA7D,EAAI6D,OAAS+a,EAAWE,MAClBF,EAAWK,aACXL,EAAWM,WACdxd,KAAKyd,eAAenf,MAd3C,4BAsBI,SAAeA,GAEX,IAAIuH,EAAM,GAAKvH,EAAI6D,KAmBnB,OAjBI7D,EAAI6D,OAAS+a,EAAWK,cACxBjf,EAAI6D,OAAS+a,EAAWM,aACxB3X,GAAOvH,EAAIse,YAAc,KAIzBte,EAAIof,KAAO,MAAQpf,EAAIof,MACvB7X,GAAOvH,EAAIof,IAAM,KAGjB,MAAQpf,EAAIsK,KACZ/C,GAAOvH,EAAIsK,IAGX,MAAQtK,EAAIoE,OACZmD,GAAOyM,KAAKC,UAAUjU,EAAIoE,OAEvBmD,IA3Cf,4BAkDI,SAAevH,GACX,IAAMqf,EAAiBpB,EAAkBje,GACnCoe,EAAO1c,KAAKsd,eAAeK,EAAehb,QAC1C6Z,EAAUmB,EAAenB,QAE/B,OADAA,EAAQoB,QAAQlB,GACTF,MAvDf,KA+DaqB,EAAb,kDACI,aAAc,wCADlB,uCASI,SAAIvf,GACA,IAAIqE,EACJ,GAAmB,kBAARrE,GACPqE,EAAS3C,KAAK8d,aAAaxf,IAChB6D,OAAS+a,EAAWK,cAC3B5a,EAAOR,OAAS+a,EAAWM,YAE3Bxd,KAAK+d,cAAgB,IAAIC,EAAoBrb,GAElB,IAAvBA,EAAOia,aACP,oEAAmB,UAAWja,IAKlC,oEAAmB,UAAWA,OAGjC,KAAIyZ,EAAS9d,KAAQA,EAAIuG,OAe1B,MAAM,IAAI3C,MAAM,iBAAmB5D,GAbnC,IAAK0B,KAAK+d,cACN,MAAM,IAAI7b,MAAM,qDAGhBS,EAAS3C,KAAK+d,cAAcE,eAAe3f,MAGvC0B,KAAK+d,cAAgB,KACrB,oEAAmB,UAAWpb,OArClD,0BAmDI,SAAakD,GACT,IAAIhF,EAAI,EAEFqM,EAAI,CACN/K,KAAM0N,OAAOhK,EAAId,OAAO,KAE5B,QAA2BiT,IAAvBkF,EAAWhQ,EAAE/K,MACb,MAAM,IAAID,MAAM,uBAAyBgL,EAAE/K,MAG/C,GAAI+K,EAAE/K,OAAS+a,EAAWK,cACtBrQ,EAAE/K,OAAS+a,EAAWM,WAAY,CAElC,IADA,IAAMU,EAAQrd,EAAI,EACS,MAApBgF,EAAId,SAASlE,IAAcA,GAAKgF,EAAInF,SAC3C,IAAMyd,EAAMtY,EAAIb,UAAUkZ,EAAOrd,GACjC,GAAIsd,GAAOtO,OAAOsO,IAA0B,MAAlBtY,EAAId,OAAOlE,GACjC,MAAM,IAAIqB,MAAM,uBAEpBgL,EAAE0P,YAAc/M,OAAOsO,GAG3B,GAAI,MAAQtY,EAAId,OAAOlE,EAAI,GAAI,CAE3B,IADA,IAAMqd,EAAQrd,EAAI,IACTA,GAAG,CAER,GAAI,MADMgF,EAAId,OAAOlE,GAEjB,MACJ,GAAIA,IAAMgF,EAAInF,OACV,MAERwM,EAAEwQ,IAAM7X,EAAIb,UAAUkZ,EAAOrd,QAG7BqM,EAAEwQ,IAAM,IAGZ,IAAM5S,EAAOjF,EAAId,OAAOlE,EAAI,GAC5B,GAAI,KAAOiK,GAAQ+E,OAAO/E,IAASA,EAAM,CAErC,IADA,IAAMoT,EAAQrd,EAAI,IACTA,GAAG,CACR,IAAMud,EAAIvY,EAAId,OAAOlE,GACrB,GAAI,MAAQud,GAAKvO,OAAOuO,IAAMA,EAAG,GAC3Bvd,EACF,MAEJ,GAAIA,IAAMgF,EAAInF,OACV,MAERwM,EAAEtE,GAAKiH,OAAOhK,EAAIb,UAAUkZ,EAAOrd,EAAI,IAG3C,GAAIgF,EAAId,SAASlE,GAAI,CACjB,IAAMwd,EAmClB,SAAkBxY,GACd,IACI,OAAOyM,KAAKgB,MAAMzN,GAEtB,MAAOc,GACH,OAAO,GAxCa2X,CAASzY,EAAI2B,OAAO3G,IACpC,IAAIgd,EAAQU,eAAerR,EAAE/K,KAAMkc,GAI/B,MAAM,IAAInc,MAAM,mBAHhBgL,EAAExK,KAAO2b,EAMjB,OAAOnR,IA/Gf,qBAoII,WACQlN,KAAK+d,eACL/d,KAAK+d,cAAcS,4BAtI/B,6BAiHI,SAAsBrc,EAAMkc,GACxB,OAAQlc,GACJ,KAAK+a,EAAWuB,QACZ,MAA0B,kBAAZJ,EAClB,KAAKnB,EAAWwB,WACZ,YAAmB1G,IAAZqG,EACX,KAAKnB,EAAWyB,cACZ,MAA0B,kBAAZN,GAA2C,kBAAZA,EACjD,KAAKnB,EAAWE,MAChB,KAAKF,EAAWK,aACZ,OAAOtc,MAAMuT,QAAQ6J,IAAYA,EAAQ3d,OAAS,EACtD,KAAKwc,EAAWG,IAChB,KAAKH,EAAWM,WACZ,OAAOvc,MAAMuT,QAAQ6J,QA9HrC,GAA6B9e,W,IA0JvBye,E,WACF,WAAYrb,GAAQ,oBAChB3C,KAAK2C,OAASA,EACd3C,KAAKwc,QAAU,GACfxc,KAAK4e,UAAYjc,E,kDAUrB,SAAekc,GAEX,GADA7e,KAAKwc,QAAQtc,KAAK2e,GACd7e,KAAKwc,QAAQ9b,SAAWV,KAAK4e,UAAUhC,YAAa,CAEpD,IAAMja,EAASqa,EAAkBhd,KAAK4e,UAAW5e,KAAKwc,SAEtD,OADAxc,KAAKwe,yBACE7b,EAEX,OAAO,O,oCAKX,WACI3C,KAAK4e,UAAY,KACjB5e,KAAKwc,QAAU,O,KC5QhB,SAAS5c,EAAGtB,EAAKuQ,EAAI9O,GAExB,OADAzB,EAAIsB,GAAGiP,EAAI9O,GACJ,WACHzB,EAAI8B,IAAIyO,EAAI9O,ICIpB,IAAM+e,EAAkB9b,OAAO+b,OAAO,CAClC3T,QAAS,EACT4T,cAAe,EACfjU,WAAY,EACZkU,cAAe,EAEfC,YAAa,EACb3e,eAAgB,IAEPiZ,EAAb,kDAMI,WAAY2F,EAAIzB,EAAKze,GAAM,kCACvB,gBACK+M,WAAY,EACjB,EAAKoT,cAAe,EACpB,EAAKC,cAAgB,GACrB,EAAKC,WAAa,GAClB,EAAKC,IAAM,EACX,EAAKC,KAAO,GACZ,EAAKC,MAAQ,GACb,EAAKN,GAAKA,EACV,EAAKzB,IAAMA,EACPze,GAAQA,EAAKuU,OACb,EAAKA,KAAOvU,EAAKuU,MAEjB,EAAK2L,GAAGO,cACR,EAAKvH,OAfc,EAN/B,6CA4BI,WACI,IAAInY,KAAK2f,KAAT,CAEA,IAAMR,EAAKnf,KAAKmf,GAChBnf,KAAK2f,KAAO,CACR/f,EAAGuf,EAAI,OAAQnf,KAAKsO,OAAOlP,KAAKY,OAChCJ,EAAGuf,EAAI,SAAUnf,KAAK4f,SAASxgB,KAAKY,OACpCJ,EAAGuf,EAAI,QAASnf,KAAK+O,QAAQ3P,KAAKY,OAClCJ,EAAGuf,EAAI,QAASnf,KAAK2O,QAAQvP,KAAKY,WApC9C,kBA0CI,WACI,QAASA,KAAK2f,OA3CtB,qBAkDI,WACI,OAAI3f,KAAKgM,YAEThM,KAAK6f,YACA7f,KAAKmf,GAAL,eACDnf,KAAKmf,GAAGhH,OACR,SAAWnY,KAAKmf,GAAGW,aACnB9f,KAAKsO,UALEtO,OApDnB,kBA+DI,WACI,OAAOA,KAAKoL,YAhEpB,kBAwEI,WAAc,2BAANpK,EAAM,yBAANA,EAAM,gBAGV,OAFAA,EAAK4c,QAAQ,WACb5d,KAAKe,KAAKV,MAAML,KAAMgB,GACfhB,OA3Ef,kBAoFI,SAAK6O,GACD,GAAIiQ,EAAgBngB,eAAekQ,GAC/B,MAAM,IAAI3M,MAAM,IAAM2M,EAAK,8BAFjB,2BAAN7N,EAAM,iCAANA,EAAM,kBAIdA,EAAK4c,QAAQ/O,GACb,IAAMlM,EAAS,CACXR,KAAM+a,EAAWE,MACjB1a,KAAM1B,EAEV2B,QAAiB,IAGjB,GAFAA,EAAOuM,QAAQC,UAAmC,IAAxBnP,KAAKyf,MAAMtQ,SAEjC,oBAAsBnO,EAAKA,EAAKN,OAAS,GAAI,CAC7C,IAAMkI,EAAK5I,KAAKuf,MACVQ,EAAM/e,EAAKgf,MACjBhgB,KAAKigB,qBAAqBrX,EAAImX,GAC9Bpd,EAAOiG,GAAKA,EAEhB,IAAMsX,EAAsBlgB,KAAKmf,GAAGgB,QAChCngB,KAAKmf,GAAGgB,OAAO9F,WACfra,KAAKmf,GAAGgB,OAAO9F,UAAU1Y,SACvBye,EAAgBpgB,KAAKyf,MAAL,YAAyBS,IAAwBlgB,KAAKgM,WAU5E,OATIoU,IAEKpgB,KAAKgM,UACVhM,KAAK2C,OAAOA,GAGZ3C,KAAKsf,WAAWpf,KAAKyC,IAEzB3C,KAAKyf,MAAQ,GACNzf,OAnHf,kCAwHI,SAAqB4I,EAAImX,GAAK,WACpBvH,EAAUxY,KAAKyf,MAAMjH,QAC3B,QAAgBR,IAAZQ,EAAJ,CAKA,IAAM6H,EAAQrgB,KAAKmf,GAAGhgB,cAAa,kBACxB,EAAKqgB,KAAK5W,GACjB,IAAK,IAAI/H,EAAI,EAAGA,EAAI,EAAKye,WAAW5e,OAAQG,IACpC,EAAKye,WAAWze,GAAG+H,KAAOA,GAC1B,EAAK0W,WAAWxe,OAAOD,EAAG,GAGlCkf,EAAItc,KAAK,EAAM,IAAIvB,MAAM,8BAC1BsW,GACHxY,KAAKwf,KAAK5W,GAAM,WAEZ,EAAKuW,GAAG7f,eAAe+gB,GAFE,2BAATrf,EAAS,yBAATA,EAAS,gBAGzB+e,EAAI1f,MAAM,EAAV,CAAiB,MAAjB,OAA0BW,UAhB1BhB,KAAKwf,KAAK5W,GAAMmX,IA3H5B,oBAoJI,SAAOpd,GACHA,EAAO+a,IAAM1d,KAAK0d,IAClB1d,KAAKmf,GAAGmB,QAAQ3d,KAtJxB,oBA6JI,WAAS,WACmB,mBAAb3C,KAAKwT,KACZxT,KAAKwT,MAAK,SAAC9Q,GACP,EAAKC,OAAO,CAAER,KAAM+a,EAAWuB,QAAS/b,YAI5C1C,KAAK2C,OAAO,CAAER,KAAM+a,EAAWuB,QAAS/b,KAAM1C,KAAKwT,SApK/D,qBA6KI,SAAQvR,GACCjC,KAAKgM,WACNhM,KAAKoB,aAAa,gBAAiBa,KA/K/C,qBAwLI,SAAQ8Z,GACJ/b,KAAKgM,WAAY,EACjBhM,KAAKof,cAAe,SACbpf,KAAK4I,GACZ5I,KAAKoB,aAAa,aAAc2a,KA5LxC,sBAoMI,SAASpZ,GAEL,GADsBA,EAAO+a,MAAQ1d,KAAK0d,IAG1C,OAAQ/a,EAAOR,MACX,KAAK+a,EAAWuB,QACZ,GAAI9b,EAAOD,MAAQC,EAAOD,KAAKwU,IAAK,CAChC,IAAMtO,EAAKjG,EAAOD,KAAKwU,IACvBlX,KAAKugB,UAAU3X,QAGf5I,KAAKoB,aAAa,gBAAiB,IAAIc,MAAM,8LAEjD,MACJ,KAAKgb,EAAWE,MAGhB,KAAKF,EAAWK,aACZvd,KAAKwgB,QAAQ7d,GACb,MACJ,KAAKua,EAAWG,IAGhB,KAAKH,EAAWM,WACZxd,KAAKygB,MAAM9d,GACX,MACJ,KAAKua,EAAWwB,WACZ1e,KAAK0gB,eACL,MACJ,KAAKxD,EAAWyB,cACZ3e,KAAK2gB,UACL,IAAM1e,EAAM,IAAIC,MAAMS,EAAOD,KAAKoJ,SAElC7J,EAAIS,KAAOC,EAAOD,KAAKA,KACvB1C,KAAKoB,aAAa,gBAAiBa,MAtOnD,qBAgPI,SAAQU,GACJ,IAAM3B,EAAO2B,EAAOD,MAAQ,GACxB,MAAQC,EAAOiG,IACf5H,EAAKd,KAAKF,KAAK+f,IAAIpd,EAAOiG,KAE1B5I,KAAKgM,UACLhM,KAAK4gB,UAAU5f,GAGfhB,KAAKqf,cAAcnf,KAAK8C,OAAO+b,OAAO/d,MAzPlD,uBA4PI,SAAUA,GACN,GAAIhB,KAAK6gB,eAAiB7gB,KAAK6gB,cAAcngB,OAAQ,CACjD,IADiD,EAC3CW,EAAYrB,KAAK6gB,cAAc1f,QADY,cAE1BE,GAF0B,IAEjD,2BAAkC,SACrBhB,MAAML,KAAMgB,IAHwB,+BAMrD,kDAAWX,MAAML,KAAMgB,KAnQ/B,iBA0QI,SAAI4H,GACA,IAAMrH,EAAOvB,KACT8gB,GAAO,EACX,OAAO,WAEH,IAAIA,EAAJ,CAEAA,GAAO,EAJe,2BAAN9f,EAAM,yBAANA,EAAM,gBAKtBO,EAAKoB,OAAO,CACRR,KAAM+a,EAAWG,IACjBzU,GAAIA,EACJlG,KAAM1B,QArRtB,mBA+RI,SAAM2B,GACF,IAAMod,EAAM/f,KAAKwf,KAAK7c,EAAOiG,IACzB,oBAAsBmX,IACtBA,EAAI1f,MAAML,KAAM2C,EAAOD,aAChB1C,KAAKwf,KAAK7c,EAAOiG,OAnSpC,uBA6SI,SAAUA,GACN5I,KAAK4I,GAAKA,EACV5I,KAAKgM,WAAY,EACjBhM,KAAKof,cAAe,EACpBpf,KAAK+gB,eACL/gB,KAAKoB,aAAa,aAlT1B,0BAyTI,WAAe,WACXpB,KAAKqf,cAAcjc,SAAQ,SAACpC,GAAD,OAAU,EAAK4f,UAAU5f,MACpDhB,KAAKqf,cAAgB,GACrBrf,KAAKsf,WAAWlc,SAAQ,SAACT,GAAD,OAAY,EAAKA,OAAOA,MAChD3C,KAAKsf,WAAa,KA7T1B,0BAoUI,WACItf,KAAK2gB,UACL3gB,KAAK2O,QAAQ,0BAtUrB,qBA+UI,WACQ3O,KAAK2f,OAEL3f,KAAK2f,KAAKvc,SAAQ,SAAC4d,GAAD,OAAgBA,OAClChhB,KAAK2f,UAAO3H,GAEhBhY,KAAKmf,GAAL,SAAoBnf,QArV5B,wBA6VI,WAUI,OATIA,KAAKgM,WACLhM,KAAK2C,OAAO,CAAER,KAAM+a,EAAWwB,aAGnC1e,KAAK2gB,UACD3gB,KAAKgM,WAELhM,KAAK2O,QAAQ,wBAEV3O,OAvWf,mBA+WI,WACI,OAAOA,KAAK+K,eAhXpB,sBAyXI,SAASoE,GAEL,OADAnP,KAAKyf,MAAMtQ,SAAWA,EACfnP,OA3Xf,oBAoYI,WAEI,OADAA,KAAKyf,MAAL,UAAsB,EACfzf,OAtYf,qBAuZI,SAAQwY,GAEJ,OADAxY,KAAKyf,MAAMjH,QAAUA,EACdxY,OAzZf,mBAkaI,SAAMihB,GAGF,OAFAjhB,KAAK6gB,cAAgB7gB,KAAK6gB,eAAiB,GAC3C7gB,KAAK6gB,cAAc3gB,KAAK+gB,GACjBjhB,OAraf,wBA8aI,SAAWihB,GAGP,OAFAjhB,KAAK6gB,cAAgB7gB,KAAK6gB,eAAiB,GAC3C7gB,KAAK6gB,cAAcjD,QAAQqD,GACpBjhB,OAjbf,oBAybI,SAAOihB,GACH,IAAKjhB,KAAK6gB,cACN,OAAO7gB,KAEX,GAAIihB,GAEA,IADA,IAAM5f,EAAYrB,KAAK6gB,cACdhgB,EAAI,EAAGA,EAAIQ,EAAUX,OAAQG,IAClC,GAAIogB,IAAa5f,EAAUR,GAEvB,OADAQ,EAAUP,OAAOD,EAAG,GACbb,UAKfA,KAAK6gB,cAAgB,GAEzB,OAAO7gB,OAzcf,0BAidI,WACI,OAAOA,KAAK6gB,eAAiB,OAldrC,GAA4BthB,W,mBCVf2hB,GAAb,kDACI,WAAYna,EAAK9H,GAAM,MACfkiB,EADe,qBAEnB,gBACKC,KAAO,GACZ,EAAKzB,KAAO,GACR5Y,GAAO,kBAAoBA,IAC3B9H,EAAO8H,EACPA,OAAMiR,IAEV/Y,EAAOA,GAAQ,IACVoI,KAAOpI,EAAKoI,MAAQ,aACzB,EAAKpI,KAAOA,EACZD,YAAsB,eAAMC,GAC5B,EAAKoiB,cAAmC,IAAtBpiB,EAAKoiB,cACvB,EAAKC,qBAAqBriB,EAAKqiB,sBAAwBC,KACvD,EAAKC,kBAAkBviB,EAAKuiB,mBAAqB,KACjD,EAAKC,qBAAqBxiB,EAAKwiB,sBAAwB,KACvD,EAAKC,oBAAwD,QAAnCP,EAAKliB,EAAKyiB,2BAAwC,IAAPP,EAAgBA,EAAK,IAC1F,EAAKQ,QAAU,IAAIpR,KAAQ,CACvBE,IAAK,EAAK+Q,oBACV9Q,IAAK,EAAK+Q,uBACV7Q,OAAQ,EAAK8Q,wBAEjB,EAAKlJ,QAAQ,MAAQvZ,EAAKuZ,QAAU,IAAQvZ,EAAKuZ,SACjD,EAAKsH,YAAc,SACnB,EAAK/Y,IAAMA,EACX,IAAM6a,EAAU3iB,EAAK4iB,QAAUA,EA1BZ,OA2BnB,EAAKC,QAAU,IAAIF,EAAQzE,QAC3B,EAAK4E,QAAU,IAAIH,EAAQ/D,QAC3B,EAAK6B,cAAoC,IAArBzgB,EAAK+iB,YACrB,EAAKtC,cACL,EAAKvH,OA/BU,EAD3B,gDAkCI,SAAa8J,GACT,OAAK3hB,UAAUI,QAEfV,KAAKkiB,gBAAkBD,EAChBjiB,MAFIA,KAAKkiB,gBApCxB,kCAwCI,SAAqBD,GACjB,YAAUjK,IAANiK,EACOjiB,KAAKmiB,uBAChBniB,KAAKmiB,sBAAwBF,EACtBjiB,QA5Cf,+BA8CI,SAAkBiiB,GACd,IAAId,EACJ,YAAUnJ,IAANiK,EACOjiB,KAAKoiB,oBAChBpiB,KAAKoiB,mBAAqBH,EACF,QAAvBd,EAAKnhB,KAAK2hB,eAA4B,IAAPR,GAAyBA,EAAG/P,OAAO6Q,GAC5DjiB,QApDf,iCAsDI,SAAoBiiB,GAChB,IAAId,EACJ,YAAUnJ,IAANiK,EACOjiB,KAAKqiB,sBAChBriB,KAAKqiB,qBAAuBJ,EACJ,QAAvBd,EAAKnhB,KAAK2hB,eAA4B,IAAPR,GAAyBA,EAAG7P,UAAU2Q,GAC/DjiB,QA5Df,kCA8DI,SAAqBiiB,GACjB,IAAId,EACJ,YAAUnJ,IAANiK,EACOjiB,KAAKsiB,uBAChBtiB,KAAKsiB,sBAAwBL,EACL,QAAvBd,EAAKnhB,KAAK2hB,eAA4B,IAAPR,GAAyBA,EAAG9P,OAAO4Q,GAC5DjiB,QApEf,qBAsEI,SAAQiiB,GACJ,OAAK3hB,UAAUI,QAEfV,KAAKuiB,SAAWN,EACTjiB,MAFIA,KAAKuiB,WAxExB,kCAkFI,YAESviB,KAAKwiB,eACNxiB,KAAKkiB,eACqB,IAA1BliB,KAAK2hB,QAAQ9Q,UAEb7Q,KAAKyiB,cAxFjB,kBAkGI,SAAK1iB,GAAI,WACL,IAAKC,KAAK8f,YAAYpZ,QAAQ,QAC1B,OAAO1G,KACXA,KAAKmgB,OAAS,IAAIuC,EAAO1iB,KAAK+G,IAAK/G,KAAKf,MACxC,IAAM6C,EAAS9B,KAAKmgB,OACd5e,EAAOvB,KACbA,KAAK8f,YAAc,UACnB9f,KAAK2iB,eAAgB,EAErB,IAAMC,EAAiBhjB,EAAGkC,EAAQ,QAAQ,WACtCP,EAAK+M,SACLvO,GAAMA,OAGJ8iB,EAAWjjB,EAAGkC,EAAQ,SAAS,SAACG,GAClCV,EAAKwX,UACLxX,EAAKue,YAAc,SACnB,EAAK1e,aAAa,QAASa,GACvBlC,EACAA,EAAGkC,GAIHV,EAAKuhB,0BAGb,IAAI,IAAU9iB,KAAKuiB,SAAU,CACzB,IAAM/J,EAAUxY,KAAKuiB,SACL,IAAZ/J,GACAoK,IAGJ,IAAMvC,EAAQrgB,KAAKb,cAAa,WAC5ByjB,IACA9gB,EAAOmJ,QAEPnJ,EAAOf,KAAK,QAAS,IAAImB,MAAM,cAChCsW,GACCxY,KAAKf,KAAKsP,WACV8R,EAAM5R,QAEVzO,KAAK2f,KAAKzf,MAAK,WACXnB,aAAashB,MAKrB,OAFArgB,KAAK2f,KAAKzf,KAAK0iB,GACf5iB,KAAK2f,KAAKzf,KAAK2iB,GACR7iB,OAjJf,qBAyJI,SAAQD,GACJ,OAAOC,KAAKmY,KAAKpY,KA1JzB,oBAiKI,WAEIC,KAAK+Y,UAEL/Y,KAAK8f,YAAc,OACnB9f,KAAKoB,aAAa,QAElB,IAAMU,EAAS9B,KAAKmgB,OACpBngB,KAAK2f,KAAKzf,KAAKN,EAAGkC,EAAQ,OAAQ9B,KAAK+iB,OAAO3jB,KAAKY,OAAQJ,EAAGkC,EAAQ,OAAQ9B,KAAKgjB,OAAO5jB,KAAKY,OAAQJ,EAAGkC,EAAQ,QAAS9B,KAAK+O,QAAQ3P,KAAKY,OAAQJ,EAAGkC,EAAQ,QAAS9B,KAAK2O,QAAQvP,KAAKY,OAAQJ,EAAGI,KAAK+hB,QAAS,UAAW/hB,KAAKijB,UAAU7jB,KAAKY,UAzK3P,oBAgLI,WACIA,KAAKoB,aAAa,UAjL1B,oBAwLI,SAAOsB,GACH1C,KAAK+hB,QAAQmB,IAAIxgB,KAzLzB,uBAgMI,SAAUC,GACN3C,KAAKoB,aAAa,SAAUuB,KAjMpC,qBAwMI,SAAQV,GACJjC,KAAKoB,aAAa,QAASa,KAzMnC,oBAiNI,SAAOyb,EAAKze,GACR,IAAI6C,EAAS9B,KAAKohB,KAAK1D,GAKvB,OAJK5b,IACDA,EAAS,IAAI0X,EAAOxZ,KAAM0d,EAAKze,GAC/Be,KAAKohB,KAAK1D,GAAO5b,GAEdA,IAvNf,sBA+NI,SAASA,GAEL,IADA,IACA,MADakB,OAAOG,KAAKnD,KAAKohB,MAC9B,eAAwB,CAAnB,IAAM1D,EAAG,KAEV,GADe1d,KAAKohB,KAAK1D,GACdyF,OACP,OAGRnjB,KAAKojB,WAvOb,qBA+OI,SAAQzgB,GAEJ,IADA,IAAM0C,EAAiBrF,KAAK8hB,QAAQlc,OAAOjD,GAClC9B,EAAI,EAAGA,EAAIwE,EAAe3E,OAAQG,IACvCb,KAAKmgB,OAAO1d,MAAM4C,EAAexE,GAAI8B,EAAOuM,WAlPxD,qBA0PI,WACIlP,KAAK2f,KAAKvc,SAAQ,SAAC4d,GAAD,OAAgBA,OAClChhB,KAAK2f,KAAKjf,OAAS,EACnBV,KAAK+hB,QAAQpB,YA7PrB,oBAoQI,WACI3gB,KAAK2iB,eAAgB,EACrB3iB,KAAKwiB,eAAgB,EACrBxiB,KAAK2O,QAAQ,gBACT3O,KAAKmgB,QACLngB,KAAKmgB,OAAOlV,UAzQxB,wBAgRI,WACI,OAAOjL,KAAKojB,WAjRpB,qBAwRI,SAAQrH,GACJ/b,KAAK+Y,UACL/Y,KAAK2hB,QAAQxQ,QACbnR,KAAK8f,YAAc,SACnB9f,KAAKoB,aAAa,QAAS2a,GACvB/b,KAAKkiB,gBAAkBliB,KAAK2iB,eAC5B3iB,KAAKyiB,cA9RjB,uBAsSI,WAAY,WACR,GAAIziB,KAAKwiB,eAAiBxiB,KAAK2iB,cAC3B,OAAO3iB,KACX,IAAMuB,EAAOvB,KACb,GAAIA,KAAK2hB,QAAQ9Q,UAAY7Q,KAAKmiB,sBAC9BniB,KAAK2hB,QAAQxQ,QACbnR,KAAKoB,aAAa,oBAClBpB,KAAKwiB,eAAgB,MAEpB,CACD,IAAMa,EAAQrjB,KAAK2hB,QAAQ7Q,WAC3B9Q,KAAKwiB,eAAgB,EACrB,IAAMnC,EAAQrgB,KAAKb,cAAa,WACxBoC,EAAKohB,gBAET,EAAKvhB,aAAa,oBAAqBG,EAAKogB,QAAQ9Q,UAEhDtP,EAAKohB,eAETphB,EAAK4W,MAAK,SAAClW,GACHA,GACAV,EAAKihB,eAAgB,EACrBjhB,EAAKkhB,YACL,EAAKrhB,aAAa,kBAAmBa,IAGrCV,EAAK+hB,oBAGdD,GACCrjB,KAAKf,KAAKsP,WACV8R,EAAM5R,QAEVzO,KAAK2f,KAAKzf,MAAK,WACXnB,aAAashB,SAxU7B,yBAiVI,WACI,IAAMkD,EAAUvjB,KAAK2hB,QAAQ9Q,SAC7B7Q,KAAKwiB,eAAgB,EACrBxiB,KAAK2hB,QAAQxQ,QACbnR,KAAKoB,aAAa,YAAamiB,OArVvC,GAA6BhkB,WCAvBikB,GAAQ,GACd,SAASC,GAAO1c,EAAK9H,GACE,kBAAR8H,IACP9H,EAAO8H,EACPA,OAAMiR,GAGV,IASImH,EATEjU,ECHH,SAAanE,GAAqB,IAAhBM,EAAgB,uDAAT,GAAIqc,EAAK,uCACjCplB,EAAMyI,EAEV2c,EAAMA,GAA4B,qBAAbnM,UAA4BA,SAC7C,MAAQxQ,IACRA,EAAM2c,EAAI/d,SAAW,KAAO+d,EAAIzc,MAEjB,kBAARF,IACH,MAAQA,EAAIhC,OAAO,KAEfgC,EADA,MAAQA,EAAIhC,OAAO,GACb2e,EAAI/d,SAAWoB,EAGf2c,EAAIzc,KAAOF,GAGpB,sBAAsB2C,KAAK3C,KAExBA,EADA,qBAAuB2c,EACjBA,EAAI/d,SAAW,KAAOoB,EAGtB,WAAaA,GAI3BzI,EAAMmb,IAAS1S,IAGdzI,EAAIsR,OACD,cAAclG,KAAKpL,EAAIqH,UACvBrH,EAAIsR,KAAO,KAEN,eAAelG,KAAKpL,EAAIqH,YAC7BrH,EAAIsR,KAAO,QAGnBtR,EAAI+I,KAAO/I,EAAI+I,MAAQ,IACvB,IACMJ,GADkC,IAA3B3I,EAAI2I,KAAKP,QAAQ,KACV,IAAMpI,EAAI2I,KAAO,IAAM3I,EAAI2I,KAS/C,OAPA3I,EAAIsK,GAAKtK,EAAIqH,SAAW,MAAQsB,EAAO,IAAM3I,EAAIsR,KAAOvI,EAExD/I,EAAIoU,KACApU,EAAIqH,SACA,MACAsB,GACCyc,GAAOA,EAAI9T,OAAStR,EAAIsR,KAAO,GAAK,IAAMtR,EAAIsR,MAChDtR,ED5CQ6O,CAAIpG,GADnB9H,EAAOA,GAAQ,IACcoI,MAAQ,cAC/BL,EAASkE,EAAOlE,OAChB4B,EAAKsC,EAAOtC,GACZvB,EAAO6D,EAAO7D,KACdsc,EAAgBH,GAAM5a,IAAOvB,KAAQmc,GAAM5a,GAAN,KAkB3C,OAjBsB3J,EAAK2kB,UACvB3kB,EAAK,0BACL,IAAUA,EAAK4kB,WACfF,EAGAxE,EAAK,IAAI+B,GAAQla,EAAQ/H,IAGpBukB,GAAM5a,KACP4a,GAAM5a,GAAM,IAAIsY,GAAQla,EAAQ/H,IAEpCkgB,EAAKqE,GAAM5a,IAEXsC,EAAOtJ,QAAU3C,EAAK2C,QACtB3C,EAAK2C,MAAQsJ,EAAOzD,UAEjB0X,EAAGrd,OAAOoJ,EAAO7D,KAAMpI,GAIlC+D,OAAO6I,OAAO4X,GAAQ,CAClBvC,WACA1H,SACA2F,GAAIsE,GACJrY,QAASqY,M,qCEzCTK,EAAQC,EAAmBC,EAAyBC,EAAiBC,EAAwBC,EAAwBC,EAAeC,EAA2BC,EAAWC,EAAuBC,EAAWC,EAAqBC,EAAiBC,EAAcC,EAAoBC,EAAaC,EAAkBC,EAAgBC,EAAcnb,EAAUob,EAAahZ,E,kGAE5W,SAASzD,EAA4BC,EAAUC,GAAc,IAAK1F,OAAOvD,UAAUd,eAAe8E,KAAKgF,EAAUC,GAAe,MAAM,IAAIC,UAAU,kDAAqD,OAAOF,EAEhN,IAAIG,EAAK,EAET,SAASC,EAA2BC,GAAQ,MAAO,aAAeF,IAAO,IAAME,EAE/E,IAAMoc,EAAclc,EAAQ,KAEtBmc,EAAanc,EAAQ,KAErBoc,EAAMpc,EAAQ,KAEdqc,EAAWrc,EAAQ,KAEnBsc,EAAStc,EAAQ,KAEjBiL,EAAkBjL,EAAQ,KAE1Buc,EAAkBvc,EAAQ,KAE1Bwc,EAASxc,EAAQ,KAEvB,SAASyc,EAA0Bha,EAAMyD,GACvC,MAAO,CACLwC,OAAQxC,EAAQwC,OAChBQ,UAAWhD,EAAQgD,UACnBD,OAAQ/C,EAAQ+C,QAIpB,IAAMyT,EAAqB,SAAAC,GAAW,OAAI,SAAA1jB,GACxC,IAAMyK,EAAQ,IAAIxK,MAAM,sCACxBwK,EAAM6G,MAAQtR,EACd2jB,QAAQlZ,MAAMA,EAAOiZ,KAOjBE,EAAe,wDAufrB,SAASC,IAAqB,WACtBpS,EAAO,CAAC,aAAD,OAAc1T,KAAK0V,KAAKqQ,YAAYC,SAApC,2BAAmEhmB,KAAK+lB,YAAYC,SAApF,mBAA2GZ,EAAIY,UAEtHC,EAAmB,SAACC,EAAYC,GACpC,IAAMC,EAAS,EAAK1Q,KAAK2Q,UAAUH,GAE/BE,GACF1S,EAAKxT,KAAL,UAAaimB,EAAb,YAA4BC,EAAOL,YAAYC,WAkBnD,OAdIhmB,KAAKf,KAAKqnB,uBACZL,EAAiB,YAAa,mBAC9BA,EAAiB,QAAS,eAC1BA,EAAiB,iBAAkB,0BAGrCA,EAAiB,UAAW,gBAC5BA,EAAiB,MAAO,YACxBA,EAAiB,WAAY,iBAC7BA,EAAiB,cAAe,qBAChCA,EAAiB,YAAa,kBAC9BA,EAAiB,WAAY,iBAC7BA,EAAiB,OAAQ,aACzBA,EAAiB,MAAO,YACjBvS,EAAKnO,KAAK,KAGnB,SAASghB,EAAyB9a,EAAMhC,GAEtC,IAAMkL,EAAO,EAAH,KAAQlJ,EAAKkJ,MAAb,IACR6R,aAAc/c,EAAO+c,aACrBtT,SAAUzH,EAAK3C,KACf2d,UAAW,SAGPC,EAAM,EAAH,KAAQjb,EAAKib,KAAb,IACP7U,SAAUpI,EAAOkd,QAEjBC,cAAc,IAOdC,EACEpb,EADFob,OAGF,GAAIpb,EAAKob,QAAUhB,EAAanc,KAAK+B,EAAKob,OAAOC,cAAe,CAC9D,IAAMC,EAAUtd,EAAOud,cAAcpgB,QAAQ,MAAO,IAC9CS,EAAOoE,EAAKob,OAAO1Z,IAAIvG,QAAQ6E,EAAKob,OAAOC,aAAc,IAAIlgB,QAAQ,MAAO,IAClFigB,EAAS,EAAH,KAAQpb,EAAKob,QAAb,IACJC,aAAcC,EACd5Z,IAAK,GAAF,OAAK4Z,EAAL,YAAgB1f,KAKvB,IAAM4f,EAAU,EAAH,KAAQxb,GAAR,IACXyb,YAAa,CACXhd,SAAUT,EAAO+B,eAYrB,OARKxL,KAAKf,KAAKqnB,sBACbtjB,OAAO6I,OAAOob,EAAS,CACrBtS,OACA+R,MACAG,WAIGI,EAGT,SAASE,EAAiBvT,EAASwT,EAAUlY,GAAS,WAEpD,OADAlP,KAAK0V,KAAKM,IAAI,iCACPhW,KAAK+R,OAAOsV,eAAe,CAChC3V,OAAQxC,EAAQwC,OAChBO,OAAQ/C,EAAQ+C,OAChBE,cAAeyB,EAAQlT,OACvBwR,UAAWhD,EAAQgD,YAClB/F,MAAK,SAAAmb,GACN,IAAMpd,EAAW,IAAImb,EAASiC,GAE5B7d,EACES,EADFT,OAEI8d,EAAa9d,EAAO+B,YAC1B,EAGI,EAAKgc,iBAFPC,EADF,EACEA,WACAC,EAFF,EAEEA,kBAEF,EAAKC,eAAe,CAElBF,WAAY,EAAF,KAAOA,GAAP,QACPF,EAAa9d,IAGhBie,kBAAmB,EAAF,KAAOA,GAAP,QACdN,EADc,YACCM,EAAkBN,IADnB,CAC8BG,QAGjD,IACErT,EACE,EAAKwB,KAAKkS,WADZ1T,MAEI2T,EAAe,GAWrB,OAVAjU,EAAQxQ,SAAQ,SAAAwF,GACdif,EAAajf,GAAMJ,EAA4B,EAAMwb,GAAyBA,GAAyB,EAAKtO,KAAKoS,QAAQlf,GAAKa,MAEhI,EAAKiM,KAAKqS,SAAS,CACjB7T,MAAO,EAAF,KAAOA,GACP2T,KAGP,EAAKnS,KAAK3U,KAAK,+BAAgC0I,EAAQmK,GACvD,EAAK8B,KAAKM,IAAV,yCAAgDuR,IACzCrd,KAvCF,OAwCE,SAAAjI,GACP,IAAMyK,EAAQ,IAAIxK,MAAJ,UAAa,EAAK8lB,KAAK,0BAAvB,aAAqD/lB,EAAI6J,UAGvE,MAFAY,EAAM6G,MAAQtR,EAERyK,KAIV,SAASub,GAAwBV,EAAY3T,EAASwT,GAAU,WAExDc,EAAU,IAAI3C,EAAgBvlB,KAAK0V,KAAM6R,GAC/CW,EAAQtoB,GAAG,qBAAqB,SAAAgJ,GAChB,EAAKuf,iBAAiBvf,GAC9BxF,SAAQ,SAAAqI,GACZ,EAAK2c,eAAe3c,EAAK7C,KAAM,EAC/B,EAAK8M,KAAK3U,KAAK,uBAAwB0K,SAG3Cyc,EAAQtoB,GAAG,kBAAkB,SAACgJ,EAAI8D,GAElB,EAAKyb,iBAAiBvf,GAC9BxF,SAAQ,SAAAqI,GAEZ,EAAKiK,KAAK3U,KAAK,eAAgB0K,EAAMiB,GACrC,EAAKgJ,KAAK3U,KAAK,uBAAwB0K,SAG3CzL,KAAKqoB,iBAAiBjB,GAAYc,EAGpC,SAASI,KACP,OAAOtoB,KAAKf,KAAKspB,iBAAmBvoB,KAAKf,KAAKupB,gBAGhD,SAASC,GAAeve,EAAU0J,GAAS,WACzC,OAAOxD,QAAQgE,IAAIR,EAAQ7L,KAAI,SAAAkO,GAC7B,IAAMxK,EAAO,EAAKiK,KAAKoS,QAAQ7R,GAC/B,OAAO,EAAKlE,OAAO2W,YAAYxe,EAAST,OAAQgC,OAIpD,SAASkd,GAAWC,GAGlB,IAFA,IAAM1U,EAAQlU,KAAK0V,KAAKmT,WAEfhoB,EAAI,EAAGA,EAAIqT,EAAMxT,OAAQG,IAAK,CACrC,IAAM4K,EAAOyI,EAAMrT,GAEnB,GAAI4K,EAAKsH,YAAc6V,EAAaE,eAClC,OAAOrd,EAIT,GAAIA,EAAKib,KAAOjb,EAAKib,IAAIzT,YAAc2V,EAAaE,eAClD,OAAOrd,EAGT,IAAKmd,EAAaG,aAEZtd,EAAK3C,OAAS8f,EAAa9f,MAAQ2C,EAAKqH,OAAS8V,EAAa9V,KAChE,OAAOrH,GAQf,SAASud,GAAuBC,EAAYL,GAC1C,IAAMM,EAAQlpB,KAAKwnB,iBAEb/b,EAAOjD,EAA4BxI,KAAMskB,GAAWA,GAAWsE,GAEhEnd,GAKLzL,KAAK2nB,eAAe,CAClBzT,MAAO,EAAF,KAAOgV,EAAMhV,OAAb,QACF0U,EAAahgB,GAAK,CACjBsB,SAAU+e,EACVrgB,GAAI6C,EAAK7C,GACTggB,oBAIN5oB,KAAK0V,KAAK3U,KAAK,qBAAsB6nB,EAAc5oB,KAAKmpB,YAAYF,KAblEjpB,KAAK0V,KAAKM,IAAI,mFAgBlB,SAASoT,GAAWH,EAAYtd,EAAUzH,GACxC,IAAMglB,EAAQlpB,KAAKwnB,iBACb/b,EAAOyd,EAAMhV,MAAMhQ,EAAOmlB,aAEhCnlB,EAAOolB,QAAU7d,EAAOA,EAAK7C,GAAK,KAElC,IAAM2gB,EAAQ,CACZrlB,SACAyH,WACA/C,GAAI1E,EAAO0E,GACXsB,SAAU+e,GAEZjpB,KAAK2nB,eAAe,CAClB/b,QAAS,GAAF,SAAMsd,EAAMtd,SAAZ,CAAqB2d,MAE9BvpB,KAAK0V,KAAK3U,KAAK,qBAAsB4K,EAAUzH,EAAQlE,KAAKmpB,YAAYF,IAG1E,SAASO,GAAqB/f,GAAQ,WAC9B0D,EAAM1D,EAAOyC,iBACnBlM,KAAK+R,OAAO0X,kBAAkBtc,GAAKhB,MAAK,SAAAud,GACtC,IAAMT,EAAaS,EAAYle,YACzB0d,EAAQ,EAAK1B,iBACnB,EAAKG,eAAe,CAClBF,WAAY,EAAF,KAAOyB,EAAMzB,YAAb,QACPwB,EAAaS,MAGlB,EAAKhU,KAAK3U,KAAK,uBAAwB2oB,M,SAI5BC,G,qEAAf,WAAgCzf,GAAhC,+EACQlK,KAAK+R,OAAO6X,eAAe1f,GADnC,OAGElK,KAAK0V,KAAK3U,KAAK,iCAAkCmJ,GAHnD,iD,sBAMA,SAAS2f,GAAkB3f,GAAU,WAI7BtB,EADFsB,EADFT,OAEgB+B,YA0ClB,OAzCAxL,KAAK8pB,iBAAiBlhB,GAAMsB,EAE5BA,EAAStK,GAAG,UAAU,SAAAmqB,GACpB,IACEtC,EACE,EAAKD,iBADPC,WAEF,EAAKE,eAAe,CAClBF,WAAY,EAAF,KAAOA,GAAP,QACP7e,EAAKmhB,SAIZ7f,EAAStK,GAAG,UAAU,SAAA6L,GACpBjD,EAA4B,EAAM+b,GAAuBA,GAAuB3b,EAAI6C,MAEtFvB,EAAStK,GAAG,SAAS,SAAA8M,GACnBA,EAAMxC,SAAWA,EAAST,OAE1B,EAAKiM,KAAK3U,KAAK,6BAA8BmJ,EAAST,OAAQiD,MAEhExC,EAAStK,GAAG,aAAa,WACvB,EAAK8V,KAAK3U,KAAK,iCAAkCmJ,EAAST,WAGxDzJ,KAAKf,KAAKspB,iBACZre,EAAStK,GAAG,UAAU,SAAC+L,EAAUzH,GAC/BsE,EAA4B,EAAMgc,GAAWA,GAAW5b,EAAI+C,EAAUzH,MAItElE,KAAKf,KAAKspB,gBACZre,EAAStK,GAAG,YAAY,WACtB4I,EAA4B,EAAMic,GAAqBA,GAAqBva,EAAST,WAE9EzJ,KAAKf,KAAKupB,iBACnBte,EAAStK,GAAG,YAAY,WACtB4I,EAA4B,EAAMic,GAAqBA,GAAqBva,EAAST,WAKrE,sBAAhBS,EAASsC,IAIbtC,EAASkB,UAHAlB,EAtxBX7D,EAAO1G,SAAoBokB,EAAiClb,EAA2B,oBAAqBmb,EAAuCnb,EAA2B,0BAA2Bob,EAA+Bpb,EAA2B,kBAAmBqb,EAAsCrb,EAA2B,yBAA0Bsb,EAAsCtb,EAA2B,yBAA0Bub,EAA6Bvb,EAA2B,gBAAiBwb,EAAyCxb,EAA2B,4BAA6Byb,EAAyBzb,EAA2B,YAAa0b,EAAqC1b,EAA2B,wBAAyB2b,EAAyB3b,EAA2B,YAAa4b,EAAmC5b,EAA2B,sBAAuB6b,EAA+B7b,EAA2B,kBAAmB8b,EAA4B9b,EAA2B,eAAgB+b,EAAkC/b,EAA2B,qBAAsBgc,EAA2Bhc,EAA2B,cAAeic,EAAgCjc,EAA2B,mBAAoBkc,EAA8Blc,EAA2B,iBAAkBmc,EAA4Bnc,EAA2B,eAAgBgB,EAAwBhB,EAA2B,WAAYoc,EAA2Bpc,EAA2B,cAAthDoD,EAAqiD6X,EAAM,8BAE3jD,WAAYpO,EAAMzW,GAAM,MAClB+qB,EADkB,UAGtB,cAAMtU,EAAMzW,GACZ+qB,EAAQ,EAAH,GACLhnB,OAAOmH,eAAP,KAA4B2a,EAAkB,CAC5C1a,MAAOyf,KAET7mB,OAAOmH,eAAP,KAA4Bua,EAAiB,CAC3Cta,MAAOuf,KAET3mB,OAAOmH,eAAP,KAA4Bsa,EAAqB,CAC/Cra,MAAOof,KAETxmB,OAAOmH,eAAP,KAA4Bqa,EAAW,CACrCpa,MAAOgf,KAETpmB,OAAOmH,eAAP,KAA4Boa,EAAuB,CACjDna,MAAO4e,KAEThmB,OAAOmH,eAAP,KAA4Bma,EAAW,CACrCla,MAAOue,KAET3lB,OAAOmH,eAAP,KAA4Bia,EAAe,CACzCha,MAAOqe,KAETzlB,OAAOmH,eAAP,KAA4Bga,EAAwB,CAClD/Z,MAAOke,KAETtlB,OAAOmH,eAAP,KAA4B+Z,EAAwB,CAClD9Z,MAAO6d,KAETjlB,OAAOmH,eAAP,KAA4B8Z,EAAiB,CAC3C7Z,MAAO+c,IAETnkB,OAAOmH,eAAP,KAA4B6Z,EAAyB,CACnD5Z,MAAOmc,IAETvjB,OAAOmH,eAAP,KAA4B4Z,EAAmB,CAC7C3Z,MAAO0b,IAET9iB,OAAOmH,eAAP,KAA4Bka,EAA2B,CACrD1iB,UAAU,EACVyI,MAAO,SAAA6f,GACL,IAAMxe,EAAO,EAAKiK,KAAKoS,QAAQmC,EAAQrhB,IAEvC,GAAK6C,GAASA,EAAKyb,aAAgBzb,EAAKyb,YAAYhd,SAApD,CAIA,IAGMA,EADF,EAAKsd,iBADPC,WAE0Bhc,EAAKyb,YAAYhd,UAC7C,EAAK6H,OAAOmY,QAAQhgB,EAAUuB,GAA9B,OAA0C,SAAAxJ,GACxC,EAAKyT,KAAKM,IAAI/T,GACd,EAAKyT,KAAK3U,KAAK,2BAA4BmJ,EAAUuB,EAAK7C,GAAI3G,UAIpEe,OAAOmH,eAAP,KAA4Bwa,EAAc,CACxChjB,UAAU,EACVyI,MAAO,WACL,IACEsd,EACE,EAAKF,iBADPE,kBAGIyC,EADcnnB,OAAO8Q,OAAO4T,GAAmB3T,KAAK,GACvBhM,KAAI,SAAAwf,GACrC,IAAMrd,EAAW,EAAKif,YAAY5B,GAClC,OAAO/e,EAA4B,EAAD,GAAOkc,GAAiBA,GAAiBxa,MAE7EkG,QAAQgE,IAAI+V,GAAZ,OAAkC,SAAAloB,GAChC,EAAKyT,KAAKM,IAAI/T,SAIpBe,OAAOmH,eAAP,KAA4Bya,EAAoB,CAC9CjjB,UAAU,EACVyI,MAAO,SAAAggB,GACL,MAGI,EAAK5C,iBAFPC,EADF,EACEA,WACAC,EAFF,EAEEA,kBAEF0C,EAAQ,EAAD,GACJ,EAAKxhB,GAAK,CACT6e,aACAC,0BAKR1kB,OAAOmH,eAAP,KAA4B0a,EAAa,CACvCljB,UAAU,EACVyI,MAAO,SAAAigB,GACL,IAAMC,EAAaD,GAAcA,EAAW,EAAKzhB,IAAMyhB,EAAW,EAAKzhB,IAAM,GACvE2hB,EAAqBD,EAAW7C,YAAc,GAC9CC,EAAoB4C,EAAW5C,mBAAqB,GAE1D,GAA8C,IAA1C1kB,OAAOG,KAAKukB,GAAmBhnB,OAAnC,CA8EA,EAAK8pB,SAAWpa,QAAQC,UAAUlE,MAAK,WAGrC,OA3EmB,SAAAsb,GAInB,IAHA,IAAMvT,EAAQ,GACRtI,EAAU,GAFiB,aAI5B,gBAAOhD,EAAP,KAAWa,EAAX,KACHA,EAAOiC,QAAQtI,SAAQ,SAAAwlB,GACrB,IAAMnd,EAAOjD,EAA4B,EAAD,GAAO8b,GAAWA,GAAWsE,GAErE1U,EAAM0U,EAAahgB,IAAM,CACvBA,GAAI6C,EAAK7C,GACTsB,SAAUtB,EACVggB,mBAGJ,IAAMM,EAAQ,EAAK1B,iBACnBxkB,OAAOG,KAAKsG,EAAOmC,SAASxI,SAAQ,SAAAuI,GAAY,UACzBlC,EAAOmC,QAAQD,IADU,IAC9C,2BAA+C,KAApCzH,EAAoC,QACvCuH,EAAOyd,EAAMhV,MAAMhQ,EAAOmlB,aAChCnlB,EAAOolB,QAAU7d,EAAOA,EAAK7C,GAAK,KAClCgD,EAAQ1L,KAAK,CACX0I,GAAI1E,EAAO0E,GACX1E,SACAyH,WACAzB,SAAUtB,KARgC,mCAXlD,MAA2B5F,OAAOynB,QAAQhD,GAA1C,eAAuD,IAyBvD,EAAKE,eAAe,CAClBF,aACAvT,QACAtI,UACA8b,sBAwCFgD,CAAaH,GAnCW,WAExB,MAGI,EAAK/C,iBAFPC,EADF,EACEA,WACAC,EAFF,EAEEA,kBAGF1kB,OAAOG,KAAKukB,GAAmBtkB,SAAQ,SAAAgkB,GACrC,IAAMzR,EAAc+R,EAAkBN,GAChCuD,EAAkBhV,EAAYiV,SAAQ,SAAArD,GAC1C,OAAO,EAAKY,iBAAiBZ,GAAYxf,KAAI,SAAA0D,GAAI,OAAIA,EAAK7C,SAG5DJ,EAA4B,EAAD,GAAO0b,GAAwBA,GAAwBvO,EAAagV,EAAiBvD,MAE3FpkB,OAAOG,KAAKskB,GACpBrkB,SAAQ,SAAAwF,GACrB,IAAMsB,EAAW,IAAImb,EAASoC,EAAW7e,IAEzCJ,EAA4B,EAAD,GAAOsc,GAAkBA,GAAkB5a,MAiBxE2gB,GAZuB,WACvB,IACEpD,EACE,EAAKD,iBADPC,WAEF,OAAOrX,QAAQgE,IAAIpR,OAAOG,KAAKskB,GAAY1f,KAAI,SAAAa,GAC7C,OAAO,EAAKkhB,iBAAiBlhB,GAAIkiB,aAQ5BC,MAET,EAAKP,SAASre,MAAK,WACjB,EAAKqe,SAAW,YAItBxnB,OAAOmH,eAAP,KAA4B4a,EAAgB,CAC1CpjB,UAAU,EACVyI,MAAO,SAACwJ,EAASwT,GAEf,IAAM4D,EAAkBpX,EAAQhH,QAAO,SAAAnB,GAAI,OAAKA,EAAKiB,SAC/CwH,EAAQ8W,EAAgBjjB,KAAI,SAAAkO,GAChC,IAAMxK,EAAO,EAAKiK,KAAKoS,QAAQ7R,GAK/B,OAJA,EAAKP,KAAK3U,KAAK,sBAAuB0K,EAAM,CAC1Cwf,KAAM,gBACNnf,QAAS,EAAKkc,KAAK,sBAEdvc,KAGH4b,EAAc,2BAAG,WAAMrV,GAAN,gFAEnB4B,EAEE5B,EAFF4B,QACA1E,EACE8C,EADF9C,QAHmB,kBAOI1G,EAA4B,EAAD,GAAOyb,GAAiBA,GAAiBrQ,EAASwT,EAAUlY,GAP3F,UAObhF,EAPa,QASf,EAAKjL,KAAKqnB,qBATK,gCAUX9d,EAA4B,EAAD,GAAO4b,GAAeA,GAAela,EAAU0J,GAV/D,cAanBA,EAAQxQ,SAAQ,SAAA6S,GACd,IAAMxK,EAAO,EAAKiK,KAAKoS,QAAQ7R,GAC/B,EAAKP,KAAK3U,KAAK,sBAAuB0K,MAfrB,kBAiBZvB,GAjBY,wCAmBnB0J,EAAQxQ,SAAQ,SAAA6S,GACd,IAAMxK,EAAO,EAAKiK,KAAKoS,QAAQ7R,GAG/B,EAAKP,KAAK3U,KAAK,sBAAuB0K,GACtC,EAAKiK,KAAK3U,KAAK,eAAgB0K,EAA/B,SAxBiB,+DAAH,sDA+BlBic,EACE,EAAKF,iBADPE,kBAQF,OANA,EAAKC,eAAe,CAClBD,kBAAmB,EAAF,KAAOA,GAAP,QACdN,EAAW,OAGQ,IAAInT,EAAgBC,EAAO,EAAKjV,MACjCisB,QAAQ/e,MAAK,SAAAsb,GAAU,OAAIrX,QAAQgE,IAAIqT,EAAW1f,IAAIsf,OAAkBlb,MAAK,SAAAgf,GAClG,IAAMxV,EAAcwV,EAAkBpjB,KAAI,SAAAmC,GAAQ,OAAIA,EAAST,OAAO+B,eAItE,OAFAhD,EAA4B,EAAD,GAAO0b,GAAwBA,GAAwBvO,EAAaqV,EAAiB5D,GAEzGhX,QAAQgE,IAAI+W,EAAkBpjB,KAAI,SAAAmC,GAAQ,OAAI1B,EAA4B,EAAD,GAAOsc,GAAkBA,GAAkB5a,UALtH,OAQA,SAAAjI,GAKL,MAJAiS,EAAM9Q,SAAQ,SAAAqI,GACZ,EAAKiK,KAAK3U,KAAK,sBAAuB0K,GACtC,EAAKiK,KAAK3U,KAAK,eAAgB0K,EAAMxJ,MAEjCA,QAIZe,OAAOmH,eAAP,KAA4B6a,EAAc,CACxCrjB,UAAU,EACVyI,MAAO,SAACwJ,EAASwT,GACf,IAAMlT,EAAQN,EAAQ7L,KAAI,SAAAkO,GAAM,OAAI,EAAKP,KAAKoS,QAAQ7R,MAEhD+U,EAAkB9W,EAAMtH,QAAO,SAAAnB,GAAI,OAAKA,EAAKiB,SAAO3E,KAAI,SAAA0D,GAAI,OAAIA,EAAK7C,MACrEsgB,EAAQ,EAAK1B,iBAEnB,GAAI,EAAKgD,SACP,OAAO,EAAKA,SAASre,MAAK,WACxB,OAAO3D,EAA4B,EAAD,GAAOwc,GAAcA,GAAcgG,EAAiB5D,MAI1F,IAAMzR,EAAcuT,EAAMxB,kBAAkBN,GAEtCgE,EAAyB,WAC7BzV,EAAYvS,SAAQ,SAAAmkB,GACD,EAAKuC,iBAAiBvC,GAC9Btc,eACF,EAAK6e,iBAAiBvC,OAMjC,IAAK/e,EAA4B,EAAD,GAAO2b,GAAwBA,KAA2B,CACxFiH,IACA,IAAM3D,EAAa9R,EAAY5N,KAAI,SAAAa,GAAE,OAAI,EAAKugB,YAAYvgB,MAI1D,OAHA,EAAK8M,KAAK2V,cAAcjE,EAAU,CAChCF,YAAaO,IAERrX,QAAQC,UAKjB,OAA2B,IAAvBsF,EAAYjV,QACd,EAAKgV,KAAK2V,cAAcjE,EAAU,CAChCF,YAAa,KAER9W,QAAQC,YAGO6D,EAAMtH,QAAO,SAAAnB,GAAI,OAAKyZ,EAAY,EAAKkD,eAAgB3c,EAAK7C,OACpExF,SAAQ,SAAAqI,GACtB,EAAKiK,KAAK3U,KAAK,uBAAwB0K,EAAM,CAC3Cwf,KAAM,gBACNnf,QAAS,EAAKkc,KAAK,iBAGP,EAAKK,iBAAiBjB,GACvBlR,QAAQ/J,MAAK,WAC1Bif,IACA,IAAM3D,EAAa9R,EAAY5N,KAAI,SAAAa,GAAE,OAAI,EAAKugB,YAAYvgB,MAGpD8e,EAAoB,EAAH,GAAQ,EAAKF,iBAAiBE,0BAE9CA,EAAkBN,GACzB,EAAKO,eAAe,CAClBD,sBAEF,EAAKhS,KAAK2V,cAAcjE,EAAU,CAChCF,YAAaO,WAKrBzkB,OAAOmH,eAAP,KAA4BN,EAAU,CACpClI,UAAU,EACVyI,MAAO,SAAUnI,EAAKmlB,QACR,IAARnlB,IACFA,EAAM,MAGR,IAEM0T,EAFQqU,EAAMxC,iBAEME,kBAAkBN,GAC7B,MAAfzR,GAA+BA,EAAYvS,SAAQ,SAAAmkB,GAC7CyC,EAAMF,iBAAiBvC,IACzByC,EAAMF,iBAAiBvC,GAAYtc,WAIvC+e,EAAMjY,OAAOD,YAAY7P,GAAzB,MACOyjB,EAAmBzjB,OAG9Be,OAAOmH,eAAP,KAA4B8a,EAAa,CACvCtjB,UAAU,EACVyI,MAAO,SAAAnI,GACL,GAAIA,GAAO,SAASyH,KAAKzH,EAAI6J,SAAU,CACrC,IAAMoM,EAAMjW,EAAIqpB,gBAAkBrpB,EAAIqpB,gBAAgBC,sBAAwB,KACxEpe,EAAM+K,GAAOA,EAAIsT,YAActT,EAAIsT,YAAc,KACvD,EAAKzZ,OAAOD,YAAY7P,EAAK,CAC3BkL,MACAhL,KAAM,cAFR,MAIOujB,EAAmBzjB,QAIhC,EAAKE,KAAO,WACZ,EAAKyG,GAAK,EAAK3J,KAAK2J,IAAM,cAC1B,EAAK6iB,MAAQ,cACb,EAAKC,cAAgBlG,EACrB,IAAMmG,EAAiB,CACrBlZ,QAAS,+BACTd,gBAAgB,EAChB4W,iBAAiB,EACjBC,iBAAiB,EACjBnU,mBAAmB,EACnBiS,sBAAsB,EACtBpU,UAAW,KACXR,OAAQ,KACRO,OAAQ,GACRqC,mBAAoBmR,EACpBmG,MAAO,GAET,EAAK3sB,KAAL,OAAiB0sB,GACZ1sB,GAEL,EAAK4sB,WACL,IAAMC,EAA2B,EAAK7sB,KAAKqV,qBAAuBqX,EAAerX,mBA5X3D,OA8XlB,EAAKrV,KAAKyS,OACZuC,EAAgBZ,eAAe,EAAKpU,KAAKyS,QAC/Boa,GAGV7X,EAAgBZ,eAAe,MAGjC,EAAKtB,OAAS,IAAIuT,EAAO,CACvB7S,QAAS,EAAKxT,KAAKwT,QACnBV,OAAQvJ,EAA4B,EAAD,GAAOub,GAAmBA,KAC7DpS,eAAgB,EAAK1S,KAAK0S,iBAG5B,EAAKmY,iBAAmB,GAExB,EAAKzB,iBAAmB,GAGxB,EAAKD,eAAiBplB,OAAOC,OAAO,MAjZd,EAFmiD,iCAsZ3jD,WACEjD,KAAK0V,KAAKqW,gBAAgBvjB,EAA4BxI,KAAM+kB,GAAgBA,IAC5E/kB,KAAK0V,KAAKsW,iBAAiBxjB,EAA4BxI,KAAMglB,GAAcA,IAE3EhlB,KAAK0V,KAAK9V,GAAG,QAAS4I,EAA4BxI,KAAM6J,GAAUA,IAElE7J,KAAK0V,KAAK9V,GAAG,aAAc4I,EAA4BxI,KAAM2kB,GAAcA,IAE3E3kB,KAAK0V,KAAK9V,GAAG,eAAgB4I,EAA4BxI,KAAMilB,GAAaA,IAExEjlB,KAAKf,KAAKqnB,qBAEZtmB,KAAK0V,KAAK9V,GAAG,iBAAkB4I,EAA4BxI,KAAMqkB,GAA2BA,IAE5FrkB,KAAK0V,KAAKuW,IAAI7G,EAAK,CAUjB8G,6BAA6B,EAG7BC,oBAAoB,EAEpBC,WAAY,CAAC,eAAgB,WAAY,aAEzCR,MAAO5rB,KAAKf,KAAK2sB,QAIrB5rB,KAAK0V,KAAK9V,GAAG,mBAAoB4I,EAA4BxI,KAAM4kB,GAAoBA,IACvF5kB,KAAK0V,KAAK9V,GAAG,WAAY4I,EAA4BxI,KAAM6kB,GAAaA,IACxE7kB,KAAK2nB,eAAe,CAElBF,WAAY,GAEZC,kBAAmB,GAEnBxT,MAAO,GAEPtI,QAAS,KAGX,IACEygB,EACErsB,KAAK0V,KAAKkS,WADZyE,aAEFrsB,KAAK0V,KAAKqS,SAAS,CACjBsE,aAAc,EAAF,KAAOA,GAAP,IACVC,wBAAwB,QA3c6hD,uBAgd3jD,WACEtsB,KAAK0V,KAAK6W,mBAAmB/jB,EAA4BxI,KAAM+kB,GAAgBA,IAC/E/kB,KAAK0V,KAAK8W,oBAAoBhkB,EAA4BxI,KAAMglB,GAAcA,IAC9EhlB,KAAK0V,KAAKtV,IAAI,QAASoI,EAA4BxI,KAAM6J,GAAUA,IAE/D7J,KAAKf,KAAKqnB,sBACZtmB,KAAK0V,KAAKtV,IAAI,iBAAkBoI,EAA4BxI,KAAMqkB,GAA2BA,IAG/F,IACEgI,EACErsB,KAAK0V,KAAKkS,WADZyE,aAEFrsB,KAAK0V,KAAKqS,SAAS,CACjBsE,aAAc,EAAF,KAAOA,GAAP,IACVC,wBAAwB,QA9d6hD,yBAme3jD,SAAY1jB,GAIV,OADI5I,KAAKwnB,iBADPC,WAEgB7e,KAveuiD,8BA0e3jD,SAAiB2e,GACf,OAAOvnB,KAAK0V,KAAKmT,WAAWjc,QAAO,SAAAnB,GACjC,OAAOA,GAAQA,EAAKyb,aAAezb,EAAKyb,YAAYhd,WAAaqd,SA5es/C,GAA6BpC,GAgftlDrB,EAAOkC,QAAU,QAAS/Z,GA6S9B5F,EAAO1G,QAAQ8sB,UAtyBG,yCAuyBlBpmB,EAAO1G,QAAQ+sB,kBAryBmB","file":"static/js/6.9d7e4dda.chunk.js","sourcesContent":["import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/**\n * Parses an URI\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst Emitter = require('component-emitter');\n\nconst has = require('@uppy/utils/lib/hasProperty');\n\nconst NetworkError = require('@uppy/utils/lib/NetworkError');\n\nconst fetchWithNetworkError = require('@uppy/utils/lib/fetchWithNetworkError');\n\nconst parseUrl = require('./parseUrl'); // Lazy load socket.io to avoid a console error\n// in IE 10 when the Transloadit plugin is not used.\n// (The console.error call comes from `buffer`. I\n// think we actually don't use that part of socket.io\n// at all…)\n\n\nlet socketIo;\n\nfunction requireSocketIo() {\n var _socketIo;\n\n // eslint-disable-next-line global-require\n (_socketIo = socketIo) != null ? _socketIo : socketIo = require('socket.io-client');\n return socketIo;\n}\n\nconst ASSEMBLY_UPLOADING = 'ASSEMBLY_UPLOADING';\nconst ASSEMBLY_EXECUTING = 'ASSEMBLY_EXECUTING';\nconst ASSEMBLY_COMPLETED = 'ASSEMBLY_COMPLETED';\nconst statusOrder = [ASSEMBLY_UPLOADING, ASSEMBLY_EXECUTING, ASSEMBLY_COMPLETED];\n/**\n * Check that an assembly status is equal to or larger than some desired status.\n * It checks for things that are larger so that a comparison like this works,\n * when the old assembly status is UPLOADING but the new is FINISHED:\n *\n * !isStatus(oldStatus, ASSEMBLY_EXECUTING) && isStatus(newState, ASSEMBLY_EXECUTING)\n *\n * …so that we can emit the 'executing' event even if the execution step was so\n * fast that we missed it.\n */\n\nfunction isStatus(status, test) {\n return statusOrder.indexOf(status) >= statusOrder.indexOf(test);\n}\n\nvar _onFinished = /*#__PURE__*/_classPrivateFieldLooseKey(\"onFinished\");\n\nvar _connectSocket = /*#__PURE__*/_classPrivateFieldLooseKey(\"connectSocket\");\n\nvar _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\");\n\nvar _beginPolling = /*#__PURE__*/_classPrivateFieldLooseKey(\"beginPolling\");\n\nvar _fetchStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"fetchStatus\");\n\nvar _diffStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"diffStatus\");\n\nclass TransloaditAssembly extends Emitter {\n constructor(assembly) {\n super(); // The current assembly status.\n\n Object.defineProperty(this, _diffStatus, {\n value: _diffStatus2\n });\n Object.defineProperty(this, _fetchStatus, {\n value: _fetchStatus2\n });\n Object.defineProperty(this, _beginPolling, {\n value: _beginPolling2\n });\n Object.defineProperty(this, _onError, {\n value: _onError2\n });\n Object.defineProperty(this, _connectSocket, {\n value: _connectSocket2\n });\n Object.defineProperty(this, _onFinished, {\n value: _onFinished2\n });\n this.status = assembly; // The socket.io connection.\n\n this.socket = null; // The interval timer for full status updates.\n\n this.pollInterval = null; // Whether this assembly has been closed (finished or errored)\n\n this.closed = false;\n }\n\n connect() {\n _classPrivateFieldLooseBase(this, _connectSocket)[_connectSocket]();\n\n _classPrivateFieldLooseBase(this, _beginPolling)[_beginPolling]();\n }\n\n update() {\n return _classPrivateFieldLooseBase(this, _fetchStatus)[_fetchStatus]({\n diff: true\n });\n }\n /**\n * Update this assembly's status with a full new object. Events will be\n * emitted for status changes, new files, and new results.\n *\n * @param {object} next The new assembly status object.\n */\n\n\n updateStatus(next) {\n _classPrivateFieldLooseBase(this, _diffStatus)[_diffStatus](this.status, next);\n\n this.status = next;\n }\n /**\n * Diff two assembly statuses, and emit the events necessary to go from `prev`\n * to `next`.\n *\n * @param {object} prev The previous assembly status.\n * @param {object} next The new assembly status.\n */\n\n\n /**\n * Stop updating this assembly.\n */\n close() {\n this.closed = true;\n\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n }\n\n clearInterval(this.pollInterval);\n }\n\n}\n\nfunction _onFinished2() {\n this.emit('finished');\n this.close();\n}\n\nfunction _connectSocket2() {\n const parsed = parseUrl(this.status.websocket_url);\n const socket = requireSocketIo().connect(parsed.origin, {\n transports: ['websocket'],\n path: parsed.pathname\n });\n socket.on('connect', () => {\n socket.emit('assembly_connect', {\n id: this.status.assembly_id\n });\n this.emit('connect');\n });\n socket.on('connect_failed', () => {\n _classPrivateFieldLooseBase(this, _onError)[_onError](new NetworkError('Transloadit Socket.io connection error'));\n\n this.socket = null;\n });\n socket.on('connect_error', () => {\n socket.disconnect();\n this.socket = null;\n });\n socket.on('assembly_finished', () => {\n _classPrivateFieldLooseBase(this, _onFinished)[_onFinished]();\n });\n socket.on('assembly_upload_finished', file => {\n this.emit('upload', file);\n this.status.uploads.push(file);\n });\n socket.on('assembly_uploading_finished', () => {\n this.emit('executing');\n });\n socket.on('assembly_upload_meta_data_extracted', () => {\n this.emit('metadata');\n\n _classPrivateFieldLooseBase(this, _fetchStatus)[_fetchStatus]({\n diff: false\n });\n });\n socket.on('assembly_result_finished', (stepName, result) => {\n this.emit('result', stepName, result);\n\n if (!this.status.results[stepName]) {\n this.status.results[stepName] = [];\n }\n\n this.status.results[stepName].push(result);\n });\n socket.on('assembly_error', err => {\n _classPrivateFieldLooseBase(this, _onError)[_onError](err); // Refetch for updated status code\n\n\n _classPrivateFieldLooseBase(this, _fetchStatus)[_fetchStatus]({\n diff: false\n });\n });\n this.socket = socket;\n}\n\nfunction _onError2(err) {\n this.emit('error', Object.assign(new Error(err.message), err));\n}\n\nfunction _beginPolling2() {\n this.pollInterval = setInterval(() => {\n if (!this.socket || !this.socket.connected) {\n _classPrivateFieldLooseBase(this, _fetchStatus)[_fetchStatus]();\n }\n }, 2000);\n}\n\nfunction _fetchStatus2(_temp) {\n let {\n diff = true\n } = _temp === void 0 ? {} : _temp;\n return fetchWithNetworkError(this.status.assembly_ssl_url).then(response => response.json()).then(status => {\n // Avoid updating if we closed during this request's lifetime.\n if (this.closed) return;\n this.emit('status', status);\n\n if (diff) {\n this.updateStatus(status);\n } else {\n this.status = status;\n }\n }).catch(err => _classPrivateFieldLooseBase(this, _onError)[_onError](err));\n}\n\nfunction _diffStatus2(prev, next) {\n const prevStatus = prev.ok;\n const nextStatus = next.ok;\n\n if (next.error && !prev.error) {\n return _classPrivateFieldLooseBase(this, _onError)[_onError](next);\n } // Desired emit order:\n // - executing\n // - (n × upload)\n // - metadata\n // - (m × result)\n // - finished\n // The below checks run in this order, that way even if we jump from\n // UPLOADING straight to FINISHED all the events are emitted as expected.\n\n\n const nowExecuting = isStatus(nextStatus, ASSEMBLY_EXECUTING) && !isStatus(prevStatus, ASSEMBLY_EXECUTING);\n\n if (nowExecuting) {\n // Without WebSockets, this is our only way to tell if uploading finished.\n // Hence, we emit this just before the 'upload's and before the 'metadata'\n // event for the most intuitive ordering, corresponding to the _usual_\n // ordering (if not guaranteed) that you'd get on the WebSocket.\n this.emit('executing');\n } // Find new uploaded files.\n\n\n Object.keys(next.uploads).filter(upload => !has(prev.uploads, upload)).forEach(upload => {\n this.emit('upload', next.uploads[upload]);\n });\n\n if (nowExecuting) {\n this.emit('metadata');\n } // Find new results.\n\n\n Object.keys(next.results).forEach(stepName => {\n const nextResults = next.results[stepName];\n const prevResults = prev.results[stepName];\n nextResults.filter(n => !prevResults || !prevResults.some(p => p.id === n.id)).forEach(result => {\n this.emit('result', stepName, result);\n });\n });\n\n if (isStatus(nextStatus, ASSEMBLY_COMPLETED) && !isStatus(prevStatus, ASSEMBLY_COMPLETED)) {\n this.emit('finished');\n }\n\n return undefined;\n}\n\nmodule.exports = TransloaditAssembly;","\"use strict\";\n\nmodule.exports = function parseUrl(url) {\n const scheme = /^\\w+:\\/\\//.exec(url);\n let i = 0;\n\n if (scheme) {\n i = scheme[0].length + 1;\n }\n\n const slashIndex = url.indexOf('/', i);\n\n if (slashIndex === -1) {\n return {\n origin: url,\n pathname: '/'\n };\n }\n\n return {\n origin: url.slice(0, slashIndex),\n pathname: url.slice(slashIndex)\n };\n};","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","\"use strict\";\n\nvar _headers, _reportError;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst fetchWithNetworkError = require('@uppy/utils/lib/fetchWithNetworkError');\n/**\n * A Barebones HTTP API client for Transloadit.\n */\n\n\nmodule.exports = (_headers = /*#__PURE__*/_classPrivateFieldLooseKey(\"headers\"), _reportError = /*#__PURE__*/_classPrivateFieldLooseKey(\"reportError\"), class Client {\n constructor(_opts) {\n if (_opts === void 0) {\n _opts = {};\n }\n\n Object.defineProperty(this, _headers, {\n writable: true,\n value: {}\n });\n Object.defineProperty(this, _reportError, {\n writable: true,\n value: (err, params) => {\n if (this.opts.errorReporting === false) {\n throw err;\n }\n\n const opts = {\n type: params.type\n };\n\n if (params.assembly) {\n opts.assembly = params.assembly.assembly_id;\n opts.instance = params.assembly.instance;\n }\n\n if (params.url) {\n opts.endpoint = params.url;\n }\n\n this.submitError(err, opts).catch(() => {// not much we can do then is there\n });\n throw err;\n }\n });\n this.opts = _opts;\n\n if (this.opts.client != null) {\n _classPrivateFieldLooseBase(this, _headers)[_headers]['Transloadit-Client'] = this.opts.client;\n }\n }\n /**\n * Create a new assembly.\n *\n * @param {object} options\n * @param {string|object} options.params\n * @param {object} options.fields\n * @param {string} options.signature\n * @param {number} options.expectedFiles\n */\n\n\n createAssembly(_ref) {\n let {\n params,\n fields,\n signature,\n expectedFiles\n } = _ref;\n const data = new FormData();\n data.append('params', typeof params === 'string' ? params : JSON.stringify(params));\n\n if (signature) {\n data.append('signature', signature);\n }\n\n Object.keys(fields).forEach(key => {\n data.append(key, fields[key]);\n });\n data.append('num_expected_upload_files', expectedFiles);\n const url = new URL('/assemblies', `${this.opts.service}`).href;\n return fetchWithNetworkError(url, {\n method: 'post',\n headers: _classPrivateFieldLooseBase(this, _headers)[_headers],\n body: data\n }).then(response => response.json()).then(assembly => {\n if (assembly.error) {\n const error = new Error(assembly.error);\n error.details = assembly.message;\n error.assembly = assembly;\n\n if (assembly.assembly_id) {\n error.details += ` Assembly ID: ${assembly.assembly_id}`;\n }\n\n throw error;\n }\n\n return assembly;\n }).catch(err => _classPrivateFieldLooseBase(this, _reportError)[_reportError](err, {\n url,\n type: 'API_ERROR'\n }));\n }\n /**\n * Reserve resources for a file in an Assembly. Then addFile can be used later.\n *\n * @param {object} assembly\n * @param {UppyFile} file\n */\n\n\n reserveFile(assembly, file) {\n const size = encodeURIComponent(file.size);\n const url = `${assembly.assembly_ssl_url}/reserve_file?size=${size}`;\n return fetchWithNetworkError(url, {\n method: 'post',\n headers: _classPrivateFieldLooseBase(this, _headers)[_headers]\n }).then(response => response.json()).catch(err => _classPrivateFieldLooseBase(this, _reportError)[_reportError](err, {\n assembly,\n file,\n url,\n type: 'API_ERROR'\n }));\n }\n /**\n * Import a remote file to an Assembly.\n *\n * @param {object} assembly\n * @param {UppyFile} file\n */\n\n\n addFile(assembly, file) {\n if (!file.uploadURL) {\n return Promise.reject(new Error('File does not have an `uploadURL`.'));\n }\n\n const size = encodeURIComponent(file.size);\n const uploadUrl = encodeURIComponent(file.uploadURL);\n const filename = encodeURIComponent(file.name);\n const fieldname = 'file';\n const qs = `size=${size}&filename=${filename}&fieldname=${fieldname}&s3Url=${uploadUrl}`;\n const url = `${assembly.assembly_ssl_url}/add_file?${qs}`;\n return fetchWithNetworkError(url, {\n method: 'post',\n headers: _classPrivateFieldLooseBase(this, _headers)[_headers]\n }).then(response => response.json()).catch(err => _classPrivateFieldLooseBase(this, _reportError)[_reportError](err, {\n assembly,\n file,\n url,\n type: 'API_ERROR'\n }));\n }\n /**\n * Cancel a running Assembly.\n *\n * @param {object} assembly\n */\n\n\n cancelAssembly(assembly) {\n const url = assembly.assembly_ssl_url;\n return fetchWithNetworkError(url, {\n method: 'delete',\n headers: _classPrivateFieldLooseBase(this, _headers)[_headers]\n }).then(response => response.json()).catch(err => _classPrivateFieldLooseBase(this, _reportError)[_reportError](err, {\n url,\n type: 'API_ERROR'\n }));\n }\n /**\n * Get the current status for an assembly.\n *\n * @param {string} url The status endpoint of the assembly.\n */\n\n\n getAssemblyStatus(url) {\n return fetchWithNetworkError(url, {\n headers: _classPrivateFieldLooseBase(this, _headers)[_headers]\n }).then(response => response.json()).catch(err => _classPrivateFieldLooseBase(this, _reportError)[_reportError](err, {\n url,\n type: 'STATUS_ERROR'\n }));\n }\n\n submitError(err, _temp) {\n let {\n endpoint,\n instance,\n assembly\n } = _temp === void 0 ? {} : _temp;\n const message = err.details ? `${err.message} (${err.details})` : err.message;\n return fetchWithNetworkError('https://transloaditstatus.com/client_error', {\n method: 'post',\n body: JSON.stringify({\n endpoint,\n instance,\n assembly_id: assembly,\n agent: typeof navigator !== 'undefined' ? navigator.userAgent : '',\n client: this.opts.client,\n error: message\n })\n }).then(response => response.json());\n }\n\n});","\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\n/**\n * Check that Assembly parameters are present and include all required fields.\n */\nfunction validateParams(params) {\n if (params == null) {\n throw new Error('Transloadit: The `params` option is required.');\n }\n\n if (typeof params === 'string') {\n try {\n // eslint-disable-next-line no-param-reassign\n params = JSON.parse(params);\n } catch (err) {\n // Tell the user that this is not an Uppy bug!\n const error = new Error('Transloadit: The `params` option is a malformed JSON string.');\n err.cause = err;\n throw error;\n }\n }\n\n if (!params.auth || !params.auth.key) {\n throw new Error('Transloadit: The `params.auth.key` option is required. ' + 'You can find your Transloadit API key at https://transloadit.com/c/template-credentials');\n }\n}\n/**\n * Combine Assemblies with the same options into a single Assembly for all the\n * relevant files.\n */\n\n\nfunction dedupe(list) {\n const dedupeMap = Object.create(null);\n\n for (const {\n fileIDs,\n options\n } of list) {\n const id = JSON.stringify(options);\n\n if (id in dedupeMap) {\n dedupeMap[id].fileIDArrays.push(fileIDs);\n } else {\n dedupeMap[id] = {\n options,\n fileIDArrays: [fileIDs]\n };\n }\n }\n\n return Object.values(dedupeMap).map(_ref => {\n let {\n options,\n fileIDArrays\n } = _ref;\n return {\n options,\n fileIDs: fileIDArrays.flat(1)\n };\n });\n}\n/**\n * Turn Transloadit plugin options and a list of files into a list of Assembly\n * options.\n */\n\n\nvar _getAssemblyOptions = /*#__PURE__*/_classPrivateFieldLooseKey(\"getAssemblyOptions\");\n\nclass AssemblyOptions {\n constructor(files, opts) {\n Object.defineProperty(this, _getAssemblyOptions, {\n value: _getAssemblyOptions2\n });\n this.files = files;\n this.opts = opts;\n }\n /**\n * Get Assembly options for a file.\n */\n\n\n /**\n * Generate a set of Assemblies that will handle the upload.\n * Returns a Promise for an object with keys:\n * - fileIDs - an array of file IDs to add to this Assembly\n * - options - Assembly options\n */\n async build() {\n const options = this.opts;\n\n if (this.files.length > 0) {\n return Promise.all(this.files.map(file => _classPrivateFieldLooseBase(this, _getAssemblyOptions)[_getAssemblyOptions](file))).then(dedupe);\n }\n\n if (options.alwaysRunAssembly) {\n // No files, just generate one Assembly\n const assemblyOptions = await options.getAssemblyOptions(null, options);\n validateParams(assemblyOptions.params);\n return [{\n fileIDs: this.files.map(file => file.id),\n options: assemblyOptions\n }];\n } // If there are no files and we do not `alwaysRunAssembly`,\n // don't do anything.\n\n\n return [];\n }\n\n}\n\nasync function _getAssemblyOptions2(file) {\n const options = this.opts;\n const assemblyOptions = await options.getAssemblyOptions(file, options);\n\n if (Array.isArray(assemblyOptions.fields)) {\n assemblyOptions.fields = Object.fromEntries(assemblyOptions.fields.map(fieldName => [fieldName, file.meta[fieldName]]));\n } else if (assemblyOptions.fields == null) {\n assemblyOptions.fields = {};\n }\n\n validateParams(assemblyOptions.params);\n return {\n fileIDs: [file.id],\n options: assemblyOptions\n };\n}\n\nmodule.exports = AssemblyOptions;\nmodule.exports.validateParams = validateParams;","\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst Emitter = require('component-emitter');\n/**\n * Track completion of multiple assemblies.\n *\n * Emits 'assembly-complete' when an assembly completes.\n * Emits 'assembly-error' when an assembly fails.\n * Exposes a `.promise` property that resolves when all assemblies have\n * completed (or failed).\n */\n\n\nvar _assemblyIDs = /*#__PURE__*/_classPrivateFieldLooseKey(\"assemblyIDs\");\n\nvar _reject = /*#__PURE__*/_classPrivateFieldLooseKey(\"reject\");\n\nvar _remaining = /*#__PURE__*/_classPrivateFieldLooseKey(\"remaining\");\n\nvar _resolve = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolve\");\n\nvar _uppy = /*#__PURE__*/_classPrivateFieldLooseKey(\"uppy\");\n\nvar _watching = /*#__PURE__*/_classPrivateFieldLooseKey(\"watching\");\n\nvar _onAssemblyComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onAssemblyComplete\");\n\nvar _onAssemblyCancel = /*#__PURE__*/_classPrivateFieldLooseKey(\"onAssemblyCancel\");\n\nvar _onAssemblyError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onAssemblyError\");\n\nvar _onImportError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onImportError\");\n\nvar _checkAllComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAllComplete\");\n\nvar _removeListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeListeners\");\n\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\n\nclass TransloaditAssemblyWatcher extends Emitter {\n constructor(uppy, assemblyIDs) {\n super();\n Object.defineProperty(this, _addListeners, {\n value: _addListeners2\n });\n Object.defineProperty(this, _removeListeners, {\n value: _removeListeners2\n });\n Object.defineProperty(this, _checkAllComplete, {\n value: _checkAllComplete2\n });\n Object.defineProperty(this, _watching, {\n value: _watching2\n });\n Object.defineProperty(this, _assemblyIDs, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _reject, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _remaining, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _resolve, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uppy, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onAssemblyComplete, {\n writable: true,\n value: assembly => {\n if (!_classPrivateFieldLooseBase(this, _watching)[_watching](assembly.assembly_id)) {\n return;\n }\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].log(`[Transloadit] AssemblyWatcher: Got Assembly finish ${assembly.assembly_id}`);\n\n this.emit('assembly-complete', assembly.assembly_id);\n\n _classPrivateFieldLooseBase(this, _checkAllComplete)[_checkAllComplete]();\n }\n });\n Object.defineProperty(this, _onAssemblyCancel, {\n writable: true,\n value: assembly => {\n if (!_classPrivateFieldLooseBase(this, _watching)[_watching](assembly.assembly_id)) {\n return;\n }\n\n _classPrivateFieldLooseBase(this, _checkAllComplete)[_checkAllComplete]();\n }\n });\n Object.defineProperty(this, _onAssemblyError, {\n writable: true,\n value: (assembly, error) => {\n if (!_classPrivateFieldLooseBase(this, _watching)[_watching](assembly.assembly_id)) {\n return;\n }\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].log(`[Transloadit] AssemblyWatcher: Got Assembly error ${assembly.assembly_id}`);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].log(error);\n\n this.emit('assembly-error', assembly.assembly_id, error);\n\n _classPrivateFieldLooseBase(this, _checkAllComplete)[_checkAllComplete]();\n }\n });\n Object.defineProperty(this, _onImportError, {\n writable: true,\n value: (assembly, fileID, error) => {\n if (!_classPrivateFieldLooseBase(this, _watching)[_watching](assembly.assembly_id)) {\n return;\n } // Not sure if we should be doing something when it's just one file failing.\n // ATM, the only options are 1) ignoring or 2) failing the entire upload.\n // I think failing the upload is better than silently ignoring.\n // In the future we should maybe have a way to resolve uploads with some failures,\n // like returning an object with `{ successful, failed }` uploads.\n\n\n _classPrivateFieldLooseBase(this, _onAssemblyError)[_onAssemblyError](assembly, error);\n }\n });\n _classPrivateFieldLooseBase(this, _uppy)[_uppy] = uppy;\n _classPrivateFieldLooseBase(this, _assemblyIDs)[_assemblyIDs] = assemblyIDs;\n _classPrivateFieldLooseBase(this, _remaining)[_remaining] = assemblyIDs.length;\n this.promise = new Promise((resolve, reject) => {\n _classPrivateFieldLooseBase(this, _resolve)[_resolve] = resolve;\n _classPrivateFieldLooseBase(this, _reject)[_reject] = reject;\n });\n\n _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n }\n /**\n * Are we watching this assembly ID?\n */\n\n\n}\n\nfunction _watching2(id) {\n return _classPrivateFieldLooseBase(this, _assemblyIDs)[_assemblyIDs].indexOf(id) !== -1;\n}\n\nfunction _checkAllComplete2() {\n _classPrivateFieldLooseBase(this, _remaining)[_remaining] -= 1;\n\n if (_classPrivateFieldLooseBase(this, _remaining)[_remaining] === 0) {\n // We're done, these listeners can be removed\n _classPrivateFieldLooseBase(this, _removeListeners)[_removeListeners]();\n\n _classPrivateFieldLooseBase(this, _resolve)[_resolve]();\n }\n}\n\nfunction _removeListeners2() {\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off('transloadit:complete', _classPrivateFieldLooseBase(this, _onAssemblyComplete)[_onAssemblyComplete]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off('transloadit:assembly-cancel', _classPrivateFieldLooseBase(this, _onAssemblyCancel)[_onAssemblyCancel]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off('transloadit:assembly-error', _classPrivateFieldLooseBase(this, _onAssemblyError)[_onAssemblyError]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off('transloadit:import-error', _classPrivateFieldLooseBase(this, _onImportError)[_onImportError]);\n}\n\nfunction _addListeners2() {\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].on('transloadit:complete', _classPrivateFieldLooseBase(this, _onAssemblyComplete)[_onAssemblyComplete]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].on('transloadit:assembly-cancel', _classPrivateFieldLooseBase(this, _onAssemblyCancel)[_onAssemblyCancel]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].on('transloadit:assembly-error', _classPrivateFieldLooseBase(this, _onAssemblyError)[_onAssemblyError]);\n\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].on('transloadit:import-error', _classPrivateFieldLooseBase(this, _onImportError)[_onImportError]);\n}\n\nmodule.exports = TransloaditAssemblyWatcher;","\"use strict\";\n\nmodule.exports = {\n strings: {\n // Shown while Assemblies are being created for an upload.\n creatingAssembly: 'Preparing upload...',\n // Shown if an Assembly could not be created.\n creatingAssemblyFailed: 'Transloadit: Could not create Assembly',\n // Shown after uploads have succeeded, but when the Assembly is still executing.\n // This only shows if `waitForMetadata` or `waitForEncoding` was enabled.\n encoding: 'Encoding...'\n }\n};","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n constructor() {\n super();\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","\"use strict\";\n\nvar _class, _getClientVersion, _attachAssemblyMetadata, _createAssembly, _createAssemblyWatcher, _shouldWaitAfterUpload, _reserveFiles, _onFileUploadURLAvailable, _findFile, _onFileUploadComplete, _onResult, _onAssemblyFinished, _cancelAssembly, _onCancelAll, _getPersistentData, _onRestored, _connectAssembly, _prepareUpload, _afterUpload, _onError, _onTusError, _temp;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst hasProperty = require('@uppy/utils/lib/hasProperty');\n\nconst BasePlugin = require('@uppy/core/lib/BasePlugin');\n\nconst Tus = require('@uppy/tus');\n\nconst Assembly = require('./Assembly');\n\nconst Client = require('./Client');\n\nconst AssemblyOptions = require('./AssemblyOptions');\n\nconst AssemblyWatcher = require('./AssemblyWatcher');\n\nconst locale = require('./locale');\n\nfunction defaultGetAssemblyOptions(file, options) {\n return {\n params: options.params,\n signature: options.signature,\n fields: options.fields\n };\n}\n\nconst sendErrorToConsole = originalErr => err => {\n const error = new Error('Failed to send error to the client');\n error.cause = err;\n console.error(error, originalErr);\n};\n\nconst COMPANION = 'https://api2.transloadit.com/companion'; // Regex matching acceptable postMessage() origins for authentication feedback from companion.\n\nconst ALLOWED_COMPANION_PATTERN = /\\.transloadit\\.com$/; // Regex used to check if a Companion address is run by Transloadit.\n\nconst TL_COMPANION = /https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/companion/;\n/**\n * Upload files to Transloadit using Tus.\n */\n\nmodule.exports = (_temp = (_getClientVersion = /*#__PURE__*/_classPrivateFieldLooseKey(\"getClientVersion\"), _attachAssemblyMetadata = /*#__PURE__*/_classPrivateFieldLooseKey(\"attachAssemblyMetadata\"), _createAssembly = /*#__PURE__*/_classPrivateFieldLooseKey(\"createAssembly\"), _createAssemblyWatcher = /*#__PURE__*/_classPrivateFieldLooseKey(\"createAssemblyWatcher\"), _shouldWaitAfterUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldWaitAfterUpload\"), _reserveFiles = /*#__PURE__*/_classPrivateFieldLooseKey(\"reserveFiles\"), _onFileUploadURLAvailable = /*#__PURE__*/_classPrivateFieldLooseKey(\"onFileUploadURLAvailable\"), _findFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"findFile\"), _onFileUploadComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onFileUploadComplete\"), _onResult = /*#__PURE__*/_classPrivateFieldLooseKey(\"onResult\"), _onAssemblyFinished = /*#__PURE__*/_classPrivateFieldLooseKey(\"onAssemblyFinished\"), _cancelAssembly = /*#__PURE__*/_classPrivateFieldLooseKey(\"cancelAssembly\"), _onCancelAll = /*#__PURE__*/_classPrivateFieldLooseKey(\"onCancelAll\"), _getPersistentData = /*#__PURE__*/_classPrivateFieldLooseKey(\"getPersistentData\"), _onRestored = /*#__PURE__*/_classPrivateFieldLooseKey(\"onRestored\"), _connectAssembly = /*#__PURE__*/_classPrivateFieldLooseKey(\"connectAssembly\"), _prepareUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"prepareUpload\"), _afterUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"afterUpload\"), _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\"), _onTusError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onTusError\"), _class = class Transloadit extends BasePlugin {\n // eslint-disable-line global-require\n constructor(uppy, opts) {\n var _this;\n\n super(uppy, opts);\n _this = this;\n Object.defineProperty(this, _connectAssembly, {\n value: _connectAssembly2\n });\n Object.defineProperty(this, _cancelAssembly, {\n value: _cancelAssembly2\n });\n Object.defineProperty(this, _onAssemblyFinished, {\n value: _onAssemblyFinished2\n });\n Object.defineProperty(this, _onResult, {\n value: _onResult2\n });\n Object.defineProperty(this, _onFileUploadComplete, {\n value: _onFileUploadComplete2\n });\n Object.defineProperty(this, _findFile, {\n value: _findFile2\n });\n Object.defineProperty(this, _reserveFiles, {\n value: _reserveFiles2\n });\n Object.defineProperty(this, _shouldWaitAfterUpload, {\n value: _shouldWaitAfterUpload2\n });\n Object.defineProperty(this, _createAssemblyWatcher, {\n value: _createAssemblyWatcher2\n });\n Object.defineProperty(this, _createAssembly, {\n value: _createAssembly2\n });\n Object.defineProperty(this, _attachAssemblyMetadata, {\n value: _attachAssemblyMetadata2\n });\n Object.defineProperty(this, _getClientVersion, {\n value: _getClientVersion2\n });\n Object.defineProperty(this, _onFileUploadURLAvailable, {\n writable: true,\n value: rawFile => {\n const file = this.uppy.getFile(rawFile.id);\n\n if (!file || !file.transloadit || !file.transloadit.assembly) {\n return;\n }\n\n const {\n assemblies\n } = this.getPluginState();\n const assembly = assemblies[file.transloadit.assembly];\n this.client.addFile(assembly, file).catch(err => {\n this.uppy.log(err);\n this.uppy.emit('transloadit:import-error', assembly, file.id, err);\n });\n }\n });\n Object.defineProperty(this, _onCancelAll, {\n writable: true,\n value: () => {\n const {\n uploadsAssemblies\n } = this.getPluginState();\n const assemblyIDs = Object.values(uploadsAssemblies).flat(1);\n const cancelPromises = assemblyIDs.map(assemblyID => {\n const assembly = this.getAssembly(assemblyID);\n return _classPrivateFieldLooseBase(this, _cancelAssembly)[_cancelAssembly](assembly);\n });\n Promise.all(cancelPromises).catch(err => {\n this.uppy.log(err);\n });\n }\n });\n Object.defineProperty(this, _getPersistentData, {\n writable: true,\n value: setData => {\n const {\n assemblies,\n uploadsAssemblies\n } = this.getPluginState();\n setData({\n [this.id]: {\n assemblies,\n uploadsAssemblies\n }\n });\n }\n });\n Object.defineProperty(this, _onRestored, {\n writable: true,\n value: pluginData => {\n const savedState = pluginData && pluginData[this.id] ? pluginData[this.id] : {};\n const previousAssemblies = savedState.assemblies || {};\n const uploadsAssemblies = savedState.uploadsAssemblies || {};\n\n if (Object.keys(uploadsAssemblies).length === 0) {\n // Nothing to restore.\n return;\n } // Convert loaded Assembly statuses to a Transloadit plugin state object.\n\n\n const restoreState = assemblies => {\n const files = {};\n const results = [];\n\n for (const [id, status] of Object.entries(assemblies)) {\n status.uploads.forEach(uploadedFile => {\n const file = _classPrivateFieldLooseBase(this, _findFile)[_findFile](uploadedFile);\n\n files[uploadedFile.id] = {\n id: file.id,\n assembly: id,\n uploadedFile\n };\n });\n const state = this.getPluginState();\n Object.keys(status.results).forEach(stepName => {\n for (const result of status.results[stepName]) {\n const file = state.files[result.original_id];\n result.localId = file ? file.id : null;\n results.push({\n id: result.id,\n result,\n stepName,\n assembly: id\n });\n }\n });\n }\n\n this.setPluginState({\n assemblies,\n files,\n results,\n uploadsAssemblies\n });\n }; // Set up the Assembly instances and AssemblyWatchers for existing Assemblies.\n\n\n const restoreAssemblies = () => {\n // eslint-disable-next-line no-shadow\n const {\n assemblies,\n uploadsAssemblies\n } = this.getPluginState(); // Set up the assembly watchers again for all the ongoing uploads.\n\n Object.keys(uploadsAssemblies).forEach(uploadID => {\n const assemblyIDs = uploadsAssemblies[uploadID];\n const fileIDsInUpload = assemblyIDs.flatMap(assemblyID => {\n return this.getAssemblyFiles(assemblyID).map(file => file.id);\n });\n\n _classPrivateFieldLooseBase(this, _createAssemblyWatcher)[_createAssemblyWatcher](assemblyIDs, fileIDsInUpload, uploadID);\n });\n const allAssemblyIDs = Object.keys(assemblies);\n allAssemblyIDs.forEach(id => {\n const assembly = new Assembly(assemblies[id]);\n\n _classPrivateFieldLooseBase(this, _connectAssembly)[_connectAssembly](assembly);\n });\n }; // Force-update all Assemblies to check for missed events.\n\n\n const updateAssemblies = () => {\n const {\n assemblies\n } = this.getPluginState();\n return Promise.all(Object.keys(assemblies).map(id => {\n return this.activeAssemblies[id].update();\n }));\n }; // Restore all Assembly state.\n\n\n this.restored = Promise.resolve().then(() => {\n restoreState(previousAssemblies);\n restoreAssemblies();\n return updateAssemblies();\n });\n this.restored.then(() => {\n this.restored = null;\n });\n }\n });\n Object.defineProperty(this, _prepareUpload, {\n writable: true,\n value: (fileIDs, uploadID) => {\n // Only use files without errors\n const filteredFileIDs = fileIDs.filter(file => !file.error);\n const files = filteredFileIDs.map(fileID => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('creatingAssembly')\n });\n return file;\n }); // eslint-disable-next-line no-shadow\n\n const createAssembly = async _ref => {\n let {\n fileIDs,\n options\n } = _ref;\n\n try {\n const assembly = await _classPrivateFieldLooseBase(this, _createAssembly)[_createAssembly](fileIDs, uploadID, options);\n\n if (this.opts.importFromUploadURLs) {\n await _classPrivateFieldLooseBase(this, _reserveFiles)[_reserveFiles](assembly, fileIDs);\n }\n\n fileIDs.forEach(fileID => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-complete', file);\n });\n return assembly;\n } catch (err) {\n fileIDs.forEach(fileID => {\n const file = this.uppy.getFile(fileID); // Clear preprocessing state when the Assembly could not be created,\n // otherwise the UI gets confused about the lingering progress keys\n\n this.uppy.emit('preprocess-complete', file);\n this.uppy.emit('upload-error', file, err);\n });\n throw err;\n }\n };\n\n const {\n uploadsAssemblies\n } = this.getPluginState();\n this.setPluginState({\n uploadsAssemblies: { ...uploadsAssemblies,\n [uploadID]: []\n }\n });\n const assemblyOptions = new AssemblyOptions(files, this.opts);\n return assemblyOptions.build().then(assemblies => Promise.all(assemblies.map(createAssembly))).then(createdAssemblies => {\n const assemblyIDs = createdAssemblies.map(assembly => assembly.status.assembly_id);\n\n _classPrivateFieldLooseBase(this, _createAssemblyWatcher)[_createAssemblyWatcher](assemblyIDs, filteredFileIDs, uploadID);\n\n return Promise.all(createdAssemblies.map(assembly => _classPrivateFieldLooseBase(this, _connectAssembly)[_connectAssembly](assembly)));\n }) // If something went wrong before any Assemblies could be created,\n // clear all processing state.\n .catch(err => {\n files.forEach(file => {\n this.uppy.emit('preprocess-complete', file);\n this.uppy.emit('upload-error', file, err);\n });\n throw err;\n });\n }\n });\n Object.defineProperty(this, _afterUpload, {\n writable: true,\n value: (fileIDs, uploadID) => {\n const files = fileIDs.map(fileID => this.uppy.getFile(fileID)); // Only use files without errors\n\n const filteredFileIDs = files.filter(file => !file.error).map(file => file.id);\n const state = this.getPluginState(); // If we're still restoring state, wait for that to be done.\n\n if (this.restored) {\n return this.restored.then(() => {\n return _classPrivateFieldLooseBase(this, _afterUpload)[_afterUpload](filteredFileIDs, uploadID);\n });\n }\n\n const assemblyIDs = state.uploadsAssemblies[uploadID];\n\n const closeSocketConnections = () => {\n assemblyIDs.forEach(assemblyID => {\n const assembly = this.activeAssemblies[assemblyID];\n assembly.close();\n delete this.activeAssemblies[assemblyID];\n });\n }; // If we don't have to wait for encoding metadata or results, we can close\n // the socket immediately and finish the upload.\n\n\n if (!_classPrivateFieldLooseBase(this, _shouldWaitAfterUpload)[_shouldWaitAfterUpload]()) {\n closeSocketConnections();\n const assemblies = assemblyIDs.map(id => this.getAssembly(id));\n this.uppy.addResultData(uploadID, {\n transloadit: assemblies\n });\n return Promise.resolve();\n } // If no Assemblies were created for this upload, we also do not have to wait.\n // There's also no sockets or anything to close, so just return immediately.\n\n\n if (assemblyIDs.length === 0) {\n this.uppy.addResultData(uploadID, {\n transloadit: []\n });\n return Promise.resolve();\n }\n\n const incompleteFiles = files.filter(file => !hasProperty(this.completedFiles, file.id));\n incompleteFiles.forEach(file => {\n this.uppy.emit('postprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('encoding')\n });\n });\n const watcher = this.assemblyWatchers[uploadID];\n return watcher.promise.then(() => {\n closeSocketConnections();\n const assemblies = assemblyIDs.map(id => this.getAssembly(id)); // Remove the Assembly ID list for this upload,\n // it's no longer going to be used anywhere.\n\n const uploadsAssemblies = { ...this.getPluginState().uploadsAssemblies\n };\n delete uploadsAssemblies[uploadID];\n this.setPluginState({\n uploadsAssemblies\n });\n this.uppy.addResultData(uploadID, {\n transloadit: assemblies\n });\n });\n }\n });\n Object.defineProperty(this, _onError, {\n writable: true,\n value: function (err, uploadID) {\n if (err === void 0) {\n err = null;\n }\n\n const state = _this.getPluginState();\n\n const assemblyIDs = state.uploadsAssemblies[uploadID];\n assemblyIDs == null ? void 0 : assemblyIDs.forEach(assemblyID => {\n if (_this.activeAssemblies[assemblyID]) {\n _this.activeAssemblies[assemblyID].close();\n }\n });\n\n _this.client.submitError(err) // if we can't report the error that sucks\n .catch(sendErrorToConsole(err));\n }\n });\n Object.defineProperty(this, _onTusError, {\n writable: true,\n value: err => {\n if (err && /^tus: /.test(err.message)) {\n const xhr = err.originalRequest ? err.originalRequest.getUnderlyingObject() : null;\n const url = xhr && xhr.responseURL ? xhr.responseURL : null;\n this.client.submitError(err, {\n url,\n type: 'TUS_ERROR'\n }) // if we can't report the error that sucks\n .catch(sendErrorToConsole(err));\n }\n }\n });\n this.type = 'uploader';\n this.id = this.opts.id || 'Transloadit';\n this.title = 'Transloadit';\n this.defaultLocale = locale;\n const defaultOptions = {\n service: 'https://api2.transloadit.com',\n errorReporting: true,\n waitForEncoding: false,\n waitForMetadata: false,\n alwaysRunAssembly: false,\n importFromUploadURLs: false,\n signature: null,\n params: null,\n fields: {},\n getAssemblyOptions: defaultGetAssemblyOptions,\n limit: 0\n };\n this.opts = { ...defaultOptions,\n ...opts\n };\n this.i18nInit();\n const hasCustomAssemblyOptions = this.opts.getAssemblyOptions !== defaultOptions.getAssemblyOptions;\n\n if (this.opts.params) {\n AssemblyOptions.validateParams(this.opts.params);\n } else if (!hasCustomAssemblyOptions) {\n // Throw the same error that we'd throw if the `params` returned from a\n // `getAssemblyOptions()` function is null.\n AssemblyOptions.validateParams(null);\n }\n\n this.client = new Client({\n service: this.opts.service,\n client: _classPrivateFieldLooseBase(this, _getClientVersion)[_getClientVersion](),\n errorReporting: this.opts.errorReporting\n }); // Contains Assembly instances for in-progress Assemblies.\n\n this.activeAssemblies = {}; // Contains a mapping of uploadID to AssemblyWatcher\n\n this.assemblyWatchers = {}; // Contains a file IDs that have completed postprocessing before the upload\n // they belong to has entered the postprocess stage.\n\n this.completedFiles = Object.create(null);\n }\n\n install() {\n this.uppy.addPreProcessor(_classPrivateFieldLooseBase(this, _prepareUpload)[_prepareUpload]);\n this.uppy.addPostProcessor(_classPrivateFieldLooseBase(this, _afterUpload)[_afterUpload]); // We may need to close socket.io connections on error.\n\n this.uppy.on('error', _classPrivateFieldLooseBase(this, _onError)[_onError]); // Handle cancellation.\n\n this.uppy.on('cancel-all', _classPrivateFieldLooseBase(this, _onCancelAll)[_onCancelAll]); // For error reporting.\n\n this.uppy.on('upload-error', _classPrivateFieldLooseBase(this, _onTusError)[_onTusError]);\n\n if (this.opts.importFromUploadURLs) {\n // No uploader needed when importing; instead we take the upload URL from an existing uploader.\n this.uppy.on('upload-success', _classPrivateFieldLooseBase(this, _onFileUploadURLAvailable)[_onFileUploadURLAvailable]);\n } else {\n this.uppy.use(Tus, {\n // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times\n // will upload to an outdated Assembly, and we won't get socket events for it.\n //\n // To resume a Transloadit upload, we need to reconnect to the websocket, and the state that's\n // required to do that is not saved by tus-js-client's fingerprinting. We need the tus URL,\n // the Assembly URL, and the WebSocket URL, at least. We also need to know _all_ the files that\n // were added to the Assembly, so we can properly complete it. All that state is handled by\n // Golden Retriever. So, Golden Retriever is required to do resumability with the Transloadit plugin,\n // and we disable Tus's default resume implementation to prevent bad behaviours.\n storeFingerprintForResuming: false,\n // Disable Companion's retry optimisation; we need to change the endpoint on retry\n // so it can't just reuse the same tus.Upload instance server-side.\n useFastRemoteRetry: false,\n // Only send Assembly metadata to the tus endpoint.\n metaFields: ['assembly_url', 'filename', 'fieldname'],\n // Pass the limit option to @uppy/tus\n limit: this.opts.limit\n });\n }\n\n this.uppy.on('restore:get-data', _classPrivateFieldLooseBase(this, _getPersistentData)[_getPersistentData]);\n this.uppy.on('restored', _classPrivateFieldLooseBase(this, _onRestored)[_onRestored]);\n this.setPluginState({\n // Contains Assembly status objects, indexed by their ID.\n assemblies: {},\n // Contains arrays of Assembly IDs, indexed by the upload ID that they belong to.\n uploadsAssemblies: {},\n // Contains file data from Transloadit, indexed by their Transloadit-assigned ID.\n files: {},\n // Contains result data from Transloadit.\n results: []\n }); // We cannot cancel individual files because Assemblies tend to contain many files.\n\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: { ...capabilities,\n individualCancellation: false\n }\n });\n }\n\n uninstall() {\n this.uppy.removePreProcessor(_classPrivateFieldLooseBase(this, _prepareUpload)[_prepareUpload]);\n this.uppy.removePostProcessor(_classPrivateFieldLooseBase(this, _afterUpload)[_afterUpload]);\n this.uppy.off('error', _classPrivateFieldLooseBase(this, _onError)[_onError]);\n\n if (this.opts.importFromUploadURLs) {\n this.uppy.off('upload-success', _classPrivateFieldLooseBase(this, _onFileUploadURLAvailable)[_onFileUploadURLAvailable]);\n }\n\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: { ...capabilities,\n individualCancellation: true\n }\n });\n }\n\n getAssembly(id) {\n const {\n assemblies\n } = this.getPluginState();\n return assemblies[id];\n }\n\n getAssemblyFiles(assemblyID) {\n return this.uppy.getFiles().filter(file => {\n return file && file.transloadit && file.transloadit.assembly === assemblyID;\n });\n }\n\n}), _class.VERSION = \"2.0.5\", _temp);\n\nfunction _getClientVersion2() {\n const list = [`uppy-core:${this.uppy.constructor.VERSION}`, `uppy-transloadit:${this.constructor.VERSION}`, `uppy-tus:${Tus.VERSION}`];\n\n const addPluginVersion = (pluginName, versionName) => {\n const plugin = this.uppy.getPlugin(pluginName);\n\n if (plugin) {\n list.push(`${versionName}:${plugin.constructor.VERSION}`);\n }\n };\n\n if (this.opts.importFromUploadURLs) {\n addPluginVersion('XHRUpload', 'uppy-xhr-upload');\n addPluginVersion('AwsS3', 'uppy-aws-s3');\n addPluginVersion('AwsS3Multipart', 'uppy-aws-s3-multipart');\n }\n\n addPluginVersion('Dropbox', 'uppy-dropbox');\n addPluginVersion('Box', 'uppy-box');\n addPluginVersion('Facebook', 'uppy-facebook');\n addPluginVersion('GoogleDrive', 'uppy-google-drive');\n addPluginVersion('Instagram', 'uppy-instagram');\n addPluginVersion('OneDrive', 'uppy-onedrive');\n addPluginVersion('Zoom', 'uppy-zoom');\n addPluginVersion('Url', 'uppy-url');\n return list.join(',');\n}\n\nfunction _attachAssemblyMetadata2(file, status) {\n // Add the metadata parameters Transloadit needs.\n const meta = { ...file.meta,\n assembly_url: status.assembly_url,\n filename: file.name,\n fieldname: 'file'\n }; // Add Assembly-specific Tus endpoint.\n\n const tus = { ...file.tus,\n endpoint: status.tus_url,\n // Include X-Request-ID headers for better debugging.\n addRequestId: true\n }; // Set Companion location. We only add this, if 'file' has the attribute\n // remote, because this is the criteria to identify remote files.\n // We only replace the hostname for Transloadit's companions, so that\n // people can also self-host them while still using Transloadit for encoding.\n\n let {\n remote\n } = file;\n\n if (file.remote && TL_COMPANION.test(file.remote.companionUrl)) {\n const newHost = status.companion_url.replace(/\\/$/, '');\n const path = file.remote.url.replace(file.remote.companionUrl, '').replace(/^\\//, '');\n remote = { ...file.remote,\n companionUrl: newHost,\n url: `${newHost}/${path}`\n };\n } // Store the Assembly ID this file is in on the file under the `transloadit` key.\n\n\n const newFile = { ...file,\n transloadit: {\n assembly: status.assembly_id\n }\n }; // Only configure the Tus plugin if we are uploading straight to Transloadit (the default).\n\n if (!this.opts.importFromUploadURLs) {\n Object.assign(newFile, {\n meta,\n tus,\n remote\n });\n }\n\n return newFile;\n}\n\nfunction _createAssembly2(fileIDs, uploadID, options) {\n this.uppy.log('[Transloadit] Create Assembly');\n return this.client.createAssembly({\n params: options.params,\n fields: options.fields,\n expectedFiles: fileIDs.length,\n signature: options.signature\n }).then(newAssembly => {\n const assembly = new Assembly(newAssembly);\n const {\n status\n } = assembly;\n const assemblyID = status.assembly_id;\n const {\n assemblies,\n uploadsAssemblies\n } = this.getPluginState();\n this.setPluginState({\n // Store the Assembly status.\n assemblies: { ...assemblies,\n [assemblyID]: status\n },\n // Store the list of Assemblies related to this upload.\n uploadsAssemblies: { ...uploadsAssemblies,\n [uploadID]: [...uploadsAssemblies[uploadID], assemblyID]\n }\n });\n const {\n files\n } = this.uppy.getState();\n const updatedFiles = {};\n fileIDs.forEach(id => {\n updatedFiles[id] = _classPrivateFieldLooseBase(this, _attachAssemblyMetadata)[_attachAssemblyMetadata](this.uppy.getFile(id), status);\n });\n this.uppy.setState({\n files: { ...files,\n ...updatedFiles\n }\n });\n this.uppy.emit('transloadit:assembly-created', status, fileIDs);\n this.uppy.log(`[Transloadit] Created Assembly ${assemblyID}`);\n return assembly;\n }).catch(err => {\n const error = new Error(`${this.i18n('creatingAssemblyFailed')}: ${err.message}`);\n error.cause = err; // Reject the promise.\n\n throw error;\n });\n}\n\nfunction _createAssemblyWatcher2(assemblyID, fileIDs, uploadID) {\n // AssemblyWatcher tracks completion states of all Assemblies in this upload.\n const watcher = new AssemblyWatcher(this.uppy, assemblyID);\n watcher.on('assembly-complete', id => {\n const files = this.getAssemblyFiles(id);\n files.forEach(file => {\n this.completedFiles[file.id] = true;\n this.uppy.emit('postprocess-complete', file);\n });\n });\n watcher.on('assembly-error', (id, error) => {\n // Clear postprocessing state for all our files.\n const files = this.getAssemblyFiles(id);\n files.forEach(file => {\n // TODO Maybe make a postprocess-error event here?\n this.uppy.emit('upload-error', file, error);\n this.uppy.emit('postprocess-complete', file);\n });\n });\n this.assemblyWatchers[uploadID] = watcher;\n}\n\nfunction _shouldWaitAfterUpload2() {\n return this.opts.waitForEncoding || this.opts.waitForMetadata;\n}\n\nfunction _reserveFiles2(assembly, fileIDs) {\n return Promise.all(fileIDs.map(fileID => {\n const file = this.uppy.getFile(fileID);\n return this.client.reserveFile(assembly.status, file);\n }));\n}\n\nfunction _findFile2(uploadedFile) {\n const files = this.uppy.getFiles();\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i]; // Completed file upload.\n\n if (file.uploadURL === uploadedFile.tus_upload_url) {\n return file;\n } // In-progress file upload.\n\n\n if (file.tus && file.tus.uploadUrl === uploadedFile.tus_upload_url) {\n return file;\n }\n\n if (!uploadedFile.is_tus_file) {\n // Fingers-crossed check for non-tus uploads, eg imported from S3.\n if (file.name === uploadedFile.name && file.size === uploadedFile.size) {\n return file;\n }\n }\n }\n\n return undefined;\n}\n\nfunction _onFileUploadComplete2(assemblyId, uploadedFile) {\n const state = this.getPluginState();\n\n const file = _classPrivateFieldLooseBase(this, _findFile)[_findFile](uploadedFile);\n\n if (!file) {\n this.uppy.log('[Transloadit] Couldn’t file the file, it was likely removed in the process');\n return;\n }\n\n this.setPluginState({\n files: { ...state.files,\n [uploadedFile.id]: {\n assembly: assemblyId,\n id: file.id,\n uploadedFile\n }\n }\n });\n this.uppy.emit('transloadit:upload', uploadedFile, this.getAssembly(assemblyId));\n}\n\nfunction _onResult2(assemblyId, stepName, result) {\n const state = this.getPluginState();\n const file = state.files[result.original_id]; // The `file` may not exist if an import robot was used instead of a file upload.\n\n result.localId = file ? file.id : null; // eslint-disable-line no-param-reassign\n\n const entry = {\n result,\n stepName,\n id: result.id,\n assembly: assemblyId\n };\n this.setPluginState({\n results: [...state.results, entry]\n });\n this.uppy.emit('transloadit:result', stepName, result, this.getAssembly(assemblyId));\n}\n\nfunction _onAssemblyFinished2(status) {\n const url = status.assembly_ssl_url;\n this.client.getAssemblyStatus(url).then(finalStatus => {\n const assemblyId = finalStatus.assembly_id;\n const state = this.getPluginState();\n this.setPluginState({\n assemblies: { ...state.assemblies,\n [assemblyId]: finalStatus\n }\n });\n this.uppy.emit('transloadit:complete', finalStatus);\n });\n}\n\nasync function _cancelAssembly2(assembly) {\n await this.client.cancelAssembly(assembly); // TODO bubble this through AssemblyWatcher so its event handlers can clean up correctly\n\n this.uppy.emit('transloadit:assembly-cancelled', assembly);\n}\n\nfunction _connectAssembly2(assembly) {\n const {\n status\n } = assembly;\n const id = status.assembly_id;\n this.activeAssemblies[id] = assembly; // Sync local `assemblies` state\n\n assembly.on('status', newStatus => {\n const {\n assemblies\n } = this.getPluginState();\n this.setPluginState({\n assemblies: { ...assemblies,\n [id]: newStatus\n }\n });\n });\n assembly.on('upload', file => {\n _classPrivateFieldLooseBase(this, _onFileUploadComplete)[_onFileUploadComplete](id, file);\n });\n assembly.on('error', error => {\n error.assembly = assembly.status; // eslint-disable-line no-param-reassign\n\n this.uppy.emit('transloadit:assembly-error', assembly.status, error);\n });\n assembly.on('executing', () => {\n this.uppy.emit('transloadit:assembly-executing', assembly.status);\n });\n\n if (this.opts.waitForEncoding) {\n assembly.on('result', (stepName, result) => {\n _classPrivateFieldLooseBase(this, _onResult)[_onResult](id, stepName, result);\n });\n }\n\n if (this.opts.waitForEncoding) {\n assembly.on('finished', () => {\n _classPrivateFieldLooseBase(this, _onAssemblyFinished)[_onAssemblyFinished](assembly.status);\n });\n } else if (this.opts.waitForMetadata) {\n assembly.on('metadata', () => {\n _classPrivateFieldLooseBase(this, _onAssemblyFinished)[_onAssemblyFinished](assembly.status);\n });\n } // No need to connect to the socket if the Assembly has completed by now.\n\n\n if (assembly.ok === 'ASSEMBLY_COMPLETE') {\n return assembly;\n }\n\n assembly.connect();\n return assembly;\n}\n\nmodule.exports.COMPANION = COMPANION;\nmodule.exports.COMPANION_PATTERN = ALLOWED_COMPANION_PATTERN;"],"sourceRoot":""}
|