termdock 1.4.269 → 1.4.271
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/dist/client/assets/{App--r7RuswE.js → App-D3GMpftt.js} +43 -43
- package/dist/client/assets/App-D3GMpftt.js.br +0 -0
- package/dist/client/assets/App-D3GMpftt.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-Df7-QnOp.js → ChangeWalkthroughPanel-C218u7SN.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-C218u7SN.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-C218u7SN.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-DqCvsG34.js → DagPlayground-D0RdKW7B.js} +1 -1
- package/dist/client/assets/DagPlayground-D0RdKW7B.js.br +0 -0
- package/dist/client/assets/DagPlayground-D0RdKW7B.js.gz +0 -0
- package/dist/client/assets/{DiffLab-6zvF9Nax.js → DiffLab-B-64zTi5.js} +42 -12
- package/dist/client/assets/DiffLab-B-64zTi5.js.br +0 -0
- package/dist/client/assets/DiffLab-B-64zTi5.js.gz +0 -0
- package/dist/client/assets/{DiffReview-gvOLe661.js → DiffReview-C4WHbN50.js} +1 -1
- package/dist/client/assets/DiffReview-C4WHbN50.js.br +0 -0
- package/dist/client/assets/DiffReview-C4WHbN50.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-BUAtsrSJ.js → DiffReviewLab-m2uqIPwo.js} +1 -1
- package/dist/client/assets/DiffReviewLab-m2uqIPwo.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-m2uqIPwo.js.gz +0 -0
- package/dist/client/assets/DiffViewer-Crz6zQeB.js +37 -0
- package/dist/client/assets/DiffViewer-Crz6zQeB.js.br +0 -0
- package/dist/client/assets/DiffViewer-Crz6zQeB.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-BzJVoE_R.js → ModelPreview-DALNyVZi.js} +1 -1
- package/dist/client/assets/ModelPreview-DALNyVZi.js.br +0 -0
- package/dist/client/assets/ModelPreview-DALNyVZi.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-BaBLmdFY.js → RightSidebar-Bp1M9e90.js} +46 -46
- package/dist/client/assets/RightSidebar-Bp1M9e90.js.br +0 -0
- package/dist/client/assets/RightSidebar-Bp1M9e90.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-BbT6N4wQ.js → abnfDiagram-VCTEODGH-Cwq9fJs5.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-Cwq9fJs5.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-Cwq9fJs5.js.gz +0 -0
- package/dist/client/assets/{app-DCC2Pki1.js → app-Cxpk5OKD.js} +3 -3
- package/dist/client/assets/app-Cxpk5OKD.js.br +0 -0
- package/dist/client/assets/app-Cxpk5OKD.js.gz +0 -0
- package/dist/client/assets/{arc-D2SgTEaJ.js → arc-CDP5zS1s.js} +1 -1
- package/dist/client/assets/arc-CDP5zS1s.js.br +0 -0
- package/dist/client/assets/arc-CDP5zS1s.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-K88NXr0C.js → architectureDiagram-5GKGNRK7-DPOBmyO0.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DPOBmyO0.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DPOBmyO0.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-DlVHOb6O.js → blockDiagram-I7D4REHJ-DJSDUCYh.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-DJSDUCYh.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DJSDUCYh.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-DKqMikT-.js → c4Diagram-7LVT6UL2-BJraDT50.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BJraDT50.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BJraDT50.js.gz +0 -0
- package/dist/client/assets/channel-DJOgErEk.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-DEVqpD5d.js → chunk-2Q5K7J3B-Dsfjvnie.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-LRLeMiUW.js → chunk-5VM5RSS4-7sPpLhTo.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-DaPxcSH5.js → chunk-F27PBJKO-SNvNotCY.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-SNvNotCY.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-SNvNotCY.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-CKvFYp0b.js → chunk-IMKFNOWR-D0tnPId8.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-D0tnPId8.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-D0tnPId8.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-CTT8841x.js → chunk-JWPE2WC7-Bsz2BLyT.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BntrWhUu.js → chunk-POPQ4Y6H-bvV2ZgHY.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-Dku7-lW7.js → chunk-SVP7TREG-BkTNG0Wd.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-BkTNG0Wd.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-BkTNG0Wd.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-CRKGdIuN.js → chunk-TICWLB2K-C0e9ZY7l.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-C0e9ZY7l.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-C0e9ZY7l.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-DCuScH2W.js → chunk-XXDRQBXY-BVO2Skec.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-B-Ng01Jy.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-B-Ng01Jy.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-D4bCAhgH.js → cose-bilkent-JH36ORCC-BYrj3pJD.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BYrj3pJD.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BYrj3pJD.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-BXxrTkIn.js → cynefin-OW5HDTMX-BLueY7LI.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-BLueY7LI.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-BLueY7LI.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-DH-JBXRO.js → cynefinDiagram-5FMLGOSQ-BQe9GpHs.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQe9GpHs.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQe9GpHs.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-CKnImtBM.js → dagre-GXQ25YYZ-CRdRvnmM.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-CRdRvnmM.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CRdRvnmM.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-DInUTNtP.js → diagram-S7CK7UJ4-CJU5cFBf.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-CJU5cFBf.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CJU5cFBf.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-BzfdOyaG.js → diagram-UQ7AKVKN-MnZJQ2ws.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-MnZJQ2ws.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-MnZJQ2ws.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-bVosICmB.js → diagram-VSXAHHWV-yrJNSRYG.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-yrJNSRYG.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-yrJNSRYG.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-BUaLNFYz.js → diagram-VX7I27RA-BZfpCcvu.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-BZfpCcvu.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BZfpCcvu.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-DAUkkL9_.js → diagram-Z3DM3KII-B_JF7UFB.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-B_JF7UFB.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-B_JF7UFB.js.gz +0 -0
- package/dist/client/assets/{diffWorker-Czt5l8iy.js → diffWorker-CXk6Uh2K.js} +28 -29
- package/dist/client/assets/diffWorker-CXk6Uh2K.js.br +0 -0
- package/dist/client/assets/diffWorker-CXk6Uh2K.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-C-se8H0Y.js → ebnfDiagram-PWID7BFC-Bxy5fI3U.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Bxy5fI3U.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Bxy5fI3U.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CG6x1OqJ.js → erDiagram-RLTQ6QDP-BO1OLT5a.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-BO1OLT5a.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-BO1OLT5a.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-CiTMZP2n.js → flowDiagram-HODETNUW-_ph0TMva.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-_ph0TMva.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-_ph0TMva.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BpM-Xxm8.js → ganttDiagram-EL5Y4UJY-BLfYobp9.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BLfYobp9.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BLfYobp9.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-Du2umsFD.js → gestureArbiter-C5OWgbj5.js} +1 -1
- package/dist/client/assets/gestureArbiter-C5OWgbj5.js.br +0 -0
- package/dist/client/assets/gestureArbiter-C5OWgbj5.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-D4UhrsZS.js → gitGraphDiagram-WWUBYQGX-BG2QJORF.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BG2QJORF.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BG2QJORF.js.gz +0 -0
- package/dist/client/assets/{index--h47b0ln.css → index-B8gcsZys.css} +1 -1
- package/dist/client/assets/{index--h47b0ln.css.br → index-B8gcsZys.css.br} +0 -0
- package/dist/client/assets/{index--h47b0ln.css.gz → index-B8gcsZys.css.gz} +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-B_64artu.js → infoDiagram-27XIBGKW-DlksX7PW.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BXl8es4M.js → ishikawaDiagram-5VMMS53U-D9VUol19.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-D9VUol19.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-D9VUol19.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-BDmGKZs3.js → journeyDiagram-3NMN7TZE-DLunjIVY.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DLunjIVY.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DLunjIVY.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-BKjheeYf.js → kanban-definition-UXKFOSKX-z6LdqA9k.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-z6LdqA9k.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-z6LdqA9k.js.gz +0 -0
- package/dist/client/assets/{layout-B7t1dEXe.js → layout-5voc-0J-.js} +1 -1
- package/dist/client/assets/layout-5voc-0J-.js.br +0 -0
- package/dist/client/assets/layout-5voc-0J-.js.gz +0 -0
- package/dist/client/assets/{linear-DEmcfJwb.js → linear-DXZmUAxS.js} +1 -1
- package/dist/client/assets/linear-DXZmUAxS.js.br +0 -0
- package/dist/client/assets/linear-DXZmUAxS.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-cr3MFg62.js → mermaid.core-BiuAc_1Z.js} +5 -5
- package/dist/client/assets/mermaid.core-BiuAc_1Z.js.br +0 -0
- package/dist/client/assets/mermaid.core-BiuAc_1Z.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-Pqk3YsZA.js → mindmap-definition-YA3MSWOX-Bo-sudh-.js} +2 -2
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Bo-sudh-.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Bo-sudh-.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-zDAux6sN.js → passwordBootstrap-B5ZngKXH.js} +1 -1
- package/dist/client/assets/passwordBootstrap-B5ZngKXH.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-B5ZngKXH.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-BoII79ja.js → pegDiagram-XKGWAZYB-BRRfOBil.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-BRRfOBil.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BRRfOBil.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-CLP3akcm.js → pieDiagram-E7YTZNPT-DPj6T7rJ.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-DPj6T7rJ.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DPj6T7rJ.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BQjxA6xd.js → quadrantDiagram-AXDQQJYC-LIHObTPR.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-LIHObTPR.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-LIHObTPR.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-CvOBB6Kz.js → railroadDiagram-O6MQD6OU-Ca-5xQW5.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-Ca-5xQW5.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-Ca-5xQW5.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-DhvF4-YJ.js → referenceLongPress-C9-wHXE8.js} +1 -1
- package/dist/client/assets/referenceLongPress-C9-wHXE8.js.br +0 -0
- package/dist/client/assets/referenceLongPress-C9-wHXE8.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-BfnQwXw8.js → requirementDiagram-BXWQKSXE-BSWKjnCS.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BSWKjnCS.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BSWKjnCS.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-rj4XdP2T.js → sankeyDiagram-P5KCCOFB-B_AI8Eyl.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B_AI8Eyl.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B_AI8Eyl.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BFtfWTMp.js → sequenceDiagram-WJ2MYXX4-DRRLVfAr.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DRRLVfAr.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DRRLVfAr.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-BbzC5eVk.js → sizeCapture-INFHLROL-DDbIEMNY.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-DDbIEMNY.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DDbIEMNY.js.gz +0 -0
- package/dist/client/assets/{sparkles-B8gtfPrQ.js → sparkles-DWhNuQTx.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-CF9cUXyi.js → stateDiagram-D77RDMKH-CYxjYwsm.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CYxjYwsm.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CYxjYwsm.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CbfR3Vd4.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-BB2FN27h.js → swimlanes-42K2YHIH-Cm-hHwV-.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-Cm-hHwV-.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-Cm-hHwV-.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CDrfZEW2.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Cy5znMl0.js → timeline-definition-24CTP7MA-B8M6kRMB.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-B8M6kRMB.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-B8M6kRMB.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-C7GRge3t.js → triangle-alert-Dg2aJQyG.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-BxbDCMXP.js → vennDiagram-4TSXK5OY-DQ0EhNEv.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-DQ0EhNEv.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DQ0EhNEv.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-D_ApxRrj.js → wardleyDiagram-VM6X3IG4-CYB1GjF2.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CYB1GjF2.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CYB1GjF2.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DYpLzNya.js → xychartDiagram-S5SC5T6Z-DRT6UXmt.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DRT6UXmt.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DRT6UXmt.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/package.json +1 -1
- package/runtime-manifest.json +2 -2
- package/dist/client/assets/App--r7RuswE.js.br +0 -0
- package/dist/client/assets/App--r7RuswE.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-Df7-QnOp.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-Df7-QnOp.js.gz +0 -0
- package/dist/client/assets/DagPlayground-DqCvsG34.js.br +0 -0
- package/dist/client/assets/DagPlayground-DqCvsG34.js.gz +0 -0
- package/dist/client/assets/DiffLab-6zvF9Nax.js.br +0 -0
- package/dist/client/assets/DiffLab-6zvF9Nax.js.gz +0 -0
- package/dist/client/assets/DiffReview-gvOLe661.js.br +0 -0
- package/dist/client/assets/DiffReview-gvOLe661.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-BUAtsrSJ.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-BUAtsrSJ.js.gz +0 -0
- package/dist/client/assets/DiffViewer-CSIpMRDj.js +0 -37
- package/dist/client/assets/DiffViewer-CSIpMRDj.js.br +0 -0
- package/dist/client/assets/DiffViewer-CSIpMRDj.js.gz +0 -0
- package/dist/client/assets/ModelPreview-BzJVoE_R.js.br +0 -0
- package/dist/client/assets/ModelPreview-BzJVoE_R.js.gz +0 -0
- package/dist/client/assets/RightSidebar-BaBLmdFY.js.br +0 -0
- package/dist/client/assets/RightSidebar-BaBLmdFY.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-BbT6N4wQ.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-BbT6N4wQ.js.gz +0 -0
- package/dist/client/assets/app-DCC2Pki1.js.br +0 -0
- package/dist/client/assets/app-DCC2Pki1.js.gz +0 -0
- package/dist/client/assets/arc-D2SgTEaJ.js.br +0 -0
- package/dist/client/assets/arc-D2SgTEaJ.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-K88NXr0C.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-K88NXr0C.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DlVHOb6O.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DlVHOb6O.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DKqMikT-.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DKqMikT-.js.gz +0 -0
- package/dist/client/assets/channel-Uyb4U6IY.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-DaPxcSH5.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-DaPxcSH5.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CKvFYp0b.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CKvFYp0b.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Dku7-lW7.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Dku7-lW7.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CRKGdIuN.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CRKGdIuN.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-DgGaiyJi.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-DgGaiyJi.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-D4bCAhgH.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-D4bCAhgH.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-BXxrTkIn.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-BXxrTkIn.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DH-JBXRO.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DH-JBXRO.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CKnImtBM.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CKnImtBM.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-DInUTNtP.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-DInUTNtP.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BzfdOyaG.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BzfdOyaG.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-bVosICmB.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-bVosICmB.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BUaLNFYz.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BUaLNFYz.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DAUkkL9_.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DAUkkL9_.js.gz +0 -0
- package/dist/client/assets/diffWorker-Czt5l8iy.js.br +0 -0
- package/dist/client/assets/diffWorker-Czt5l8iy.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-C-se8H0Y.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-C-se8H0Y.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-CG6x1OqJ.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-CG6x1OqJ.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-CiTMZP2n.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-CiTMZP2n.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BpM-Xxm8.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BpM-Xxm8.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-Du2umsFD.js.br +0 -0
- package/dist/client/assets/gestureArbiter-Du2umsFD.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-D4UhrsZS.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-D4UhrsZS.js.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BXl8es4M.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BXl8es4M.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BDmGKZs3.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BDmGKZs3.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BKjheeYf.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BKjheeYf.js.gz +0 -0
- package/dist/client/assets/layout-B7t1dEXe.js.br +0 -0
- package/dist/client/assets/layout-B7t1dEXe.js.gz +0 -0
- package/dist/client/assets/linear-DEmcfJwb.js.br +0 -0
- package/dist/client/assets/linear-DEmcfJwb.js.gz +0 -0
- package/dist/client/assets/mermaid.core-cr3MFg62.js.br +0 -0
- package/dist/client/assets/mermaid.core-cr3MFg62.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Pqk3YsZA.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Pqk3YsZA.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-zDAux6sN.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-zDAux6sN.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BoII79ja.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BoII79ja.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CLP3akcm.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CLP3akcm.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BQjxA6xd.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BQjxA6xd.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CvOBB6Kz.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CvOBB6Kz.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-DhvF4-YJ.js.br +0 -0
- package/dist/client/assets/referenceLongPress-DhvF4-YJ.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BfnQwXw8.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BfnQwXw8.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-rj4XdP2T.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-rj4XdP2T.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BFtfWTMp.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BFtfWTMp.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-BbzC5eVk.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-BbzC5eVk.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CF9cUXyi.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CF9cUXyi.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CZVJAwnv.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-BB2FN27h.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-BB2FN27h.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-yKb8MUvL.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-Cy5znMl0.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-Cy5znMl0.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-BxbDCMXP.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-BxbDCMXP.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-D_ApxRrj.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-D_ApxRrj.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DYpLzNya.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DYpLzNya.js.gz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-
|
|
2
|
-
import{r as Fc,a as Lm,g as Pf}from"./react-XDCjal2T.js";import{b as O,R as Ge,r as Mc}from"./dnd-BCFAPC0L.js";import{L as Bm,l as _m}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();const Om="modulepreload",Dm=function(t){return"/"+t},Vl={},Qt=function(e,n,r){let o=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(n.map(l=>{if(l=Dm(l),l in Vl)return;Vl[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":Om,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var ki={exports:{}},Cr={};var Xl;function Fm(){if(Xl)return Cr;Xl=1;var t=Fc(),e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)r.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return Cr.Fragment=n,Cr.jsx=i,Cr.jsxs=i,Cr}var Yl;function Mm(){return Yl||(Yl=1,ki.exports=Fm()),ki.exports}var p=Mm();const mn="termdock-secure-target-v1",jc="termdock-secure-entry-v1",jm=new Set([mn,jc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),Ro=typeof Storage>"u"?void 0:Storage.prototype.getItem,Ci=typeof Storage>"u"?void 0:Storage.prototype.setItem,Zl="termdock-secure-legacy-owner",Ks=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function Hm(){if(typeof window>"u")return null;try{if(Ks){const e=new URLSearchParams(location.search).get("termdock-workspace"),n=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),r=Array.isArray(n)?n.find(o=>o?.targetPeerId===e):void 0;return r&&typeof r.url=="string"&&typeof r.targetPeerId=="string"?{...r,serviceName:r.label||r.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(mn)??localStorage.getItem(mn)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let zs=Hm();const Vn=zs?.targetPeerId??"unpaired";function io(){return zs}function Nf(t){if(zs=t,Ks)return;const e=JSON.stringify(t);sessionStorage.setItem(mn,e),localStorage.setItem(mn,e)}function Um(){zs=null,!Ks&&(localStorage.removeItem(mn),sessionStorage.removeItem(mn),localStorage.removeItem(jc))}function Yr(t,e=Vn){return jm.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function $m(t){if(!(!Ro||!Ci))try{if(Ro.call(localStorage,Zl))return;Ci.call(localStorage,Zl,t);for(const n of[localStorage,sessionStorage]){const r=Array.from({length:n.length},(o,s)=>n.key(s)).filter(o=>!!o);for(const o of r){if(o.startsWith("termdock-service:")||Yr(o,t)===o)continue;const s=Yr(o,t),i=Ro.call(n,o);i!==null&&Ro.call(n,s)===null&&Ci.call(n,s,i)}}}catch{}}let Jl=!1;function qm(){if(Jl||typeof Storage>"u")return;Jl=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,n=Storage.prototype.removeItem;Storage.prototype.getItem=function(r){return t.call(this,Yr(String(r)))},Storage.prototype.setItem=function(r,o){e.call(this,Yr(String(r)),o)},Storage.prototype.removeItem=function(r){n.call(this,Yr(String(r)))}}qm();const Ws="termdock.federation.connections.v1",_a="termdock:services-changed",Hc="termdock-secure-removed-services",us=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Uc(){try{const t=JSON.parse(localStorage.getItem(Hc)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Oe(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const n=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);n.protocol==="wss:"&&(n.protocol="https:"),n.protocol==="ws:"&&(n.protocol="http:");const r=["localhost","127.0.0.1","[::1]"].includes(n.hostname);if(!["https:","http:"].includes(n.protocol)||n.protocol==="http:"&&!r)throw new Error("请使用 HTTPS 服务地址。");if(n.username||n.password||n.search||n.hash||!["/","/api/federation/secure"].includes(n.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return n.origin}function Gs(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const n=Oe(e.url),r=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(n).host;return{id:typeof e.id=="string"&&e.id?e.id:r||n,url:n,label:o,...r?{targetPeerId:r}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Oe(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:Oe(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function kt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Lf(t){const e=[];for(const n of t){const r=e.findIndex(o=>kt(o,n));r<0?e.push(n):e[r]={...e[r],...n,id:e[r].id}}return e}function yo(){return typeof window>"u"?void 0:window.termdockDesktop}function wn(){try{const t=JSON.parse(localStorage.getItem(Ws)||"[]");return Array.isArray(t)?Lf(t.map(Gs).filter(e=>!!e)):[]}catch{return[]}}function Bf(t){localStorage.setItem(Ws,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(_a))}let Ir;async function ze(){const t=yo();if(!t?.serviceConnections||!t.saveServiceConnection)return wn();if(Ir)return Ir;Ir=(async()=>{let e=await t.serviceConnections();const n=wn();for(const r of n)e.some(o=>kt(o,r))||(e=await(t.importServiceConnection||t.saveServiceConnection)(r));return n.length&&localStorage.removeItem(Ws),e})();try{return await Ir}finally{Ir=void 0}}async function Pt(t){const e=Gs(t);if(!e)throw new Error("服务地址无效。");const n=yo();if(n?.saveServiceConnection)return n.saveServiceConnection(e);const r=wn(),o=r.find(a=>a.id===e.id||kt(a,e)),s=new Set([...us(e),...o?us(o):[]]);localStorage.setItem(Hc,JSON.stringify(Uc().filter(a=>!s.has(a))));const i=Lf([...r.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return Bf(i),i}async function Km(t){const e=Gs(t);if(!e)throw new Error("服务地址无效。");const n=yo();if(n?.importServiceConnection)return n.importServiceConnection(e);if(n?.serviceConnections){const r=await n.serviceConnections();return r.some(o=>kt(o,e))?Pt(e):r}return us(e).some(r=>Uc().includes(r))?wn():Pt(e)}async function zm(t){const e=yo();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const n=wn(),r=n.find(s=>s.id===t);r&&localStorage.setItem(Hc,JSON.stringify([...new Set([...Uc(),...us(r)])].slice(-768)));const o=n.filter(s=>s.id!==t);return Bf(o),o}function Vs(t){const e=r=>{(r.key===Ws||r.key===null)&&t()};window.addEventListener(_a,t),window.addEventListener("storage",e);const n=yo()?.onServiceConnections?.(t);return()=>{window.removeEventListener(_a,t),window.removeEventListener("storage",e),n?.()}}class Wm extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let Gm=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},ct=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class _f extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Of extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class Vm extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class Xm extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Xs extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const Df=Symbol.for("@libp2p/peer-id");function Ym(t){return typeof t?.handleEvent=="function"}function Zm(t){return t===!0||t===!1}function Jm(t){return Zm(t)?t:t?.capture??!1}function Oa(t){const e={capture:Jm(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function Ql(t,e){return Oa(t).capture===Oa(e).capture}class Qm extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const n=this.#e.get(e);return n==null?0:n.length}addEventListener(e,n,r){const o=Oa(r);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,n,o),Ym(n)?n.handleEvent(l):n(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==n?!1:Ql(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,n,o)};o.signal?.addEventListener("abort",c),i.push({callback:n,wrapper:s,options:o,onAbort:c})}removeEventListener(e,n,r){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,n??null,r);return}this.#e.set(e,o.filter(s=>s.callback===n&&Ql(s.options,r)?(super.removeEventListener(e,s.wrapper,r),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,n={}){return this.dispatchEvent(new CustomEvent(e,n))}}const ew=Symbol.for("@libp2p/service-capabilities");function tw(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function Ys(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function nw(t){return new TextEncoder().encode(t)}function rw(t){return new TextDecoder().decode(t)}function ow(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(n[i]!==255)throw new TypeError(s+" is ambiguous");n[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,b=0,w=0,R=g.length;w!==R&&g[w]===0;)w++,m++;for(var y=(R-w)*d+1>>>0,k=new Uint8Array(y);w!==R;){for(var N=g[w],x=0,T=y-1;(N!==0||x<b)&&T!==-1;T--,x++)N+=256*k[T]>>>0,k[T]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");b=x,w++}for(var S=y-b;S!==y&&k[S]===0;)S++;for(var v=c.repeat(m);S<y;++S)v+=t.charAt(k[S]);return v}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var b=0,w=0;g[m]===c;)b++,m++;for(var R=(g.length-m)*l+1>>>0,y=new Uint8Array(R);g[m];){var k=n[g.charCodeAt(m)];if(k===255)return;for(var N=0,x=R-1;(k!==0||N<w)&&x!==-1;x--,N++)k+=a*y[x]>>>0,y[x]=k%256>>>0,k=k/256>>>0;if(k!==0)throw new Error("Non-zero carry");w=N,m++}if(g[m]!==" "){for(var T=R-w;T!==R&&y[T]===0;)T++;for(var S=new Uint8Array(b+(R-T)),v=b;T!==R;)S[v++]=y[T++];return S}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var sw=ow,iw=sw;class aw{name;prefix;baseEncode;constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class cw{name;prefix;baseDecode;prefixCodePoint;constructor(e,n,r){this.name=e,this.prefix=n;const o=n.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ff(this,e)}}class lw{decoders;constructor(e){this.decoders=e}or(e){return Ff(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r!=null)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Ff(t,e){return new lw({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class dw{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,n,r,o){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=o,this.encoder=new aw(e,n,r),this.decoder=new cw(e,n,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function Zs({name:t,prefix:e,encode:n,decode:r}){return new dw(t,e,n,r)}function bo({name:t,prefix:e,alphabet:n}){const{encode:r,decode:o}=iw(n,t);return Zs({prefix:e,name:t,encode:r,decode:s=>Ys(o(s))})}function uw(t,e,n,r){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*n/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${r} character`);a=a<<n|d,i+=n,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=n||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function fw(t,e,n){const r=e[e.length-1]==="=",o=(1<<n)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>n;)i-=n,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<n-i]),r)for(;(s.length*n&7)!==0;)s+="=";return s}function hw(t){const e={};for(let n=0;n<t.length;++n)e[t[n]]=n;return e}function Pe({name:t,prefix:e,bitsPerChar:n,alphabet:r}){const o=hw(r);return Zs({prefix:e,name:t,encode(s){return fw(s,r,n)},decode(s){return uw(s,o,n,t)}})}const Fe=bo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),pw=bo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),gw=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Fe,base58flickr:pw},Symbol.toStringTag,{value:"Module"})),Zr=Pe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),mw=Pe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ww=Pe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),yw=Pe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),bw=Pe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),vw=Pe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Sw=Pe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),xw=Pe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ew=Pe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Aw=Object.freeze(Object.defineProperty({__proto__:null,base32:Zr,base32hex:bw,base32hexpad:Sw,base32hexpadupper:xw,base32hexupper:vw,base32pad:ww,base32padupper:yw,base32upper:mw,base32z:Ew},Symbol.toStringTag,{value:"Module"})),Jo=bo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),kw=bo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Cw=Object.freeze(Object.defineProperty({__proto__:null,base36:Jo,base36upper:kw},Symbol.toStringTag,{value:"Module"}));var Iw=Mf,ed=128,Rw=-128,Tw=Math.pow(2,31);function Mf(t,e,n){e=e||[],n=n||0;for(var r=n;t>=Tw;)e[n++]=t&255|ed,t/=128;for(;t&Rw;)e[n++]=t&255|ed,t>>>=7;return e[n]=t|0,Mf.bytes=n-r+1,e}var Pw=Da,Nw=128,td=127;function Da(t,r){var n=0,r=r||0,o=0,s=r,i,a=t.length;do{if(s>=a)throw Da.bytes=0,new RangeError("Could not decode varint");i=t[s++],n+=o<28?(i&td)<<o:(i&td)*Math.pow(2,o),o+=7}while(i>=Nw);return Da.bytes=s-r,n}var Lw=Math.pow(2,7),Bw=Math.pow(2,14),_w=Math.pow(2,21),Ow=Math.pow(2,28),Dw=Math.pow(2,35),Fw=Math.pow(2,42),Mw=Math.pow(2,49),jw=Math.pow(2,56),Hw=Math.pow(2,63),Uw=function(t){return t<Lw?1:t<Bw?2:t<_w?3:t<Ow?4:t<Dw?5:t<Fw?6:t<Mw?7:t<jw?8:t<Hw?9:10},$w={encode:Iw,decode:Pw,encodingLength:Uw},fs=$w;function Fa(t,e=0){return[fs.decode(t,e),fs.decode.bytes]}function hs(t,e,n=0){return fs.encode(t,e,n),e}function ps(t){return fs.encodingLength(t)}function vo(t,e){const n=e.byteLength,r=ps(t),o=r+ps(n),s=new Uint8Array(o+n);return hs(t,s,0),hs(n,s,r),s.set(e,o),new $c(t,n,e,s)}function jf(t){const e=Ys(t),[n,r]=Fa(e),[o,s]=Fa(e.subarray(r)),i=e.subarray(r+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new $c(n,o,i,e)}function qw(t,e){if(t===e)return!0;{const n=e;return t.code===n.code&&t.size===n.size&&n.bytes instanceof Uint8Array&&tw(t.bytes,n.bytes)}}class $c{code;size;digest;bytes;constructor(e,n,r,o){this.code=e,this.size=n,this.digest=r,this.bytes=o}}function nd(t,e){const{bytes:n,version:r}=t;return r===0?zw(n,Ma(t),e??Fe.encoder):Ww(n,Ma(t),e??Zr.encoder)}const rd=new WeakMap;function Ma(t){const e=rd.get(t);if(e==null){const n=new Map;return rd.set(t,n),n}return e}class ue{code;version;multihash;bytes;"/";constructor(e,n,r,o){this.code=n,this.version=e,this.multihash=r,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:n}=this;if(e!==Rr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(n.code!==Gw)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ue.createV0(n)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:n}=this.multihash,r=vo(e,n);return ue.createV1(this.code,r)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ue.equals(this,e)}static equals(e,n){const r=n;return r!=null&&e.code===r.code&&e.version===r.version&&qw(e.multihash,r.multihash)}toString(e){return nd(this,e)}toJSON(){return{"/":nd(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const n=e;if(n instanceof ue)return n;if(n["/"]!=null&&n["/"]===n.bytes||n.asCID===n){const{version:r,code:o,multihash:s,bytes:i}=n;return new ue(r,o,s,i??od(r,o,s.bytes))}else if(n[Vw]===!0){const{version:r,multihash:o,code:s}=n,i=jf(o);return ue.create(r,s,i)}else return null}static create(e,n,r){if(typeof n!="number")throw new Error("String codecs are no longer supported");if(!(r.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(n!==Rr)throw new Error(`Version 0 CID must use dag-pb (code: ${Rr}) block encoding`);return new ue(e,n,r,r.bytes)}case 1:{const o=od(e,n,r.bytes);return new ue(e,n,r,o)}default:throw new Error("Invalid version")}}static createV0(e){return ue.create(0,Rr,e)}static createV1(e,n){return ue.create(1,e,n)}static decode(e){const[n,r]=ue.decodeFirst(e);if(r.length!==0)throw new Error("Incorrect length");return n}static decodeFirst(e){const n=ue.inspectBytes(e),r=n.size-n.multihashSize,o=Ys(e.subarray(r,r+n.multihashSize));if(o.byteLength!==n.multihashSize)throw new Error("Incorrect length");const s=o.subarray(n.multihashSize-n.digestSize),i=new $c(n.multihashCode,n.digestSize,s,o);return[n.version===0?ue.createV0(i):ue.createV1(n.codec,i),e.subarray(n.size)]}static inspectBytes(e){let n=0;const r=()=>{const[u,f]=Fa(e.subarray(n));return n+=f,u};let o=r(),s=Rr;if(o===18?(o=0,n=0):s=r(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=n,a=r(),c=r(),l=n+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,n){const[r,o]=Kw(e,n),s=ue.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ma(s).set(r,e),s}}function Kw(t,e){switch(t[0]){case"Q":{const n=e??Fe;return[Fe.prefix,n.decode(`${Fe.prefix}${t}`)]}case Fe.prefix:{const n=e??Fe;return[Fe.prefix,n.decode(t)]}case Zr.prefix:{const n=e??Zr;return[Zr.prefix,n.decode(t)]}case Jo.prefix:{const n=e??Jo;return[Jo.prefix,n.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function zw(t,e,n){const{prefix:r}=n;if(r!==Fe.prefix)throw Error(`Cannot string encode V0 in ${n.name} encoding`);const o=e.get(r);if(o==null){const s=n.encode(t).slice(1);return e.set(r,s),s}else return o}function Ww(t,e,n){const{prefix:r}=n,o=e.get(r);if(o==null){const s=n.encode(t);return e.set(r,s),s}else return o}const Rr=112,Gw=18;function od(t,e,n){const r=ps(t),o=r+ps(e),s=new Uint8Array(o+n.byteLength);return hs(t,s,0),hs(e,s,r),s.set(n,o),s}const Vw=Symbol.for("@ipld/js-cid/CID"),Hf=0,Xw="identity",Uf=Ys;function Yw(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return vo(Hf,Uf(t))}const So={code:Hf,name:Xw,encode:Uf,digest:Yw};function lt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function $e(t=0){return new Uint8Array(t)}function Nt(t=0){return new Uint8Array(t)}function ja(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const n=Nt(e);let r=0;for(const o of t)n.set(o,r),r+=o.length;return n}const $f=Symbol.for("@achingbrain/uint8arraylist");function sd(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let n=0;for(const r of t){const o=n+r.byteLength;if(e<o)return{buf:r,index:e-n};n=o}throw new RangeError("index is out of bounds")}function To(t){return!!t?.[$f]}class se{bufs;length;[$f]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let n=0;for(const r of e)if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.push(r);else if(To(r)){n+=r.byteLength;for(const o of r.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}prepend(...e){this.prependAll(e)}prependAll(e){let n=0;for(const r of e.reverse())if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.unshift(r);else if(To(r))n+=r.byteLength,this.bufs.unshift(...r.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}get(e){const n=sd(this.bufs,e);return n.buf[n.index]}set(e,n){const r=sd(this.bufs,e);r.buf[r.index]=n}write(e,n=0){if(e instanceof Uint8Array)for(let r=0;r<e.length;r++)this.set(n+r,e[r]);else if(To(e))for(let r=0;r<e.length;r++)this.set(n+r,e.get(r));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,n){const{bufs:r,length:o}=this._subList(e,n);return ja(r,o)}subarray(e,n){const{bufs:r,length:o}=this._subList(e,n);return r.length===1?r[0]:ja(r,o)}sublist(e,n){const{bufs:r,length:o}=this._subList(e,n),s=new se;return s.length=o,s.bufs=r,s}_subList(e,n){if(e=e??0,n=n??this.length,e<0&&(e=this.length+e),n<0&&(n=this.length+n),e<0||n>this.length)throw new RangeError("index is out of bounds");if(e===n)return{bufs:[],length:0};if(e===0&&n===this.length)return{bufs:[...this.bufs],length:this.length};const r=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=n>a&&n<=c;if(l&&d){if(e===a&&n===c){r.push(i);break}const u=e-a;r.push(i.subarray(u,u+(n-e)));break}if(l){if(e===0){r.push(i);continue}r.push(i.subarray(e-a));continue}if(d){if(n===c){r.push(i);break}r.push(i.subarray(0,n-a));break}r.push(i)}return{bufs:r,length:n-e}}indexOf(e,n=0){if(!To(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const r=e instanceof Uint8Array?e:e.subarray();if(n=Number(n??0),isNaN(n)&&(n=0),n<0&&(n=this.length+n),n<0&&(n=0),e.length===0)return n>this.length?this.length:n;const o=r.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[r[u]]=u;const a=i,c=this.byteLength-r.byteLength,l=r.byteLength-1;let d;for(let u=n;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(r[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt8(0)}setInt8(e,n){const r=Nt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt8(0,n),this.write(r,e)}getInt16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt16(0,n)}setInt16(e,n,r){const o=$e(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,n,r),this.write(o,e)}getInt32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt32(0,n)}setInt32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,n,r),this.write(o,e)}getBigInt64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigInt64(0,n)}setBigInt64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,n,r),this.write(o,e)}getUint8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint8(0)}setUint8(e,n){const r=Nt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint8(0,n),this.write(r,e)}getUint16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,n)}setUint16(e,n,r){const o=$e(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,n,r),this.write(o,e)}getUint32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,n)}setUint32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,n,r),this.write(o,e)}getBigUint64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigUint64(0,n)}setBigUint64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,n,r),this.write(o,e)}getFloat32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat32(0,n)}setFloat32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,n,r),this.write(o,e)}getFloat64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat64(0,n)}setFloat64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,n,r),this.write(o,e)}equals(e){if(e==null||!(e instanceof se)||e.bufs.length!==this.bufs.length)return!1;for(let n=0;n<this.bufs.length;n++)if(!lt(this.bufs[n],e.bufs[n]))return!1;return!0}static fromUint8Arrays(e,n){const r=new se;return r.bufs=e,n==null&&(n=e.reduce((o,s)=>o+s.byteLength,0)),r.length=n,r}}const Zw=bo({prefix:"9",name:"base10",alphabet:"0123456789"}),Jw=Object.freeze(Object.defineProperty({__proto__:null,base10:Zw},Symbol.toStringTag,{value:"Module"})),Qw=Pe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ey=Pe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),ty=Object.freeze(Object.defineProperty({__proto__:null,base16:Qw,base16upper:ey},Symbol.toStringTag,{value:"Module"})),ny=Pe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),ry=Object.freeze(Object.defineProperty({__proto__:null,base2:ny},Symbol.toStringTag,{value:"Module"})),qf=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),oy=qf.reduce((t,e,n)=>(t[n]=e,t),[]),sy=qf.reduce((t,e,n)=>{const r=e.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${e}`);return t[r]=n,t},[]);function iy(t){return t.reduce((e,n)=>(e+=oy[n],e),"")}function ay(t){const e=[];for(const n of t){const r=n.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${n}`);const o=sy[r];if(o==null)throw new Error(`Non-base256emoji character: ${n}`);e.push(o)}return new Uint8Array(e)}const cy=Zs({prefix:"🚀",name:"base256emoji",encode:iy,decode:ay}),ly=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:cy},Symbol.toStringTag,{value:"Module"})),dy=Pe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),uy=Pe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),fy=Pe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),hy=Pe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),py=Object.freeze(Object.defineProperty({__proto__:null,base64:dy,base64pad:uy,base64url:fy,base64urlpad:hy},Symbol.toStringTag,{value:"Module"})),gy=Pe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),my=Object.freeze(Object.defineProperty({__proto__:null,base8:gy},Symbol.toStringTag,{value:"Module"})),wy=Zs({prefix:"\0",name:"identity",encode:t=>rw(t),decode:t=>nw(t)}),yy=Object.freeze(Object.defineProperty({__proto__:null,identity:wy},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const by=20;function vy({name:t,code:e,encode:n,minDigestLength:r,maxDigestLength:o}){return new Sy(t,e,n,r,o)}class Sy{name;code;encode;minDigestLength;maxDigestLength;constructor(e,n,r,o,s){this.name=e,this.code=n,this.encode=r,this.minDigestLength=o??by,this.maxDigestLength=s}digest(e,n){if(n?.truncate!=null){if(n.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&n.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?id(r,this.code,n?.truncate):r.then(o=>id(o,this.code,n?.truncate))}else throw Error("Unknown type, must be binary type")}}function id(t,e,n){if(n!=null&&n!==t.byteLength){if(n>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,n)}return vo(e,t)}function xy(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const qc=vy({name:"sha2-256",code:18,encode:xy("SHA-256")}),ad={...yy,...ry,...my,...Jw,...ty,...Aw,...Cw,...gw,...py,...ly};function Kf(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const cd=Kf("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ii=Kf("ascii","a",t=>{let e="a";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},t=>{t=t.substring(1);const e=Nt(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}),zf={utf8:cd,"utf-8":cd,hex:ad.base16,latin1:Ii,ascii:Ii,binary:Ii,...ad};function be(t,e="utf8"){const n=zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.decoder.decode(`${n.prefix}${t}`)}function te(t,e="utf8"){const n=zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.encoder.encode(t).substring(1)}const Ey=parseInt("11111",2),Ha=parseInt("10000000",2),Ay=parseInt("01111111",2),ld={0:Tr,1:Tr,2:ky,3:Ry,4:Ty,5:Iy,6:Cy,16:Tr,22:Tr,48:Tr};function yr(t,e={offset:0}){const n=t[e.offset]&Ey;if(e.offset++,ld[n]!=null)return ld[n](t,e);throw new Error("No decoder for tag "+n)}function xo(t,e){let n=0;if((t[e.offset]&Ha)===Ha){const r=t[e.offset]&Ay;let o="0x";e.offset++;for(let s=0;s<r;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");n=parseInt(o,16)}else n=t[e.offset],e.offset++;return n}function Tr(t,e){xo(t,e);const n=[];for(;!(e.offset>=t.byteLength);){const r=yr(t,e);if(r===null)break;n.push(r)}return n}function ky(t,e){const n=xo(t,e),r=e.offset,o=e.offset+n,s=[];for(let i=r;i<o;i++)i===r&&t[i]===0||s.push(t[i]);return e.offset+=n,Uint8Array.from(s)}function Cy(t,e){const n=xo(t,e),r=e.offset+n,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<r;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function Iy(t,e){return e.offset++,null}function Ry(t,e){const n=xo(t,e),r=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+n-1);if(e.offset+=n,r!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Ty(t,e){const n=xo(t,e),r=t.subarray(e.offset,e.offset+n);return e.offset+=n,r}function Py(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new se;for(let r=0;r<e.length;r+=2)n.append(Uint8Array.from([parseInt(`${e[r]}${e[r+1]}`,16)]));return n}function Js(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Py(t.byteLength);return new se(Uint8Array.from([e.byteLength|Ha]),e)}function We(t){const e=new se,n=128;return(t.subarray()[0]&n)===n&&e.append(Uint8Array.from([0])),e.append(t),new se(Uint8Array.from([2]),Js(e),e)}function Kc(t){const e=Uint8Array.from([0]),n=new se(e,t);return new se(Uint8Array.from([3]),Js(n),n)}function Ny(t){return new se(Uint8Array.from([4]),Js(t),t)}function Tt(t,e=48){const n=new se;for(const r of t)n.append(r);return new se(Uint8Array.from([e]),Js(n),n)}async function Ly(t,e,n){const r=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);n?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},r,e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function By(t,e,n,r){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);r?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,n.subarray());return r?.signal?.throwIfAborted(),s}const _y=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),Oy=Uint8Array.from([6,5,43,129,4,0,34]),Dy=Uint8Array.from([6,5,43,129,4,0,35]),Wf={ext:!0,kty:"EC",crv:"P-256"},Gf={ext:!0,kty:"EC",crv:"P-384"},Vf={ext:!0,kty:"EC",crv:"P-521"},Xn=32,Yn=48,Zn=66;function Fy(t){const e=yr(t);return My(e)}function My(t){const e=t[1],n=te(e,"base64url"),r=t[2][1][0],o=1;let s,i;if(e.byteLength===Xn)return s=te(r.subarray(o,o+Xn),"base64url"),i=te(r.subarray(o+Xn),"base64url"),new Ri({...Wf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Yn)return s=te(r.subarray(o,o+Yn),"base64url"),i=te(r.subarray(o+Yn),"base64url"),new Ri({...Gf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Zn)return s=te(r.subarray(o,o+Zn),"base64url"),i=te(r.subarray(o+Zn),"base64url"),new Ri({...Vf,key_ops:["sign"],d:n,x:s,y:i});throw new ct(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function Xf(t){const e=yr(t);return jy(e)}function jy(t){const e=t[1][1][0],n=1;let r,o;if(e.byteLength===Xn*2+1)return r=te(e.subarray(n,n+Xn),"base64url"),o=te(e.subarray(n+Xn),"base64url"),new Qo({...Wf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Yn*2+1)return r=te(e.subarray(n,n+Yn),"base64url"),o=te(e.subarray(n+Yn),"base64url"),new Qo({...Gf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Zn*2+1)return r=te(e.subarray(n,n+Zn),"base64url"),o=te(e.subarray(n+Zn),"base64url"),new Qo({...Vf,key_ops:["verify"],x:r,y:o});throw new ct(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Hy(t){return Tt([We(Uint8Array.from([1])),Ny(be(t.d??"","base64url")),Tt([Yf(t.crv)],160),Tt([Kc(new se(Uint8Array.from([4]),be(t.x??"","base64url"),be(t.y??"","base64url")))],161)]).subarray()}function Uy(t){return Tt([We(Uint8Array.from([1])),Tt([Yf(t.crv)],160),Tt([Kc(new se(Uint8Array.from([4]),be(t.x??"","base64url"),be(t.y??"","base64url")))],161)]).subarray()}function Yf(t){if(t==="P-256")return _y;if(t==="P-384")return Oy;if(t==="P-521")return Dy;throw new ct(`Invalid curve ${t}`)}class Qo{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Uy(this.jwk)),this._raw}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}async verify(e,n,r){return By(this.jwk,n,e,r)}}class Ri{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Qo({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Hy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}async sign(e,n){return Ly(this.jwk,e,n)}}const _n=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Eo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Ua(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function En(t,...e){if(!Eo(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function Zf(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Ua(t.outputLen),Ua(t.blockLen)}function gs(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function $y(t,e){En(t);const n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function lr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ti(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ut(t,e){return t<<32-e|t>>>e}const Jf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",qy=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fn(t){if(En(t),Jf)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=qy[t[n]];return e}const bt={_0:48,_9:57,A:65,F:70,a:97,f:102};function dd(t){if(t>=bt._0&&t<=bt._9)return t-bt._0;if(t>=bt.A&&t<=bt.F)return t-(bt.A-10);if(t>=bt.a&&t<=bt.f)return t-(bt.a-10)}function ms(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Jf)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=dd(t.charCodeAt(s)),a=dd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Ky(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function zc(t){return typeof t=="string"&&(t=Ky(t)),En(t),t}function pt(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];En(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}class Qf{}function eh(t){const e=r=>t().update(zc(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Wc(t=32){if(_n&&typeof _n.getRandomValues=="function")return _n.getRandomValues(new Uint8Array(t));if(_n&&typeof _n.randomBytes=="function")return Uint8Array.from(_n.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function zy(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}function Wy(t,e,n){return t&e^~t&n}function Gy(t,e,n){return t&e^t&n^e&n}let th=class extends Qf{constructor(e,n,r,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Ti(this.buffer)}update(e){gs(this),e=zc(e),En(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Ti(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){gs(this),$y(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,lr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;zy(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Ti(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}};const Dt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ne=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Po=BigInt(2**32-1),ud=BigInt(32);function Vy(t,e=!1){return e?{h:Number(t&Po),l:Number(t>>ud&Po)}:{h:Number(t>>ud&Po)|0,l:Number(t&Po)|0}}function Xy(t,e=!1){const n=t.length;let r=new Uint32Array(n),o=new Uint32Array(n);for(let s=0;s<n;s++){const{h:i,l:a}=Vy(t[s],e);[r[s],o[s]]=[i,a]}return[r,o]}const fd=(t,e,n)=>t>>>n,hd=(t,e,n)=>t<<32-n|e>>>n,On=(t,e,n)=>t>>>n|e<<32-n,Dn=(t,e,n)=>t<<32-n|e>>>n,No=(t,e,n)=>t<<64-n|e>>>n-32,Lo=(t,e,n)=>t>>>n-32|e<<64-n;function vt(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const Yy=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),Zy=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Jy=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),Qy=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,eb=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),tb=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,nb=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ft=new Uint32Array(64);class rb extends th{constructor(e=32){super(64,e,8,!1),this.A=Dt[0]|0,this.B=Dt[1]|0,this.C=Dt[2]|0,this.D=Dt[3]|0,this.E=Dt[4]|0,this.F=Dt[5]|0,this.G=Dt[6]|0,this.H=Dt[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Ft[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Ft[u-15],h=Ft[u-2],g=ut(f,7)^ut(f,18)^f>>>3,m=ut(h,17)^ut(h,19)^h>>>10;Ft[u]=m+Ft[u-7]+g+Ft[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ut(a,6)^ut(a,11)^ut(a,25),h=d+f+Wy(a,c,l)+nb[u]+Ft[u]|0,m=(ut(r,2)^ut(r,13)^ut(r,22))+Gy(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){lr(Ft)}destroy(){this.set(0,0,0,0,0,0,0,0),lr(this.buffer)}}const nh=Xy(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),ob=nh[0],sb=nh[1],Mt=new Uint32Array(80),jt=new Uint32Array(80);class ib extends th{constructor(e=64){super(128,e,16,!1),this.Ah=Ne[0]|0,this.Al=Ne[1]|0,this.Bh=Ne[2]|0,this.Bl=Ne[3]|0,this.Ch=Ne[4]|0,this.Cl=Ne[5]|0,this.Dh=Ne[6]|0,this.Dl=Ne[7]|0,this.Eh=Ne[8]|0,this.El=Ne[9]|0,this.Fh=Ne[10]|0,this.Fl=Ne[11]|0,this.Gh=Ne[12]|0,this.Gl=Ne[13]|0,this.Hh=Ne[14]|0,this.Hl=Ne[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:b}=this;return[e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b]}set(e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=b|0}process(e,n){for(let y=0;y<16;y++,n+=4)Mt[y]=e.getUint32(n),jt[y]=e.getUint32(n+=4);for(let y=16;y<80;y++){const k=Mt[y-15]|0,N=jt[y-15]|0,x=On(k,N,1)^On(k,N,8)^fd(k,N,7),T=Dn(k,N,1)^Dn(k,N,8)^hd(k,N,7),S=Mt[y-2]|0,v=jt[y-2]|0,A=On(S,v,19)^No(S,v,61)^fd(S,v,6),_=Dn(S,v,19)^Lo(S,v,61)^hd(S,v,6),B=Jy(T,_,jt[y-7],jt[y-16]),C=Qy(B,x,A,Mt[y-7],Mt[y-16]);Mt[y]=C|0,jt[y]=B|0}let{Ah:r,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:b,Hh:w,Hl:R}=this;for(let y=0;y<80;y++){const k=On(u,f,14)^On(u,f,18)^No(u,f,41),N=Dn(u,f,14)^Dn(u,f,18)^Lo(u,f,41),x=u&h^~u&m,T=f&g^~f&b,S=eb(R,N,T,sb[y],jt[y]),v=tb(S,w,k,x,ob[y],Mt[y]),A=S|0,_=On(r,o,28)^No(r,o,34)^No(r,o,39),B=Dn(r,o,28)^Lo(r,o,34)^Lo(r,o,39),C=r&s^r&a^s&a,E=o&i^o&c^i&c;w=m|0,R=b|0,m=h|0,b=g|0,h=u|0,g=f|0,{h:u,l:f}=vt(l|0,d|0,v|0,A|0),l=a|0,d=c|0,a=s|0,c=i|0,s=r|0,i=o|0;const P=Yy(A,B,E);r=Zy(P,v,_,C),o=P|0}({h:r,l:o}=vt(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:i}=vt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=vt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=vt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=vt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=vt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:b}=vt(this.Gh|0,this.Gl|0,m|0,b|0),{h:w,l:R}=vt(this.Hh|0,this.Hl|0,w|0,R|0),this.set(r,o,s,i,a,c,l,d,u,f,h,g,m,b,w,R)}roundClean(){lr(Mt,jt)}destroy(){lr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const rh=eh(()=>new rb),ab=eh(()=>new ib);const Gc=BigInt(0),$a=BigInt(1);function yn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}"`;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function at(t,e,n=""){const r=Eo(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function Bo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function oh(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Gc:BigInt("0x"+t)}function Qs(t){return oh(fn(t))}function ao(t){return En(t),oh(fn(Uint8Array.from(t).reverse()))}function Vc(t,e){return ms(t.toString(16).padStart(e*2,"0"))}function sh(t,e){return Vc(t,e).reverse()}function pe(t,e,n){let r;if(typeof e=="string")try{r=ms(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(Eo(e))r=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(t+" of length "+n+" expected, got "+o);return r}function pd(t){return Uint8Array.from(t)}const Pi=t=>typeof t=="bigint"&&Gc<=t;function cb(t,e,n){return Pi(t)&&Pi(e)&&Pi(n)&&e<=t&&t<n}function qa(t,e,n,r){if(!cb(e,n,r))throw new Error("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function ih(t){let e;for(e=0;t>Gc;t>>=$a,e+=1);return e}const Ao=t=>($a<<BigInt(t))-$a;function lb(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");const r=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=r(t),i=r(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>n(i,s,...h),d=(h=r(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return pt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function ko(t,e,n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>r(o,s,!1)),Object.entries(n).forEach(([o,s])=>r(o,s,!0))}function ws(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const qe=BigInt(0),Te=BigInt(1),on=BigInt(2),ah=BigInt(3),ch=BigInt(4),lh=BigInt(5),db=BigInt(7),dh=BigInt(8),ub=BigInt(9),uh=BigInt(16);function ve(t,e){const n=t%e;return n>=qe?n:e+n}function he(t,e,n){let r=t;for(;e-- >qe;)r*=r,r%=n;return r}function gd(t,e){if(t===qe)throw new Error("invert: expected non-zero number");if(e<=qe)throw new Error("invert: expected positive modulus, got "+e);let n=ve(t,e),r=e,o=qe,s=Te;for(;n!==qe;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==Te)throw new Error("invert: does not exist");return ve(o,e)}function Xc(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function fh(t,e){const n=(t.ORDER+Te)/ch,r=t.pow(e,n);return Xc(t,r,e),r}function fb(t,e){const n=(t.ORDER-lh)/dh,r=t.mul(e,on),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,on),o),a=t.mul(s,t.sub(i,t.ONE));return Xc(t,a,e),a}function hb(t){const e=An(t),n=hh(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+db)/uh;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),b=a.cmov(l,d,m);return Xc(a,b,c),b}}function hh(t){if(t<ah)throw new Error("sqrt is not defined for small field");let e=t-Te,n=0;for(;e%on===qe;)e/=on,n++;let r=on;const o=An(t);for(;md(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return fh;let s=o.pow(r,e);const i=(e+Te)/on;return function(c,l){if(c.is0(l))return l;if(md(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const b=Te<<BigInt(d-g-1),w=c.pow(u,b);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function pb(t){return t%ch===ah?fh:t%dh===lh?fb:t%uh===ub?hb(t):hh(t)}const gb=(t,e)=>(ve(t,e)&Te)===Te,mb=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function wb(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},n=mb.reduce((r,o)=>(r[o]="function",r),e);return ko(t,n),t}function yb(t,e,n){if(n<qe)throw new Error("invalid exponent, negatives unsupported");if(n===qe)return t.ONE;if(n===Te)return e;let r=t.ONE,o=e;for(;n>qe;)n&Te&&(r=t.mul(r,o)),o=t.sqr(o),n>>=Te;return r}function ph(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function md(t,e){const n=(t.ORDER-Te)/on,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function gh(t,e){e!==void 0&&Ua(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function An(t,e,n=!1,r={}){if(t<=qe)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(n=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),r.sqrt&&(s=r.sqrt);const{nBitLength:c,nByteLength:l}=gh(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:n,BITS:c,BYTES:l,MASK:Ao(c),ZERO:qe,ONE:Te,allowedLengths:a,create:f=>ve(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return qe<=f&&f<t},is0:f=>f===qe,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Te)===Te,neg:f=>ve(-f,t),eql:(f,h)=>f===h,sqr:f=>ve(f*f,t),add:(f,h)=>ve(f+h,t),sub:(f,h)=>ve(f-h,t),mul:(f,h)=>ve(f*h,t),pow:(f,h)=>yb(u,f,h),div:(f,h)=>ve(f*gd(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>gd(f,t),sqrt:s||(f=>(d||(d=pb(t)),d(u,f))),toBytes:f=>n?sh(f,l):Vc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,n?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=n?ao(f):Qs(f);if(i&&(g=ve(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>ph(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function mh(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function wh(t){const e=mh(t);return e+Math.ceil(e/2)}function bb(t,e,n=!1){const r=t.length,o=mh(e),s=wh(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?ao(t):Qs(t),a=ve(i,e-Te)+Te;return n?sh(a,o):Vc(a,o)}const dr=BigInt(0),sn=BigInt(1);function ys(t,e){const n=e.negate();return t?n:e}function an(t,e){const n=ph(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function yh(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Ni(t,e){yh(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=Ao(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function wd(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=sn);const l=e*r,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function vb(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function Sb(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const Li=new WeakMap,bh=new WeakMap;function Bi(t){return bh.get(t)||1}function yd(t){if(t!==dr)throw new Error("invalid wNAF")}class vh{constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>dr;)n&sn&&(r=r.add(o)),o=o.double(),n>>=sn;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=Ni(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=Ni(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=wd(r,a,i);r=c,d?s=s.add(ys(f,n[h])):o=o.add(ys(u,n[l]))}return yd(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=Ni(e,this.bits);for(let i=0;i<s.windows&&r!==dr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=wd(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return yd(r),o}getPrecomputes(e,n,r){let o=Li.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),Li.set(n,o))),o}cached(e,n,r){const o=Bi(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=Bi(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){yh(n,this.bits),bh.set(e,n),Li.delete(e)}hasCache(e){return Bi(e)!==1}}function xb(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>dr||r>dr;)n&sn&&(s=s.add(o)),r&sn&&(i=i.add(o)),o=o.double(),n>>=sn,r>>=sn;return{p1:s,p2:i}}function Sh(t,e,n,r){vb(n,t),Sb(r,e);const o=n.length,s=r.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=ih(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=Ao(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const b=r[m],w=Number(b>>BigInt(h)&l);d[w]=d[w].add(n[m])}let g=i;for(let m=d.length-1,b=i;m>0;m--)b=b.add(d[m]),g=g.add(b);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function bd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return wb(e),e}else return An(t,{isLE:n})}function xh(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>dr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=bd(e.p,n.Fp,r),s=bd(e.n,n.Fn,r),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Ht=BigInt(0),Ee=BigInt(1),_i=BigInt(2),Eb=BigInt(8);function Ab(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function kb(t,e={}){const n=xh("edwards",t,e,e.FpFnLE),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i}=s;ko(e,{},{uvRatio:"function"});const a=_i<<BigInt(o.BYTES*8)-Ee,c=b=>r.create(b),l=e.uvRatio||((b,w)=>{try{return{isValid:!0,value:r.sqrt(r.div(b,w))}}catch{return{isValid:!1,value:Ht}}});if(!Ab(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(b,w,R=!1){const y=R?Ee:Ht;return qa("coordinate "+b,w,y,a),w}function u(b){if(!(b instanceof g))throw new Error("ExtendedPoint expected")}const f=ws((b,w)=>{const{X:R,Y:y,Z:k}=b,N=b.is0();w==null&&(w=N?Eb:r.inv(k));const x=c(R*w),T=c(y*w),S=r.mul(k,w);if(N)return{x:Ht,y:Ee};if(S!==Ee)throw new Error("invZ was invalid");return{x,y:T}}),h=ws(b=>{const{a:w,d:R}=s;if(b.is0())throw new Error("bad point: ZERO");const{X:y,Y:k,Z:N,T:x}=b,T=c(y*y),S=c(k*k),v=c(N*N),A=c(v*v),_=c(T*w),B=c(v*c(_+S)),C=c(A+c(R*c(T*S)));if(B!==C)throw new Error("bad point: equation left != right (1)");const E=c(y*k),P=c(N*x);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,R,y,k){this.X=d("x",w),this.Y=d("y",R),this.Z=d("z",y,!0),this.T=d("t",k),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:R,y}=w||{};return d("x",R),d("y",y),new g(R,y,Ee,c(R*y))}static fromBytes(w,R=!1){const y=r.BYTES,{a:k,d:N}=s;w=pd(at(w,y,"point")),yn(R,"zip215");const x=pd(w),T=w[y-1];x[y-1]=T&-129;const S=ao(x),v=R?a:r.ORDER;qa("point.y",S,Ht,v);const A=c(S*S),_=c(A-Ee),B=c(N*A-k);let{isValid:C,value:E}=l(_,B);if(!C)throw new Error("bad point: invalid y coordinate");const P=(E&Ee)===Ee,I=(T&128)!==0;if(!R&&E===Ht&&I)throw new Error("bad point: x=0 and x_0=1");return I!==P&&(E=c(-E)),g.fromAffine({x:E,y:S})}static fromHex(w,R=!1){return g.fromBytes(pe("point",w),R)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,R=!0){return m.createCache(this,w),R||this.multiply(_i),this}assertValidity(){h(this)}equals(w){u(w);const{X:R,Y:y,Z:k}=this,{X:N,Y:x,Z:T}=w,S=c(R*T),v=c(N*k),A=c(y*T),_=c(x*k);return S===v&&A===_}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:R,Y:y,Z:k}=this,N=c(R*R),x=c(y*y),T=c(_i*c(k*k)),S=c(w*N),v=R+y,A=c(c(v*v)-N-x),_=S+x,B=_-T,C=S-x,E=c(A*B),P=c(_*C),I=c(A*C),D=c(B*_);return new g(E,P,D,I)}add(w){u(w);const{a:R,d:y}=s,{X:k,Y:N,Z:x,T}=this,{X:S,Y:v,Z:A,T:_}=w,B=c(k*S),C=c(N*v),E=c(T*y*_),P=c(x*A),I=c((k+N)*(S+v)-B-C),D=P-E,M=P+E,F=c(C-R*B),L=c(I*D),U=c(M*F),$=c(I*F),H=c(D*M);return new g(L,U,H,$)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:R,f:y}=m.cached(this,w,k=>an(g,k));return an(g,[R,y])[0]}multiplyUnsafe(w,R=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Ht?g.ZERO:this.is0()||w===Ee?this:m.unsafe(this,w,y=>an(g,y),R)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===Ee?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:R}=this.toAffine(),y=r.toBytes(R);return y[y.length-1]|=w&Ee?128:0,y}toHex(){return fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return an(g,w)}static msm(w,R){return Sh(g,o,w,R)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Ee,c(s.Gx*s.Gy)),g.ZERO=new g(Ht,Ee,Ee,Ht),g.Fp=r,g.Fn=o;const m=new vh(g,o.BITS);return g.BASE.precompute(8),g}function Cb(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is required');ko(n,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:r}=n,{BASE:o,Fp:s,Fn:i}=t,a=n.randomBytes||Wc,c=n.adjustScalarBytes||(v=>v),l=n.domain||((v,A,_)=>{if(yn(_,"phflag"),A.length||_)throw new Error("Contexts/pre-hash are not supported");return v});function d(v){return i.create(ao(v))}function u(v){const A=y.secretKey;v=pe("private key",v,A);const _=pe("hashed private key",e(v),2*A),B=c(_.slice(0,A)),C=_.slice(A,2*A),E=d(B);return{head:B,prefix:C,scalar:E}}function f(v){const{head:A,prefix:_,scalar:B}=u(v),C=o.multiply(B),E=C.toBytes();return{head:A,prefix:_,scalar:B,point:C,pointBytes:E}}function h(v){return f(v).pointBytes}function g(v=Uint8Array.of(),...A){const _=pt(...A);return d(e(l(_,pe("context",v),!!r)))}function m(v,A,_={}){v=pe("message",v),r&&(v=r(v));const{prefix:B,scalar:C,pointBytes:E}=f(A),P=g(_.context,B,v),I=o.multiply(P).toBytes(),D=g(_.context,I,E,v),M=i.create(P+D*C);if(!i.isValid(M))throw new Error("sign failed: invalid s");const F=pt(I,i.toBytes(M));return at(F,y.signature,"result")}const b={zip215:!0};function w(v,A,_,B=b){const{context:C,zip215:E}=B,P=y.signature;v=pe("signature",v,P),A=pe("message",A),_=pe("publicKey",_,y.publicKey),E!==void 0&&yn(E,"zip215"),r&&(A=r(A));const I=P/2,D=v.subarray(0,I),M=ao(v.subarray(I,P));let F,L,U;try{F=t.fromBytes(_,E),L=t.fromBytes(D,E),U=o.multiplyUnsafe(M)}catch{return!1}if(!E&&F.isSmallOrder())return!1;const $=g(C,L.toBytes(),F.toBytes(),A);return L.add(F.multiplyUnsafe($)).subtract(U).clearCofactor().is0()}const R=s.BYTES,y={secretKey:R,publicKey:R,signature:2*R,seed:R};function k(v=a(y.seed)){return at(v,y.seed,"seed")}function N(v){const A=S.randomSecretKey(v);return{secretKey:A,publicKey:h(A)}}function x(v){return Eo(v)&&v.length===i.BYTES}function T(v,A){try{return!!t.fromBytes(v,A)}catch{return!1}}const S={getExtendedPublicKey:f,randomSecretKey:k,isValidSecretKey:x,isValidPublicKey:T,toMontgomery(v){const{y:A}=t.fromBytes(v),_=y.publicKey,B=_===32;if(!B&&_!==57)throw new Error("only defined for 25519 and 448");const C=B?s.div(Ee+A,Ee-A):s.div(A-Ee,A+Ee);return s.toBytes(C)},toMontgomerySecret(v){const A=y.secretKey;at(v,A);const _=e(v.subarray(0,A));return c(_).subarray(0,A)},randomPrivateKey:k,precompute(v=8,A=t.BASE){return A.precompute(v,!1)}};return Object.freeze({keygen:N,getPublicKey:h,sign:m,verify:w,utils:S,Point:t,lengths:y})}function Ib(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=An(e.n,t.nBitLength,!0),o={Fp:n,Fn:r,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function Rb(t,e){const n=e.Point;return Object.assign({},e,{ExtendedPoint:n,CURVE:t,nBitLength:n.Fn.BITS,nByteLength:n.Fn.BYTES})}function Tb(t){const{CURVE:e,curveOpts:n,hash:r,eddsaOpts:o}=Ib(t),s=kb(e,n),i=Cb(s,r,o);return Rb(t,i)}const Pb=BigInt(1),vd=BigInt(2);BigInt(3);const Nb=BigInt(5),Lb=BigInt(8),Yc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Eh={p:Yc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Lb,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Bb(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Yc,a=t*t%s*t%s,c=he(a,vd,s)*a%s,l=he(c,Pb,s)*t%s,d=he(l,Nb,s)*l%s,u=he(d,e,s)*d%s,f=he(u,n,s)*u%s,h=he(f,r,s)*f%s,g=he(h,o,s)*h%s,m=he(g,o,s)*h%s,b=he(m,e,s)*d%s;return{pow_p_5_8:he(b,vd,s)*t%s,b2:a}}function _b(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Sd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Ob(t,e){const n=Yc,r=ve(e*e*e,n),o=ve(r*r*e,n),s=Bb(t*o).pow_p_5_8;let i=ve(t*r*s,n);const a=ve(e*i*i,n),c=i,l=ve(i*Sd,n),d=a===t,u=a===ve(-t,n),f=a===ve(-t*Sd,n);return d&&(i=c),(u||f)&&(i=l),gb(i,n)&&(i=ve(-i,n)),{isValid:d||u,value:i}}const Db=An(Eh.p,{isLE:!0}),Fb={...Eh,Fp:Db,hash:ab,adjustScalarBytes:_b,uvRatio:Ob},bs=Tb(Fb);class xd extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Ed extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class Mb extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Lt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new Mb("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},vs=32,Et=64,Ka=32;let Jn;const Ah=(async()=>{try{return await Lt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function jb(){const t=bs.utils.randomPrivateKey(),e=bs.getPublicKey(t);return{privateKey:Wb(t,e),publicKey:e}}async function Hb(t,e){let n;t.length===Et?n=t.subarray(0,32):n=t;const r={crv:"Ed25519",kty:"OKP",x:te(t.subarray(32),"base64url"),d:te(n,"base64url"),ext:!0,key_ops:["sign"]},o=await Lt.get().subtle.importKey("jwk",r,{name:"Ed25519"},!0,["sign"]),s=await Lt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Ub(t,e){const n=t.subarray(0,Ka);return bs.sign(e instanceof Uint8Array?e:e.subarray(),n)}async function $b(t,e){return Jn==null&&(Jn=await Ah),Jn?Hb(t,e):Ub(t,e)}async function qb(t,e,n){if(t.buffer instanceof ArrayBuffer){const r=await Lt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Lt.get().subtle.verify({name:"Ed25519"},r,e,n instanceof Uint8Array?n:n.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Kb(t,e,n){return bs.verify(e,n instanceof Uint8Array?n:n.subarray(),t)}async function zb(t,e,n){return Jn==null&&(Jn=await Ah),Jn?qb(t,e,n):Kb(t,e,n)}function Wb(t,e){const n=new Uint8Array(Et);for(let r=0;r<Ka;r++)n[r]=t[r],n[Ka+r]=e[r];return n}function ei(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class kh{type="Ed25519";raw;constructor(e){this.raw=co(e,vs)}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){r?.signal?.throwIfAborted();const o=zb(this.raw,n,e);return ei(o)?o.then(s=>(r?.signal?.throwIfAborted(),s)):o}}class za{type="Ed25519";raw;publicKey;constructor(e,n){this.raw=co(e,Et),this.publicKey=new kh(n)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){n?.signal?.throwIfAborted();const r=$b(this.raw,e);return ei(r)?r.then(o=>(n?.signal?.throwIfAborted(),o)):(n?.signal?.throwIfAborted(),r)}}function Gb(t){if(t.length>Et){t=co(t,Et+vs);const r=t.subarray(0,Et),o=t.subarray(Et,t.length);return new za(r,o)}t=co(t,Et);const e=t.subarray(0,Et),n=t.subarray(vs);return new za(e,n)}function Ch(t){return t=co(t,vs),new kh(t)}async function Vb(){const{privateKey:t,publicKey:e}=jb();return new za(t,e)}function co(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new ct(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const Xb=Math.pow(2,7),Yb=Math.pow(2,14),Zb=Math.pow(2,21),Zc=Math.pow(2,28),Jc=Math.pow(2,35),Qc=Math.pow(2,42),el=Math.pow(2,49),oe=128,Le=127;function kn(t){if(t<Xb)return 1;if(t<Yb)return 2;if(t<Zb)return 3;if(t<Zc)return 4;if(t<Jc)return 5;if(t<Qc)return 6;if(t<el)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ih(t,e,n=0){switch(kn(t)){case 8:e[n++]=t&255|oe,t/=128;case 7:e[n++]=t&255|oe,t/=128;case 6:e[n++]=t&255|oe,t/=128;case 5:e[n++]=t&255|oe,t/=128;case 4:e[n++]=t&255|oe,t>>>=7;case 3:e[n++]=t&255|oe,t>>>=7;case 2:e[n++]=t&255|oe,t>>>=7;case 1:{e[n++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function Jb(t,e,n=0){switch(kn(t)){case 8:e.set(n++,t&255|oe),t/=128;case 7:e.set(n++,t&255|oe),t/=128;case 6:e.set(n++,t&255|oe),t/=128;case 5:e.set(n++,t&255|oe),t/=128;case 4:e.set(n++,t&255|oe),t>>>=7;case 3:e.set(n++,t&255|oe),t>>>=7;case 2:e.set(n++,t&255|oe),t>>>=7;case 1:{e.set(n++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Rh(t,e){let n=t[e],r=0;if(r+=n&Le,n<oe||(n=t[e+1],r+=(n&Le)<<7,n<oe)||(n=t[e+2],r+=(n&Le)<<14,n<oe)||(n=t[e+3],r+=(n&Le)<<21,n<oe)||(n=t[e+4],r+=(n&Le)*Zc,n<oe)||(n=t[e+5],r+=(n&Le)*Jc,n<oe)||(n=t[e+6],r+=(n&Le)*Qc,n<oe)||(n=t[e+7],r+=(n&Le)*el,n<oe))return r;throw new RangeError("Could not decode varint")}function Qb(t,e){let n=t.get(e),r=0;if(r+=n&Le,n<oe||(n=t.get(e+1),r+=(n&Le)<<7,n<oe)||(n=t.get(e+2),r+=(n&Le)<<14,n<oe)||(n=t.get(e+3),r+=(n&Le)<<21,n<oe)||(n=t.get(e+4),r+=(n&Le)*Zc,n<oe)||(n=t.get(e+5),r+=(n&Le)*Jc,n<oe)||(n=t.get(e+6),r+=(n&Le)*Qc,n<oe)||(n=t.get(e+7),r+=(n&Le)*el,n<oe))return r;throw new RangeError("Could not decode varint")}function e0(t,e,n=0){return e==null&&(e=Nt(kn(t))),e instanceof Uint8Array?Ih(t,e,n):Jb(t,e,n)}function Th(t,e=0){return t instanceof Uint8Array?Rh(t,e):Qb(t,e)}const tl=new Float32Array([-0]),Xt=new Uint8Array(tl.buffer);function t0(t,e,n){tl[0]=t,e[n]=Xt[0],e[n+1]=Xt[1],e[n+2]=Xt[2],e[n+3]=Xt[3]}function n0(t,e){return Xt[0]=t[e],Xt[1]=t[e+1],Xt[2]=t[e+2],Xt[3]=t[e+3],tl[0]}const nl=new Float64Array([-0]),Be=new Uint8Array(nl.buffer);function r0(t,e,n){nl[0]=t,e[n]=Be[0],e[n+1]=Be[1],e[n+2]=Be[2],e[n+3]=Be[3],e[n+4]=Be[4],e[n+5]=Be[5],e[n+6]=Be[6],e[n+7]=Be[7]}function o0(t,e){return Be[0]=t[e],Be[1]=t[e+1],Be[2]=t[e+2],Be[3]=t[e+3],Be[4]=t[e+4],Be[5]=t[e+5],Be[6]=t[e+6],Be[7]=t[e+7],nl[0]}const s0=BigInt(Number.MAX_SAFE_INTEGER),i0=BigInt(Number.MIN_SAFE_INTEGER);class _e{lo;hi;constructor(e,n){this.lo=e|0,this.hi=n|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(n+r*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(BigInt(n)+(BigInt(r)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,n=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return r===0?n===0?e<16384?e<128?1:2:e<2097152?3:4:n<16384?n<128?5:6:n<2097152?7:8:r<128?9:10}static fromBigInt(e){if(e===0n)return hn;if(e<s0&&e>i0)return this.fromNumber(Number(e));const n=e<0n;n&&(e=-e);let r=e>>32n,o=e-(r<<32n);return n&&(r=~r|0n,o=~o|0n,++o>Ad&&(o=0n,++r>Ad&&(r=0n))),new _e(Number(o),Number(r))}static fromNumber(e){if(e===0)return hn;const n=e<0;n&&(e=-e);let r=e>>>0,o=(e-r)/4294967296>>>0;return n&&(o=~o>>>0,r=~r>>>0,++r>4294967295&&(r=0,++o>4294967295&&(o=0))),new _e(r,o)}static from(e){return typeof e=="number"?_e.fromNumber(e):typeof e=="bigint"?_e.fromBigInt(e):typeof e=="string"?_e.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new _e(e.low>>>0,e.high>>>0):hn}}const hn=new _e(0,0);hn.toBigInt=function(){return 0n};hn.zzEncode=hn.zzDecode=function(){return this};hn.length=function(){return 1};const Ad=4294967296n;function a0(t){let e=0,n=0;for(let r=0;r<t.length;++r)n=t.charCodeAt(r),n<128?e+=1:n<2048?e+=2:(n&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320?(++r,e+=4):e+=3;return e}function c0(t,e,n){if(n-e<1)return"";let o;const s=[];let i=0,a;for(;e<n;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Ph(t,e,n){const r=n;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[n++]=o:o<2048?(e[n++]=o>>6|192,e[n++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[n++]=o>>18|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128,e[n++]=o&63|128):(e[n++]=o>>12|224,e[n++]=o>>6&63|128,e[n++]=o&63|128);return n-r}function rt(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function _o(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class l0{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,rt(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw rt(this,4);return _o(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw rt(this,4);return _o(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw rt(this,4);const e=n0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw rt(this,4);const e=o0(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),n=this.pos,r=this.pos+e;if(r>this.len)throw rt(this,e);return this.pos+=e,n===r?new Uint8Array(0):this.buf.subarray(n,r)}string(){const e=this.bytes();return c0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw rt(this,e);this.pos+=e}else do if(this.pos>=this.len)throw rt(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new _e(0,0);let n=0;if(this.len-this.pos>4){for(;n<4;++n)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw rt(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,e}if(this.len-this.pos>4){for(;n<5;++n)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;n<5;++n){if(this.pos>=this.len)throw rt(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw rt(this,8);const e=_o(this.buf,this.pos+=4),n=_o(this.buf,this.pos+=4);return new _e(e,n)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Rh(this.buf,this.pos);return this.pos+=kn(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function d0(t){return new l0(t instanceof Uint8Array?t:t.subarray())}function ti(t,e,n){const r=d0(t);return e.decode(r,void 0,n)}function u0(t){let r,o=8192;return function(i){if(i<1||i>4096)return Nt(i);o+i>8192&&(r=Nt(8192),o=0);const a=r.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class zr{fn;len;next;val;constructor(e,n,r){this.fn=e,this.len=n,this.next=void 0,this.val=r}}function Oi(){}class f0{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const h0=u0();function p0(t){return globalThis.Buffer!=null?Nt(t):h0(t)}class Wa{len;head;tail;states;constructor(){this.len=0,this.head=new zr(Oi,0,0),this.tail=this.head,this.states=null}_push(e,n,r){return this.tail=this.tail.next=new zr(e,n,r),this.len+=n,this}uint32(e){return this.len+=(this.tail=this.tail.next=new m0((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Oo,10,_e.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const n=_e.fromBigInt(e);return this._push(Oo,n.length(),n)}uint64Number(e){return this._push(Ih,kn(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const n=_e.fromBigInt(e).zzEncode();return this._push(Oo,n.length(),n)}sint64Number(e){const n=_e.fromNumber(e).zzEncode();return this._push(Oo,n.length(),n)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Di,1,e?1:0)}fixed32(e){return this._push(Pr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const n=_e.fromBigInt(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64Number(e){const n=_e.fromNumber(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(t0,4,e)}double(e){return this._push(r0,8,e)}bytes(e){const n=e.length>>>0;return n===0?this._push(Di,1,0):this.uint32(n)._push(w0,n,e)}string(e){const n=a0(e);return n!==0?this.uint32(n)._push(Ph,n,e):this._push(Di,1,0)}fork(){return this.states=new f0(this),this.head=this.tail=new zr(Oi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new zr(Oi,0,0),this.len=0),this}ldelim(){const e=this.head,n=this.tail,r=this.len;return this.reset().uint32(r),r!==0&&(this.tail.next=e.next,this.tail=n,this.len+=r),this}finish(){let e=this.head.next;const n=p0(this.len);let r=0;for(;e!=null;)e.fn(e.val,n,r),r+=e.len,e=e.next;return n}}function Di(t,e,n){e[n]=t&255}function g0(t,e,n){for(;t>127;)e[n++]=t&127|128,t>>>=7;e[n]=t}class m0 extends zr{next;constructor(e,n){super(g0,e,n),this.next=void 0}}function Oo(t,e,n){for(;t.hi!==0;)e[n++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[n++]=t.lo&127|128,t.lo=t.lo>>>7;e[n++]=t.lo}function Pr(t,e,n){e[n]=t&255,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}function w0(t,e,n){e.set(t,n)}globalThis.Buffer!=null&&(Wa.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(y0,e,t),this},Wa.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(b0,e,t),this});function y0(t,e,n){e.set(t,n)}function b0(t,e,n){t.length<40?Ph(t,e,n):e.utf8Write!=null?e.utf8Write(t,n):e.set(be(t),n)}function v0(){return new Wa}function ni(t,e){const n=v0();return e.encode(t,n,{lengthDelimited:!1}),n.finish()}var Ss;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(Ss||(Ss={}));function Nh(t,e,n,r){return{name:t,type:e,encode:n,decode:r}}function S0(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const n=function(s,i){const a=e(s);i.int32(a)},r=function(s){const i=s.int32();return e(i)};return Nh("enum",Ss.VARINT,n,r)}function ri(t,e){return Nh("message",Ss.LENGTH_DELIMITED,t,e)}class kd extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var fe;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(fe||(fe={}));var Ga;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(Ga||(Ga={}));(function(t){t.codec=()=>S0(Ga)})(fe||(fe={}));var bn;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(bn||(bn={}));var xs;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(xs||(xs={}));const Lh=rh;class Bh{type="RSA";jwk;_raw;_multihash;constructor(e,n){this.jwk=e,this._multihash=n}get raw(){return this._raw==null&&(this._raw=Oh(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ue.createV1(114,this._multihash)}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){return D0(this.jwk,n,e,r)}}class x0{type="RSA";jwk;_raw;publicKey;constructor(e,n){this.jwk=e,this.publicKey=n}get raw(){return this._raw==null&&(this._raw=I0(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){return O0(this.jwk,e,n)}}const E0=8192,_h=18,A0=1062,k0=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function C0(t){return{n:te(t[1],"base64url"),e:te(t[2],"base64url"),d:te(t[3],"base64url"),p:te(t[4],"base64url"),q:te(t[5],"base64url"),dp:te(t[6],"base64url"),dq:te(t[7],"base64url"),qi:te(t[8],"base64url"),kty:"RSA"}}function I0(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new ct("JWK was missing components");return Tt([We(Uint8Array.from([0])),We(be(t.n,"base64url")),We(be(t.e,"base64url")),We(be(t.d,"base64url")),We(be(t.p,"base64url")),We(be(t.q,"base64url")),We(be(t.dp,"base64url")),We(be(t.dq,"base64url")),We(be(t.qi,"base64url"))]).subarray()}function R0(t){const e=yr(t[1],{offset:0});return{kty:"RSA",n:te(e[0],"base64url"),e:te(e[1],"base64url")}}function Oh(t){if(t.n==null||t.e==null)throw new ct("JWK was missing components");return Tt([k0,Kc(Tt([We(be(t.n,"base64url")),We(be(t.e,"base64url"))]))]).subarray()}function T0(t){const e=yr(t);return P0(e)}function P0(t){const e=C0(t);return B0(e)}function N0(t,e){if(t.byteLength>=A0)throw new _f("Key size is too large");const n=yr(t,{offset:0});return L0(n,t,e)}function L0(t,e,n){const r=R0(t);if(n==null){const o=Lh(bn.encode({Type:fe.RSA,Data:e}));n=vo(_h,o)}return new Bh(r,n)}function B0(t){if(F0(t)>E0)throw new ct("Key size is too large");const e=_0(t),n=Lh(bn.encode({Type:fe.RSA,Data:Oh(e.publicKey)})),r=vo(_h,n);return new x0(e.privateKey,new Bh(e.publicKey,r))}function _0(t){if(t==null)throw new ct("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function O0(t,e,n){const r=await Lt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);n?.signal?.throwIfAborted();const o=await Lt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},r,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function D0(t,e,n,r){const o=await Lt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);r?.signal?.throwIfAborted();const s=await Lt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,n instanceof Uint8Array?n:n.subarray());return r?.signal?.throwIfAborted(),s}function F0(t){if(t.kty!=="RSA")throw new ct("invalid key type");if(t.n==null)throw new ct("invalid key modulus");return be(t.n,"base64url").length*8}class Dh extends Qf{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,Zf(e);const r=zc(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),lr(s)}update(e){return gs(this),this.iHash.update(e),this}digestInto(e){gs(this),En(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Fh=(t,e,n)=>new Dh(t,e).update(n).digest();Fh.create=(t,e)=>new Dh(t,e);const Cd=(t,e)=>(t+(t>=0?e:-e)/Mh)/e;function M0(t,e,n){const[[r,o],[s,i]]=e,a=Cd(i*t,n),c=Cd(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Ct,f=d<Ct;u&&(l=-l),f&&(d=-d);const h=Ao(Math.ceil(ih(n)/2))+Qn;if(l<Ct||l>=h||d<Ct||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Va(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Fi(t,e){const n={};for(let r of Object.keys(e))n[r]=t[r]===void 0?e[r]:t[r];return yn(n.lowS,"lowS"),yn(n.prehash,"prehash"),n.format!==void 0&&Va(n.format),n}class j0 extends Error{constructor(e=""){super(e)}}const At={Err:j0,_tlv:{encode:(t,e)=>{const{Err:n}=At;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,o=Bo(r);if(o.length/2&128)throw new n("tlv.encode: long form length too big");const s=r>127?Bo(o.length/2|128):"";return Bo(t)+s+o+e},decode(t,e){const{Err:n}=At;let r=0;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const o=e[r++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(r+=c,i<128)throw new n("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+i);if(a.length!==i)throw new n("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=At;if(t<Ct)throw new e("integer: negative integers are not allowed");let n=Bo(t);if(Number.parseInt(n[0],16)&8&&(n="00"+n),n.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return n},decode(t){const{Err:e}=At;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Qs(t)}},toSig(t){const{Err:e,_int:n,_tlv:r}=At,o=pe("signature",t),{v:s,l:i}=r.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=r.decode(2,s),{v:l,l:d}=r.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:n.decode(a),s:n.decode(l)}},hexFromSig(t){const{_tlv:e,_int:n}=At,r=e.encode(2,n.encode(t.r)),o=e.encode(2,n.encode(t.s)),s=r+o;return e.encode(48,s)}},Ct=BigInt(0),Qn=BigInt(1),Mh=BigInt(2),Do=BigInt(3),H0=BigInt(4);function zn(t,e){const{BYTES:n}=t;let r;if(typeof e=="bigint")r=e;else{let o=pe("private key",e);try{r=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${n}, got ${typeof e}`)}}if(!t.isValidNot0(r))throw new Error("invalid private key: out of range [1..N-1]");return r}function U0(t,e={}){const n=xh("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;ko(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Hh(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,C,E){const{x:P,y:I}=C.toAffine(),D=r.toBytes(P);if(yn(E,"isCompressed"),E){d();const M=!r.isOdd(I);return pt(jh(M),D)}else return pt(Uint8Array.of(4),D,r.toBytes(I))}function f(B){at(B,void 0,"Point");const{publicKey:C,publicKeyUncompressed:E}=l,P=B.length,I=B[0],D=B.subarray(1);if(P===C&&(I===2||I===3)){const M=r.fromBytes(D);if(!r.isValid(M))throw new Error("bad point: is not on curve, wrong x");const F=m(M);let L;try{L=r.sqrt(F)}catch(H){const q=H instanceof Error?": "+H.message:"";throw new Error("bad point: is not on curve, sqrt error"+q)}d();const U=r.isOdd(L);return(I&1)===1!==U&&(L=r.neg(L)),{x:M,y:L}}else if(P===E&&I===4){const M=r.BYTES,F=r.fromBytes(D.subarray(0,M)),L=r.fromBytes(D.subarray(M,M*2));if(!b(F,L))throw new Error("bad point: is not on curve");return{x:F,y:L}}else throw new Error(`bad point: got length ${P}, expected compressed=${C} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const C=r.sqr(B),E=r.mul(C,B);return r.add(r.add(E,r.mul(B,s.a)),s.b)}function b(B,C){const E=r.sqr(C),P=m(B);return r.eql(E,P)}if(!b(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=r.mul(r.pow(s.a,Do),H0),R=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(w,R)))throw new Error("bad curve params: a or b");function y(B,C,E=!1){if(!r.isValid(C)||E&&r.is0(C))throw new Error(`bad point coordinate ${B}`);return C}function k(B){if(!(B instanceof v))throw new Error("ProjectivePoint expected")}function N(B){if(!c||!c.basises)throw new Error("no endo");return M0(B,c.basises,o.ORDER)}const x=ws((B,C)=>{const{X:E,Y:P,Z:I}=B;if(r.eql(I,r.ONE))return{x:E,y:P};const D=B.is0();C==null&&(C=D?r.ONE:r.inv(I));const M=r.mul(E,C),F=r.mul(P,C),L=r.mul(I,C);if(D)return{x:r.ZERO,y:r.ZERO};if(!r.eql(L,r.ONE))throw new Error("invZ was invalid");return{x:M,y:F}}),T=ws(B=>{if(B.is0()){if(e.allowInfinityPoint&&!r.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:C,y:E}=B.toAffine();if(!r.isValid(C)||!r.isValid(E))throw new Error("bad point: x or y not field elements");if(!b(C,E))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(B,C,E,P,I){return E=new v(r.mul(E.X,B),E.Y,E.Z),C=ys(P,C),E=ys(I,E),C.add(E)}class v{constructor(C,E,P){this.X=y("x",C),this.Y=y("y",E,!0),this.Z=y("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(C){const{x:E,y:P}=C||{};if(!C||!r.isValid(E)||!r.isValid(P))throw new Error("invalid affine point");if(C instanceof v)throw new Error("projective point not allowed");return r.is0(E)&&r.is0(P)?v.ZERO:new v(E,P,r.ONE)}static fromBytes(C){const E=v.fromAffine(g(at(C,void 0,"point")));return E.assertValidity(),E}static fromHex(C){return v.fromBytes(pe("pointHex",C))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(C=8,E=!0){return _.createCache(this,C),E||this.multiply(Do),this}assertValidity(){T(this)}hasEvenY(){const{y:C}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(C)}equals(C){k(C);const{X:E,Y:P,Z:I}=this,{X:D,Y:M,Z:F}=C,L=r.eql(r.mul(E,F),r.mul(D,I)),U=r.eql(r.mul(P,F),r.mul(M,I));return L&&U}negate(){return new v(this.X,r.neg(this.Y),this.Z)}double(){const{a:C,b:E}=s,P=r.mul(E,Do),{X:I,Y:D,Z:M}=this;let F=r.ZERO,L=r.ZERO,U=r.ZERO,$=r.mul(I,I),H=r.mul(D,D),q=r.mul(M,M),K=r.mul(I,D);return K=r.add(K,K),U=r.mul(I,M),U=r.add(U,U),F=r.mul(C,U),L=r.mul(P,q),L=r.add(F,L),F=r.sub(H,L),L=r.add(H,L),L=r.mul(F,L),F=r.mul(K,F),U=r.mul(P,U),q=r.mul(C,q),K=r.sub($,q),K=r.mul(C,K),K=r.add(K,U),U=r.add($,$),$=r.add(U,$),$=r.add($,q),$=r.mul($,K),L=r.add(L,$),q=r.mul(D,M),q=r.add(q,q),$=r.mul(q,K),F=r.sub(F,$),U=r.mul(q,H),U=r.add(U,U),U=r.add(U,U),new v(F,L,U)}add(C){k(C);const{X:E,Y:P,Z:I}=this,{X:D,Y:M,Z:F}=C;let L=r.ZERO,U=r.ZERO,$=r.ZERO;const H=s.a,q=r.mul(s.b,Do);let K=r.mul(E,D),X=r.mul(P,M),z=r.mul(I,F),W=r.add(E,P),G=r.add(D,M);W=r.mul(W,G),G=r.add(K,X),W=r.sub(W,G),G=r.add(E,I);let Y=r.add(D,F);return G=r.mul(G,Y),Y=r.add(K,z),G=r.sub(G,Y),Y=r.add(P,I),L=r.add(M,F),Y=r.mul(Y,L),L=r.add(X,z),Y=r.sub(Y,L),$=r.mul(H,G),L=r.mul(q,z),$=r.add(L,$),L=r.sub(X,$),$=r.add(X,$),U=r.mul(L,$),X=r.add(K,K),X=r.add(X,K),z=r.mul(H,z),G=r.mul(q,G),X=r.add(X,z),z=r.sub(K,z),z=r.mul(H,z),G=r.add(G,z),K=r.mul(X,G),U=r.add(U,K),K=r.mul(Y,G),L=r.mul(W,L),L=r.sub(L,K),K=r.mul(W,X),$=r.mul(Y,$),$=r.add($,K),new v(L,U,$)}subtract(C){return this.add(C.negate())}is0(){return this.equals(v.ZERO)}multiply(C){const{endo:E}=e;if(!o.isValidNot0(C))throw new Error("invalid scalar: out of range");let P,I;const D=M=>_.cached(this,M,F=>an(v,F));if(E){const{k1neg:M,k1:F,k2neg:L,k2:U}=N(C),{p:$,f:H}=D(F),{p:q,f:K}=D(U);I=H.add(K),P=S(E.beta,$,q,M,L)}else{const{p:M,f:F}=D(C);P=M,I=F}return an(v,[P,I])[0]}multiplyUnsafe(C){const{endo:E}=e,P=this;if(!o.isValid(C))throw new Error("invalid scalar: out of range");if(C===Ct||P.is0())return v.ZERO;if(C===Qn)return P;if(_.hasCache(this))return this.multiply(C);if(E){const{k1neg:I,k1:D,k2neg:M,k2:F}=N(C),{p1:L,p2:U}=xb(v,P,D,F);return S(E.beta,L,U,I,M)}else return _.unsafe(P,C)}multiplyAndAddUnsafe(C,E,P){const I=this.multiplyUnsafe(E).add(C.multiplyUnsafe(P));return I.is0()?void 0:I}toAffine(C){return x(this,C)}isTorsionFree(){const{isTorsionFree:C}=e;return i===Qn?!0:C?C(v,this):_.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:C}=e;return i===Qn?this:C?C(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(C=!0){return yn(C,"isCompressed"),this.assertValidity(),h(v,this,C)}toHex(C=!0){return fn(this.toBytes(C))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(C=!0){return this.toBytes(C)}_setWindowSize(C){this.precompute(C)}static normalizeZ(C){return an(v,C)}static msm(C,E){return Sh(v,o,C,E)}static fromPrivateKey(C){return v.BASE.multiply(zn(o,C))}}v.BASE=new v(s.Gx,s.Gy,r.ONE),v.ZERO=new v(r.ZERO,r.ONE,r.ZERO),v.Fp=r,v.Fn=o;const A=o.BITS,_=new vh(v,e.endo?Math.ceil(A/2):A);return v.BASE.precompute(8),v}function jh(t){return Uint8Array.of(t?2:3)}function Hh(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function $0(t,e={}){const{Fn:n}=t,r=e.randomBytes||Wc,o=Object.assign(Hh(t.Fp,n),{seed:wh(n.ORDER)});function s(h){try{return!!zn(n,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:b}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==b?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=r(o.seed)){return bb(at(h,o.seed,"seed"),n.ORDER)}function c(h,g=!0){return t.BASE.multiply(zn(n,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:b}=o;if(n.allowedLengths||g===m)return;const w=pe("key",h).length;return w===m||w===b}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const b=zn(n,h);return t.fromHex(g).multiply(b).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>zn(n,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function q0(t,e,n={}){Zf(e),ko(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=n.randomBytes||Wc,o=n.hmac||((E,...P)=>Fh(e,E,pt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=$0(t,n),g={prehash:!1,lowS:typeof n.lowS=="boolean"?n.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function b(E){const P=a>>Qn;return E>P}function w(E,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function R(E,P){Va(P);const I=h.signature,D=P==="compact"?I:P==="recovered"?I+1:void 0;return at(E,D,`${P} signature`)}class y{constructor(P,I,D){this.r=w("r",P),this.s=w("s",I),D!=null&&(this.recovery=D),Object.freeze(this)}static fromBytes(P,I=m){R(P,I);let D;if(I==="der"){const{r:U,s:$}=At.toSig(at(P));return new y(U,$)}I==="recovered"&&(D=P[0],I="compact",P=P.subarray(1));const M=i.BYTES,F=P.subarray(0,M),L=P.subarray(M,M*2);return new y(i.fromBytes(F),i.fromBytes(L),D)}static fromHex(P,I){return this.fromBytes(ms(P),I)}addRecoveryBit(P){return new y(this.r,this.s,P)}recoverPublicKey(P){const I=s.ORDER,{r:D,s:M,recovery:F}=this;if(F==null||![0,1,2,3].includes(F))throw new Error("recovery id invalid");if(a*Mh<I&&F>1)throw new Error("recovery id is ambiguous for h>1 curve");const U=F===2||F===3?D+a:D;if(!s.isValid(U))throw new Error("recovery id 2 or 3 invalid");const $=s.toBytes(U),H=t.fromBytes(pt(jh((F&1)===0),$)),q=i.inv(U),K=N(pe("msgHash",P)),X=i.create(-K*q),z=i.create(M*q),W=t.BASE.multiplyUnsafe(X).add(H.multiplyUnsafe(z));if(W.is0())throw new Error("point at infinify");return W.assertValidity(),W}hasHighS(){return b(this.s)}toBytes(P=m){if(Va(P),P==="der")return ms(At.hexFromSig(this));const I=i.toBytes(this.r),D=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return pt(Uint8Array.of(this.recovery),I,D)}return pt(I,D)}toHex(P){return fn(this.toBytes(P))}assertValidity(){}static fromCompact(P){return y.fromBytes(pe("sig",P),"compact")}static fromDER(P){return y.fromBytes(pe("sig",P),"der")}normalizeS(){return this.hasHighS()?new y(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return fn(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return fn(this.toBytes("compact"))}}const k=n.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const I=Qs(P),D=P.length*8-c;return D>0?I>>BigInt(D):I},N=n.bits2int_modN||function(P){return i.create(k(P))},x=Ao(c);function T(E){return qa("num < 2^"+c,E,Ct,x),i.toBytes(E)}function S(E,P){return at(E,void 0,"message"),P?at(e(E),void 0,"prehashed message"):E}function v(E,P,I){if(["recovered","canonical"].some(X=>X in I))throw new Error("sign() legacy options not supported");const{lowS:D,prehash:M,extraEntropy:F}=Fi(I,g);E=S(E,M);const L=N(E),U=zn(i,P),$=[T(U),T(L)];if(F!=null&&F!==!1){const X=F===!0?r(h.secretKey):F;$.push(pe("extraEntropy",X))}const H=pt(...$),q=L;function K(X){const z=k(X);if(!i.isValidNot0(z))return;const W=i.inv(z),G=t.BASE.multiply(z).toAffine(),Y=i.create(G.x);if(Y===Ct)return;const ee=i.create(W*i.create(q+Y*U));if(ee===Ct)return;let ae=(G.x===Y?0:2)|Number(G.y&Qn),ce=ee;return D&&b(ee)&&(ce=i.neg(ee),ae^=1),new y(Y,ce,ae)}return{seed:H,k2sig:K}}function A(E,P,I={}){E=pe("message",E);const{seed:D,k2sig:M}=v(E,P,I);return lb(e.outputLen,i.BYTES,o)(D,M)}function _(E){let P;const I=typeof E=="string"||Eo(E),D=!I&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!I&&!D)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(D)P=new y(E.r,E.s);else if(I){try{P=y.fromBytes(pe("sig",E),"der")}catch(M){if(!(M instanceof At.Err))throw M}if(!P)try{P=y.fromBytes(pe("sig",E),"compact")}catch{return!1}}return P||!1}function B(E,P,I,D={}){const{lowS:M,prehash:F,format:L}=Fi(D,g);if(I=pe("publicKey",I),P=S(pe("message",P),F),"strict"in D)throw new Error("options.strict was renamed to lowS");const U=L===void 0?_(E):y.fromBytes(pe("sig",E),L);if(U===!1)return!1;try{const $=t.fromBytes(I);if(M&&U.hasHighS())return!1;const{r:H,s:q}=U,K=N(P),X=i.inv(q),z=i.create(K*X),W=i.create(H*X),G=t.BASE.multiplyUnsafe(z).add($.multiplyUnsafe(W));return G.is0()?!1:i.create(G.x)===H}catch{return!1}}function C(E,P,I={}){const{prehash:D}=Fi(I,g);return P=S(P,D),y.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:A,verify:B,recoverPublicKey:C,Signature:y,hash:e})}function K0(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp;let r=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=An(e.n,{BITS:t.nBitLength,allowedLengths:r,modFromBytes:t.wrapPrivateKey}),s={Fp:n,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function z0(t){const{CURVE:e,curveOpts:n}=K0(t),r={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,hash:t.hash,ecdsaOpts:r}}function W0(t,e){const n=e.Point;return Object.assign({},e,{ProjectivePoint:n,CURVE:Object.assign({},t,gh(n.Fn.ORDER,n.Fn.BITS))})}function G0(t){const{CURVE:e,curveOpts:n,hash:r,ecdsaOpts:o}=z0(t),s=U0(e,n),i=q0(s,r,o);return W0(t,i)}function V0(t,e){const n=r=>G0({...t,hash:r});return{...n(e),create:n}}const rl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},X0={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Id=BigInt(2);function Y0(t){const e=rl.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=he(d,n,e)*d%e,f=he(u,n,e)*d%e,h=he(f,Id,e)*l%e,g=he(h,o,e)*h%e,m=he(g,s,e)*g%e,b=he(m,a,e)*m%e,w=he(b,c,e)*b%e,R=he(w,a,e)*m%e,y=he(R,n,e)*d%e,k=he(y,i,e)*g%e,N=he(k,r,e)*l%e,x=he(N,Id,e);if(!Xa.eql(Xa.sqr(x),t))throw new Error("Cannot find square root");return x}const Xa=An(rl.p,{sqrt:Y0}),Zt=V0({...rl,Fp:Xa,lowS:!0,endo:X0},rh);function Z0(t,e,n){const r=qc.digest(e instanceof Uint8Array?e:e.subarray());if(ei(r))return r.then(({digest:o})=>(n?.signal?.throwIfAborted(),Zt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new xd(String(o))});try{return Zt.sign(r.digest,t).toDERRawBytes()}catch(o){throw new xd(String(o))}}function J0(t,e,n,r){const o=qc.digest(n instanceof Uint8Array?n:n.subarray());if(ei(o))return o.then(({digest:s})=>(r?.signal?.throwIfAborted(),Zt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Ed(String(s))});try{return r?.signal?.throwIfAborted(),Zt.verify(e,o.digest,t)}catch(s){throw new Ed(String(s))}}class Uh{type="secp256k1";raw;_key;constructor(e){this._key=rv(e),this.raw=tv(this._key)}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){return J0(this._key,n,e,r)}}class Q0{type="secp256k1";raw;publicKey;constructor(e,n){this.raw=nv(e),this.publicKey=new Uh(n??ov(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){return Z0(this.raw,e,n)}}function ev(t){return new Q0(t)}function $h(t){return new Uh(t)}function tv(t){return Zt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function nv(t){try{return Zt.getPublicKey(t,!0),t}catch(e){throw new Of(String(e))}}function rv(t){try{return Zt.ProjectivePoint.fromHex(t),t}catch(e){throw new _f(String(e))}}function ov(t){try{return Zt.getPublicKey(t,!0)}catch(e){throw new Of(String(e))}}async function sv(t,e){return Vb()}function Ya(t,e){const{Type:n,Data:r}=bn.decode(t),o=r??new Uint8Array;switch(n){case fe.RSA:return N0(o,e);case fe.Ed25519:return Ch(o);case fe.secp256k1:return $h(o);case fe.ECDSA:return Xf(o);default:throw new Xs}}function iv(t){const{Type:e,Data:n}=bn.decode(t.digest),r=n??new Uint8Array;switch(e){case fe.Ed25519:return Ch(r);case fe.secp256k1:return $h(r);case fe.ECDSA:return Xf(r);default:throw new Xs}}function oi(t){return bn.encode({Type:fe[t.type],Data:t.raw})}function av(t){const e=xs.decode(t),n=e.Data??new Uint8Array;switch(e.Type){case fe.RSA:return T0(n);case fe.Ed25519:return Gb(n);case fe.secp256k1:return ev(n);case fe.ECDSA:return Fy(n);default:throw new Xs}}function cv(t){return xs.encode({Type:fe[t.type],Data:t.raw})}const qh=Symbol.for("nodejs.util.inspect.custom"),lv=114;class ol{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Df]=!0;toString(){return this.string==null&&(this.string=Fe.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ue.createV1(lv,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return lt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return lt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[qh](){return`PeerId(${this.toString()})`}}class Kh extends ol{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class zh extends ol{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Wh extends ol{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const dv=2336;class Gh{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=So.digest(be(this.url))}[qh](){return`PeerId(${this.url})`}[Df]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ue.createV1(dv,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=te(e)),e.toString()===this.toString())}}const uv=114,Rd=2336;function fv(t,e){let n;if(t.charAt(0)==="1"||t.charAt(0)==="Q")n=jf(Fe.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return hv(ue.parse(t));throw new ct('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return Vh(n)}function ur(t){if(t.type==="Ed25519")return new zh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Wh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Kh({multihash:t.toCID().multihash,publicKey:t});throw new Xs}function Vh(t){if(gv(t))return new Kh({multihash:t});if(pv(t))try{const e=iv(t);if(e.type==="Ed25519")return new zh({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Wh({multihash:t,publicKey:e})}catch{const n=te(t.digest);return new Gh(new URL(n))}throw new Xm("Supplied PeerID Multihash is invalid")}function hv(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==uv&&t.code!==Rd)throw new Vm("Supplied PeerID CID is invalid");if(t.code===Rd){const e=te(t.multihash.digest);return new Gh(new URL(e))}return Vh(t.multihash)}function pv(t){return t.code===So.code}function gv(t){return t.code===qc.code}class Xh extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class mv extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class Nr extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Td extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class wv extends Event{data;constructor(e,n){super("message",n),this.data=e}}class sl extends Event{error;local;constructor(e,n,r){super("close",r),this.error=n,this.local=e}}class yv extends sl{constructor(e,n){super(!0,e,n)}}class bv extends sl{constructor(e,n){super(!1,e,n)}}const vv=t=>t/2**32|0,Sv=t=>t>>>0;function xv(t,e,n,r){const o=vv(n),s=Sv(n);t.setUint32(e,r?s:o,r),t.setUint32(e+4,r?o:s,r)}function Za(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ja=t=>t?`"${t}" `:"";function Bt(t,e=""){if(typeof t!="number")throw new TypeError(Ja(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ja(e)+"expected integer >= 0, got "+t);return t}function _t(t,e,n=""){if(Za(t)&&(e===void 0||t.length===e))return t;e!==void 0&&Bt(e,"length");const r=Za(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ja(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}function il(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(Bt(t.outputLen),Bt(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Ev=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Pd=(t,e)=>{Ev(t,e);const n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function Es(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Yh(t,e){_t(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function hR(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function pn(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Mi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ft(t,e){return t<<32-e|t>>>e}function pR(t,e){return t<<e|t>>>32-e>>>0}const Av=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function kv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Cv(t){for(let e=0;e<t.length;e++)t[e]=kv(t[e]);return t}const gR=Av?t=>t:Cv,Zh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Iv=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function al(t){if(_t(t),Zh)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Iv[t[n]];return e}function Nd(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function Jh(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Zh)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=Nd(t.charCodeAt(s)),a=Nd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Rv(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const n=e.scheduler.yield();return t&&n.catch(t),n}return new Promise(n=>e.setTimeout(n,0))}async function mR(t,e,n,r){if(Bt(t,"iters"),Bt(e,"tick"),typeof n!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){n(s);const i=Date.now()-o;i>=0&&i<e||(await Rv(r),o=Date.now())}}function Tv(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{pn(e)}}function wR(t,e=""){return typeof t=="string"?Tv(t):_t(t,void 0,e)}function Pv(t,e,n="opts"){return Pd(t,"defaults"),e!==void 0&&Pd(e,n),Object.assign(Object.create(null),t,e)}function Nv(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Pv({},e,"info");const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Lv(t=32){Bt(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Bv=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function _v(t,e,n){return t&e^~t&n}function Ov(t,e,n){return t&e^t&n^e&n}class Dv{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Mi(this.buffer)}update(e){Es(this),_t(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=Mi(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}r.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(n,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){Es(this),Yh(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,n.fill(0,i),this.padOffset>o-i&&(this.process(r,0),n.fill(0)),xv(r,o-8,this.length*8,s),this.process(r,0),this.roundClean();const a=e===n?r:Mi(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneIntoMeta(e){const{buffer:n,length:r,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=r,e.pos=i,i&&e.buffer.set(n),e}clone(){return this._cloneInto()}}const Fv=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Mv=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array(64);class jv extends Dv{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,n){super(64,e,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,n){for(let u=0;u<16;u++,n+=4)Ut[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Ut[u-15],h=Ut[u-2],g=ft(f,7)^ft(f,18)^f>>>3,m=ft(h,17)^ft(h,19)^h>>>10;Ut[u]=m+Ut[u-7]+g+Ut[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ft(a,6)^ft(a,11)^ft(a,25),h=d+f+_v(a,c,l)+Mv[u]+Ut[u]|0,m=(ft(r,2)^ft(r,13)^ft(r,22))+Ov(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){pn(Ut)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),pn(this.buffer)}}class Hv extends jv{constructor(){super(32,Fv)}}const ji=Nv(()=>new Hv,Bv(1));function Qh(t,e,n=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let r=0;r<t.length;r++)n(t[r],`${e}[${r}]`);return t}const er=(t,e,n)=>_t(t,e,n),ep=Bt;function tr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function Jr(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const Uv=al,$v=t=>Jh(t),tp=Za,np=t=>Lv(t),As=BigInt(0),Ld=BigInt(1),qv=t=>t?`"${t}" `:"";function si(t,e=""){if(typeof t!="boolean")throw new TypeError(qv(e)+"expected boolean, got type="+typeof t);return t}function Kv(t){if(typeof t=="bigint"){if(!gn(t))throw new RangeError("positive bigint expected, got "+t)}else ep(t);return t}function Qa(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function rp(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?As:BigInt("0x"+t)}function op(t){return rp(al(t))}function ks(t){return rp(al(lo(_t(t)).reverse()))}function sp(t,e){if(Bt(e),e===0)throw new Error("zero output length is invalid");t=Kv(t);const n=e*2,r=t.toString(16);if(r.length>n)throw new RangeError("number is too large");return Jh(r.padStart(n,"0"))}function ip(t,e){return sp(t,e).reverse()}function lo(t){return Uint8Array.from(er(t))}function gn(t){return typeof t=="bigint"&&As<=t}function ap(t,e,n){return gn(t)&&gn(e)&&gn(n)&&e<=t&&t<n}function Qr(t,e,n,r){if(!ap(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function zv(t){if(t<As)throw new Error("expected non-negative bigint, got "+t);return t===As?0:t.toString(2).length}const Wv=t=>(Qa(t,"n"),(Ld<<BigInt(t))-Ld);function Cs(t,e={},n={},r="object"){tr(t,r),tr(e,"fields"),tr(n,"optFields");function o(i,a,c){const l=r==="object"?`param "${String(i)}"`:`"${r}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(n,!0)}const ke=BigInt(0),de=BigInt(1),cn=BigInt(2),cp=BigInt(3),cl=BigInt(4),lp=BigInt(5),Gv=BigInt(7),dp=BigInt(8),Vv=BigInt(9),Xv=BigInt(15),up=BigInt(16),Yv=BigInt("0x10000000000000000");function le(t,e){if(e<=ke)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=ke?n:e+n}function Zv(t,e,n){if(n<=de)throw new Error("pow: expected modulus > 1, got "+n);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<ke)throw new Error("invalid exponent, negatives unsupported");if(e===ke)return de;if(e===de)return t;let r=t%n;if(r<ke&&(r+=n),e<Yv){let a=de;for(;e>ke;)e&de&&(a=a*r%n),r=r*r%n,e>>=de;return a}const o=[];for(;e>ke;)o.push(Number(e&Xv)),e>>=cl;const s=new Array(16);s[0]=de,s[1]=r;for(let a=2;a<16;a++)s[a]=s[a-1]*r%n;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%n,i=i*i%n,i=i*i%n,i=i*i%n;const c=o[a];c!==0&&(i=i*s[c]%n)}return i}function ot(t,e,n){if(n<=de)throw new Error("pow2: expected modulus > 1, got "+n);if(e<ke)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >ke;)r*=r,r%=n;return r}function Bd(t,e){if(t===ke)throw new Error("invert: expected non-zero number");if(e<=de)throw new Error("invert: expected modulus > 1, got "+e);let n=le(t,e),r=e,o=ke,s=de;for(;n!==ke;){const a=r/n,c=r-n*a,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==de)throw new Error("invert: does not exist");return le(o,e)}function ll(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function dl(t,e){if((t&de)===ke)throw new Error(e+": expected odd modulus, got "+t)}function fp(t,e){const n=t,r=(n.ORDER+de)/cl,o=n.pow(e,r);return ll(n,o,e),o}function Jv(t,e){const n=t,r=(n.ORDER-lp)/dp,o=n.mul(e,cn),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,cn),s),c=n.mul(i,n.sub(a,n.ONE));return ll(n,c,e),c}function Qv(t){const e=ul(t),n=hp(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+Gv)/up;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,r);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const b=l.eql(l.sqr(u),c),w=l.cmov(d,u,b);return ll(l,w,c),w})}function hp(t){if(t<cp)throw new Error("sqrt is not defined for small field");dl(t,"tonelliShanks");let e=t-de,n=0;for(;e%cn===ke;)e/=cn,n++;let r=cn;const o=ul(t);for(;Is(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return fp;let s=o.pow(r,e);const i=(e+de)/cn;return function(c,l){const d=c;if(d.is0(l))return l;if(Is(d,l)!==1)throw new Error("Cannot find square root");let u=n,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,b=d.sqr(h);for(;!d.eql(b,d.ONE);)if(m++,b=d.sqr(b),m===u)throw new Error("Cannot find square root");const w=de<<BigInt(u-m-1),R=d.pow(f,w);u=m,f=d.sqr(R),h=d.mul(h,f),g=d.mul(g,R)}return g}}function eS(t){return dl(t,"Fp.sqrt"),t%cl===cp?fp:t%dp===lp?Jv:t%up===Vv?Qv(t):hp(t)}const tS=(t,e)=>(le(t,e)&de)===de,nS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function uo(t){if(tr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);Qa(t.BYTES,"BYTES"),Qa(t.BITS,"BITS");for(const e of nS)Jr(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=de)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function pp(t,e,n=!1){uo(t),Qh(e,"nums"),si(n,"passZero");const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,c,l)=>r.is0(c)?a:(o[l]=a,r.mul(a,c)),r.ONE),i=r.inv(s);return e.reduceRight((a,c,l)=>r.is0(c)?a:(o[l]=r.mul(a,o[l]),r.mul(a,c)),i),o}function Is(t,e){uo(t);const n=t;dl(n.ORDER,"FpLegendre");const r=(n.ORDER-de)/cn,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function rS(t,e){if(e!==void 0&&ep(e),t<=ke)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=zv(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${n})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const _d=new WeakMap;class Od{ORDER;BITS;BYTES;isLE;ZERO=ke;ONE=de;_lengths;_mod;constructor(e,n={}){if(e<=de)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=rS(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return le(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return ke<=e&&e<this.ORDER}is0(e){return e===ke}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&de)===de}neg(e){return le(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return le(e*e,this.ORDER)}add(e,n){return le(e+n,this.ORDER)}sub(e,n){return le(e-n,this.ORDER)}mul(e,n){return le(e*n,this.ORDER)}pow(e,n){return Zv(e,n,this.ORDER)}div(e,n){return le(e*Bd(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return Bd(e,this.ORDER)}sqrt(e){let n=_d.get(this);return n||_d.set(this,n=eS(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?ip(e,this.BYTES):sp(e,this.BYTES)}fromBytes(e,n=!1){er(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?ks(e):op(e);if(a&&(c=le(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return pp(this,e,!0)}cmov(e,n,r){return si(r,"condition"),r?n:e}}function ul(t,e={}){return Object.freeze(Od.prototype),new Od(t,e)}const fl=BigInt(0),fo=BigInt(1),oS=BigInt(4),Hi=16,Dd=128,sS=5,Fd=2**31;function hl(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Jr(e.fromAffine,"Point.fromAffine"),Jr(e.fromBytes,"Point.fromBytes"),Jr(e.fromHex,"Point.fromHex"),tr(e.BASE,"Point.BASE"),tr(e.ZERO,"Point.ZERO"),uo(e.Fp),uo(e.Fn)}function iS(t,e){hl(t),gp(e,t);const n=pp(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function aS(t,e,n=1){if(!Number.isSafeInteger(t)||t<n||t>e)throw new Error("invalid window size, expected ["+n+".."+e+"], got W="+t)}function cS(t,e){const n=t*(4*e+128);if(n>Fd)throw new Error("invalid window size: table would need ~"+Math.ceil(n/2**20)+" MiB, max "+Fd/2**20+" MiB")}function lS(t,e){if(t!==void 0){Jr(t,"randomBytes");try{const n=t(e);if(!tp(n)||n.length!==e)return}catch{return}return t}}function gp(t,e){Qh(t,"points"),t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function dS(t,e,n){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,o)=>{if(!(n===void 0?e.isValid(r):gn(r)&&r<n))throw new Error("invalid scalar at index "+o)})}const mp=new WeakMap;function Ui(t){return mp.get(t)||1}function uS(t,e){const n=t.double(),r=[t];for(let o=1;o<e;o++)r.push(r[o-1].add(n));return r}function fS(t,e){const n=2**e,r=n/2,o=BigInt(n-1),s=[];for(;t>fl;){let i=0;t&fo&&(i=Number(t&o),i>=r&&(i-=n),t-=BigInt(i)),s.push(i),t>>=fo}return s}function hS(t,e,n){const r=2**e,o=r/2,s=BigInt(r-1),i=BigInt(e),a=[];for(let c=0;c<n;c++){let l=Number(t&s);t>>=i,l>o&&(l-=r,t+=fo),a.push(l)}if(t!==fl)throw new Error("invalid wnaf");return a}function pS(t,e,n){let r=0;for(const s of n)r=Math.max(r,s.length);let o=t;for(let s=r-1;s>=0;s--){s!==r-1&&(o=o.double());for(let i=0;i<n.length;i++){const a=n[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class gS{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,n){hl(e),this.randomBytes=lS(n,Hi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,n,r){const o=Math.ceil(r/n)+1,s=2**(n-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:n,bits:r,windows:o,comp:i}}wnafCachedCT(e,n){const{W:r,windows:o,comp:s}=e,i=2**(r-1),a=hS(n,r,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let b=1;b<i;b++)g=b===h?s[f+b]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,n,r,o){let s=this.wnafPrecomputes.get(n),i=s?.find(a=>a.W===e&&a.bits===r);return i||(i=this.buildWnafTable(n,e,r),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(n,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,n){if(this.assertPoint(e),!ap(n,fo,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,n,r,o){const s=Ui(e);return s===1?this.fixedWindowCT(e,n,r):this.wnafCachedCT(this.getWnafPrecomputes(s,e,r,o),n)}mulCT(e,n,r){return this.validateMulInput(e,n),this.runCT(e,n,this.bits,r)}mulCTBlinded(e,n,r){if(this.validateMulInput(e,n),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Dd,s=this.randomBytes(Hi);if(!tp(s)||s.length!==Hi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=n+op(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,r)}fixedWindowCT(e,n,r){const o=sS,s=1<<o,i=Wv(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(r/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(n>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,n){return this.randomBytes===void 0?!1:n===fo?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,n,r,o){return this.shouldBlind(e,r)?this.mulCTBlinded(e,n,o):this.mulCT(e,n,o)}mulUnsafe(e,n,r){if(this.assertPoint(e),!gn(n))throw new Error("invalid scalar");const o=Ui(e);if(o===1||n>=this.Point.Fn.ORDER)return mS(this.Point,[e],[n],!0);const s=this.getWnafPrecomputes(o,e,this.bits,r);return this.wnafCachedCT(s,n).p}setWindowSize(e,n){this.assertPoint(e),aS(n,this.bits);const r=Math.ceil((this.bits+Dd)/n)+1;cS(r*2**(n-1),this.Point.Fp.BYTES),mp.set(e,n),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return Ui(e)!==1}}function mS(t,e,n,r=!1){if(hl(t),gp(e,t),si(r,"allowOversized"),dS(n,t.Fn,r?t.Fn.ORDER**oS:void 0),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>uS(i,4)),s=n.map(i=>fS(i,4));return pS(t.ZERO,o,s)}function Md(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return uo(e),e}else return ul(t,{isLE:n})}function wS(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);Cs(n);for(const c of["p","n","h"]){const l=e[c];if(!(gn(l)&&l!==fl))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Md(e.p,n.Fp,r),s=Md(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function yS(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const Fo=BigInt(0),Mo=BigInt(1),jo=BigInt(2),bS=BigInt(4),jd=BigInt(8);function vS(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function SS(t,e={}){Cs(e,{},{},"extraOpts");const n=e,r=wS("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;if(Is(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(Is(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");Cs(n,{},{uvRatio:"function",randomBytes:"function"});const c=n.randomBytes===void 0?np:n.randomBytes,l=jo<<BigInt(o.BYTES*8)-Mo;function d(R){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(R)}const u=n.uvRatio===void 0?(R,y)=>{try{return{isValid:!0,value:o.sqrt(o.div(R,y))}}catch{return{isValid:!1,value:Fo}}}:n.uvRatio;if(!vS(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?R=>o.neg(R):o.eql(i.a,o.ONE)?R=>R:R=>o.mul(i.a,R);function h(R,y,k=!1){const N=k?Mo:Fo;return Qr("coordinate "+R,y,N,l),y}function g(R){if(!(R instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(y,k,N,x){this.X=h("x",y),this.Y=h("y",k),this.Z=h("z",N,!0),this.T=h("t",x),Object.freeze(this)}static CURVE(){return i}static fromAffine(y){if(y instanceof m)throw new Error("extended point not allowed");const{x:k,y:N}=y||{};return h("x",k),h("y",N),new m(k,N,o.ONE,o.mul(k,N))}static fromBytes(y,k=!1){const N=o.BYTES,{a:x,d:T}=i;y=lo(er(y,N,"point")),si(k,"zip215");const S=lo(y),v=y[N-1];S[N-1]=v&-129;const A=ks(S),_=k?l:o.ORDER;Qr("point.y",A,Fo,_);const B=o.sqr(A),C=o.sub(B,o.ONE),E=o.sub(o.mulN(T,B),x);let{isValid:P,value:I}=u(C,E);if(!P)throw new Error("bad point: invalid y coordinate");const D=d(I),M=(v&128)!==0;if(!k&&o.is0(I)&&M)throw new Error("bad point: x=0 and x_0=1");return M!==D&&(I=o.neg(I)),m.fromAffine({x:I,y:A})}static fromHex(y,k=!1){return m.fromBytes($v(y),k)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=6,k=!0){return w.setWindowSize(this,y),k||this.multiply(jo),this}assertValidity(){const y=this,{a:k,d:N}=i;if(y.is0())throw new Error("bad point: ZERO");const{X:x,Y:T,Z:S,T:v}=y,A=o.sqr(x),_=o.sqr(T),B=o.sqr(S),C=o.sqr(B),E=o.mul(A,k),P=o.mul(o.add(E,_),B),I=o.add(C,o.mul(N,o.mul(A,_)));if(!o.eql(P,I))throw new Error("bad point: equation left != right (1)");const D=o.mul(x,T),M=o.mul(S,v);if(!o.eql(D,M))throw new Error("bad point: equation left != right (2)")}equals(y){g(y);const{X:k,Y:N,Z:x}=this,{X:T,Y:S,Z:v}=y,A=o.mul(k,v),_=o.mul(T,x),B=o.mul(N,v),C=o.mul(S,x);return o.eql(A,_)&&o.eql(B,C)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:y,Y:k,Z:N}=this,x=o.sqr(y),T=o.sqr(k),S=o.mul(o.sqr(N),jo),v=f(x),A=o.addN(y,k),_=o.sub(o.subN(o.sqr(A),x),T),B=o.addN(v,T),C=o.subN(B,S),E=o.subN(v,T),P=o.mul(_,C),I=o.mul(B,E),D=o.mul(_,E),M=o.mul(C,B);return new m(P,I,M,D)}add(y){g(y);const{d:k}=i,{X:N,Y:x,Z:T,T:S}=this,{X:v,Y:A,Z:_,T:B}=y,C=o.mul(N,v),E=o.mul(x,A),P=o.mul(o.mulN(S,k),B),I=o.mul(T,_),D=o.sub(o.subN(o.mulN(o.addN(N,x),o.addN(v,A)),C),E),M=o.subN(I,P),F=o.addN(I,P),L=o.sub(E,f(C)),U=o.mul(D,M),$=o.mul(F,L),H=o.mul(D,L),q=o.mul(M,F);return new m(U,$,q,H)}subtract(y){return g(y),this.add(y.negate())}multiply(y){if(!s.isValidNot0(y))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:k,f:N}=w.mulSecret(this,y,a,b);return b([k,N])[0]}multiplyUnsafe(y){if(!s.isValid(y))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return y===Fo?m.ZERO:this.is0()||y===Mo?this:w.mulUnsafe(this,y,b)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(y){const k=this;let N=y;if(N!=null&&typeof N!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof N);const{X:x,Y:T,Z:S}=k,v=k.is0();N==null&&(N=v?o.create(jd):o.inv(S));const A=o.mul(x,N),_=o.mul(T,N),B=o.mul(S,N);if(v)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}clearCofactor(){return a===Mo?this:a===jo?this.double():a===bS?this.double().double():a===jd?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:y,y:k}=this.toAffine(),N=o.toBytes(k);return N[N.length-1]|=d(y)?128:0,N}toHex(){return Uv(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const b=R=>iS(m,R),w=new gS(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const nn=BigInt(0),Ze=BigInt(1),Ho=BigInt(2);function Hd(t,e){return t+e-(e>>Ze<<Ze)}function xS(t){const e=BigInt(6)*t;return(n,r,o)=>{const s=r+o,a=((e+o-r)*n+r)%t;return{x_2:a,x_3:s-a}}}function ES(t){return Cs(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function AS(t){const e=ES(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=r==="x25519";if(!c&&r!=="x448")throw new Error("invalid type");const l=i===void 0?np:i,d=c?255:448,u=xS(n),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Ho**BigInt(254):Ho**BigInt(447),b=c?BigInt(8)*(Ho**BigInt(251)-Ze):BigInt(4)*(Ho**BigInt(445)-Ze),w=m+b+Ze,R=I=>le(I,n),y=k(h);function k(I){return ip(R(I),f)}function N(I){const D=lo(er(I,f,"uCoordinate"));return c&&(D[31]&=127),R(ks(D))}function x(I){return ks(o(lo(er(I,f,"scalar"))))}const T=new Set(c?[nn,Ze,n-Ze,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[nn,Ze,n-Ze]);function S(I,D){const M=N(D);if(T.has(M))throw new Error("invalid private or public key received");const F=B(M,x(I));if(F===nn)throw new Error("invalid private or public key received");return k(F)}function v(I){if(a===void 0)return S(I,y);const D=x(I);Qr("scalar",D,m,w);const M=R(a(D));if(M===nn)throw new Error("invalid private or public key received");return k(M)}const A=v,_=S;function B(I,D){Qr("u",I,nn,n),Qr("scalar",D,m,w);const M=D,F=I;let L=Ze,U=nn,$=I,H=Ze;const q=M^M>>Ze;for(let z=BigInt(d-1);z>=nn;z--){const W=Hd(n,q>>z);({x_2:L,x_3:$}=u(W,L,$)),{x_2:U,x_3:H}=u(W,U,H);const G=L+U,Y=R(G*G),ee=L-U,ae=R(ee*ee),ce=Y-ae,ie=$+H,Ue=$-H,Ie=R(Ue*G),Ve=R(ie*ee),tn=Ie+Ve,De=Ie-Ve;$=R(tn*tn),H=R(F*R(De*De)),L=R(Y*ae),U=R(ce*(Y+R(g*ce)))}const K=Hd(n,M);({x_2:L,x_3:$}=u(K,L,$)),{x_2:U,x_3:H}=u(K,U,H);const X=s(U);return R(L*X)}const C={secretKey:f,publicKey:f,seed:f},E=I=>(I=I===void 0?l(f):I,er(I,C.seed,"seed"),I),P={randomSecretKey:E};return Object.freeze(C),Object.freeze(P),Object.freeze({keygen:yS(E,A),getSharedSecret:_,getPublicKey:A,scalarMult:S,scalarMultBase:v,utils:P,GuBytes:y.slice(),lengths:C})}const Ud=BigInt(0),kS=BigInt(1),$d=BigInt(2),CS=BigInt(3),IS=BigInt(5),RS=BigInt(8),ii=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),TS={p:ii,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:RS,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function wp(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=ii,a=t*t%s*t%s,c=ot(a,$d,s)*a%s,l=ot(c,kS,s)*t%s,d=ot(l,IS,s)*l%s,u=ot(d,e,s)*d%s,f=ot(u,n,s)*u%s,h=ot(f,r,s)*f%s,g=ot(h,o,s)*h%s,m=ot(g,o,s)*h%s,b=ot(m,e,s)*d%s;return{pow_p_5_8:ot(b,$d,s)*t%s,b2:a}}function PS(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const qd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function NS(t,e){const n=ii,r=le(e*e*e,n),o=le(r*r*e,n),s=wp(t*o).pow_p_5_8;let i=le(t*r*s,n);const a=le(e*i*i,n),c=i,l=le(i*qd,n),d=a===t,u=a===le(-t,n),f=a===le(-t*qd,n);return d&&(i=c),(u||f)&&(i=l),tS(i,n)&&(i=le(-i,n)),{isValid:d||u,value:i}}const Kd=SS(TS,{uvRatio:NS}),Uo=(()=>{const t=ii,e=n=>{const{pow_p_5_8:r,b2:o}=wp(n);return le(ot(r,CS,t)*o,t)};return AS({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:PS,scalarMultBase:n=>{const r=le(n,Kd.Fn.ORDER);if(r===Ud)return Ud;const o=Kd.BASE.multiply(r);return le((o.Z+o.Y)*e(le(o.Z-o.Y,t)),t)}})})();class zd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(il(e),_t(n,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,o=new Uint8Array(r);o.set(n.length>r?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),pn(o)}update(e){return Es(this),this.iHash.update(e),this}digestInto(e){Es(this),Yh(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const yp=(()=>{const t=((e,n,r)=>new zd(e,n).update(r).digest());return t.create=(e,n)=>new zd(e,n),t})();function Wd(){const t={};return t.promise=new Promise((e,n)=>{t.resolve=e,t.reject=n}),t}class Gd{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class $i{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const n=this.head;this.head=n.next=new Gd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const n=this.tail.next;this.tail.next=null,this.tail=n,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class LS extends Error{type;code;constructor(e,n){super(e??"The operation was aborted"),this.type="aborted",this.code=n??"ABORT_ERR"}}function BS(t={}){return _S(n=>{const r=n.shift();if(r==null)return{done:!0};if(r.error!=null)throw r.error;return{done:r.done===!0,value:r.value}},t)}function _S(t,e){e=e??{};let n=e.onEnd,r=new $i,o,s,i,a=Wd();const c=async()=>{try{return r.isEmpty()?i?{done:!0}:await new Promise((b,w)=>{s=R=>{s=null,r.push(R);try{b(t(r))}catch(y){w(y)}return o}}):t(r)}finally{r.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Wd()})}},l=b=>s!=null?s(b):(r.push(b),o),d=b=>(r=new $i,s!=null?s({error:b}):(r.push({error:b}),o)),u=b=>{if(i)return o;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:b})},f=b=>i?o:(i=!0,b!=null?d(b):l({done:!0})),h=()=>(r=new $i,f(),{done:!0}),g=b=>(f(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return r.size},onEmpty:async b=>{const w=b?.signal;if(w?.throwIfAborted(),r.isEmpty())return;let R,y;w!=null&&(R=new Promise((k,N)=>{y=()=>{N(new LS)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,R])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},n==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(b){return m.throw(b),n!=null&&(n(b),n=void 0),{done:!0}},return(){return m.return(),n!=null&&(n(),n=void 0),{done:!0}},push:u,end(b){return m.end(b),n!=null&&(n(b),n=void 0),o},get readableLength(){return m.readableLength},onEmpty:b=>m.onEmpty(b)},o}class pl extends Error{name="TimeoutError";constructor(e,n){super(e,n),Error.captureStackTrace?.(this,pl)}}const Vd=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function OS(t,e){const{milliseconds:n,fallback:r,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);if(i?.aborted){f(Vd(i));return}if(i&&(c=()=>{f(Vd(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),n===Number.POSITIVE_INFINITY)return;const h=new pl;a=s.setTimeout.call(void 0,()=>{if(r){try{u(r())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${n} milliseconds`,f(h))},n)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const DS=t=>{const e=t.addEventListener||t.on||t.addListener,n=t.removeEventListener||t.off||t.removeListener;if(!e||!n)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:n.bind(t)}};function FS(t,e,n){let r;const o=new Promise((s,i)=>{if(n={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...n},!(n.count>=0&&(n.count===Number.POSITIVE_INFINITY||Number.isInteger(n.count))))throw new TypeError("The `count` option should be at least 0 or more");n.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=DS(t),u=async(...h)=>{const g=n.multiArgs?h:h[0];if(n.filter)try{if(!await n.filter(g))return}catch(m){r(),i(m);return}c.push(g),n.count===c.length&&(r(),s(c))},f=(...h)=>{r(),i(n.rejectionMultiArgs?h:h[0])};r=()=>{for(const h of a)d(h,u);for(const h of n.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of n.rejectionEvents)a.includes(h)||l(h,f);n.signal&&n.signal.addEventListener("abort",()=>{f(n.signal.reason)},{once:!0}),n.resolveImmediately&&s(c)});if(o.cancel=r,typeof n.timeout=="number"){const s=OS(o,{milliseconds:n.timeout});return s.cancel=()=>{r(),s.clear()},s}return o}function MS(t,e,n){typeof n=="function"&&(n={filter:n}),n={...n,count:1,resolveImmediately:!1};const r=FS(t,e,n),o=r.then(s=>s[0]);return o.cancel=r.cancel,o}class Rs extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class jS extends Error{static name="StreamClosedError";name="StreamClosedError"}function HS(t){return t.reason}function bp(t,e,n){if(e==null||t==null)return t;const r=HS;if(e.aborted)return t.catch(()=>{}),Promise.reject(r(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(r(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const US=Math.pow(2,20)*4;class vp extends Qm{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??US,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new se,this.writeBuffer=new se,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const n=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",n);const r=o=>{this.onDrainPromise?.reject(o.error??new jS)};this.addEventListener("close",r)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),bp(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=BS(),n=s=>{e.push(s.data)};this.addEventListener("message",n);const r=s=>{e.end(s.error)};this.addEventListener("close",r);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",n),this.removeEventListener("close",r),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Nr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(n){this.log("failed to send reset to remote - %e",n)}this.dispatchEvent(new yv(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new mv;this.dispatchEvent(new bv(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new sl))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const n=this.writeBuffer.byteLength;let r=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new se(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,r+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",r,n,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new wv(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Td(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Td(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const $S=4194304;class Xd extends Error{static name="UnwrappedError";name="UnwrappedError"}class Sp extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class qS extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class KS extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function zS(t){return typeof t?.closeRead=="function"}function WS(t){return typeof t?.close=="function"}function qi(t){return zS(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:WS(t)?t.status!=="open":!1}function GS(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function VS(t,e){const n=e?.maxBufferSize??$S,r=new se;let o,s=!1;if(!GS(t))throw new Xh("Argument should be a Stream or a Multiaddr");const i=d=>{if(r.append(d.data),r.byteLength>n){const u=r.byteLength;r.consume(r.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${n}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:r,async read(d){if(s===!0)throw new Xd("Stream was unwrapped");if(qi(t)){if(d?.bytes==null)return null;if(r.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",r.byteLength,d.bytes),new Rs(`Unexpected EOF - stream closed after reading ${r.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(r.byteLength>=u){o.resolve();break}if(await bp(o.promise,d?.signal),qi(t)){if(r.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??r.byteLength;if(r.byteLength<f){if(qi(t))throw t.log.error("closed while reading %d/%d bytes",r.byteLength,f),new Rs(`Unexpected EOF - stream closed while reading ${r.byteLength}/${f} bytes`);return l.read(d)}const h=r.sublist(0,f);return r.consume(f),h},async write(d,u){if(s===!0)throw new Xd("Stream was unwrapped");t.send(d)||await MS(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),r.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",r.byteLength),t.push(r))),t}};return l}function Yd(t,e={}){const n=VS(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=kn(e.maxDataLength));const r=e?.lengthDecoder??Th,o=e?.lengthEncoder??e0;return{async read(i){let a=-1;const c=new se;for(;;){const d=await n.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=r(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Sp("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new KS(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new qS(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await n.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new Rs(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Rs(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await n.write(new se(o(i.byteLength),i),a)},async writeV(i,a){const c=new se(...i.flatMap(l=>[o(l.byteLength),l]));await n.write(c,a)},unwrap(){return n.unwrap()}}}const XS=1024*1024*4,YS=1024*1024*4;class ZS{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new se,this.maxBufferSize=e.maxBufferSize??XS,this.maxDataLength=e.maxDataLength??YS,this.lengthDecoder=e.lengthDecoder??Th,this.encodingLength=e.encodingLength??kn}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new Xh(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let n;try{n=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(n<0||n>this.maxDataLength)throw new Sp("Invalid message length");const r=this.encodingLength(n),o=r+n;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(r,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var JS={};const ho=65535,Zd=ho-16,Co=!!JS?.DUMP_SESSION_KEYS,Jd=16;function ec(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ts=t=>t?`"${t}" `:"";function tc(t,e=""){if(typeof t!="boolean")throw new TypeError(Ts(e)+"expected boolean, got type="+typeof t);return t}function nr(t,e=""){if(typeof t!="number")throw new TypeError(Ts(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ts(e)+"expected integer >= 0, got "+t);return t}function Ae(t,e,n=""){if(ec(t)&&(e===void 0||t.length===e))return t;e!==void 0&&nr(e,"length");const r=ec(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ts(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}const Qd=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function eu(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function QS(t,e){Ae(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function It(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Yt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ex(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const rr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function tx(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function nx(t){for(let e=0;e<t.length;e++)t[e]=tx(t[e]);return t}const ln=rr?t=>t:nx;function rx(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function ox(t,e){if(rx(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function sx(t,e){return Qd(t,"defaults"),Qd(e,"opts"),Object.assign(t,e)}function ix(t,e){if(t=Ae(t),e=Ae(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function ax(t,e,n){const r=e,o=(()=>[]),s=(a,c)=>r(c,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>r(a,...c),s}const cx=(t,e)=>{function n(r,...o){if(Ae(r,void 0,"key"),t.nonceLength!==void 0){const u=o[0];Ae(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(ec(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&Ae(o[i],void 0,"AAD");const a=e(r,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ae(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,Ae(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(Ae(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(n,t),n};function nc(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(Ae(e,t,"output"),n&&!Ps(e))throw new Error("invalid output, must be aligned");return e}function lx(t,e,n){nr(t),nr(e),tc(n);const r=new Uint8Array(16),o=ex(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function Ps(t){return t.byteOffset%4===0}function Ns(t){return Uint8Array.from(Ae(t))}const xp=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),dx=ln(It(xp("expand 16-byte k"))),ux=ln(It(xp("expand 32-byte k")));function ne(t,e){return t<<e|t>>>32-e}const Lr=64,fx=16,rc=2**32-1,tu=Uint32Array.of();function hx(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Lr),d=It(l),u=rr&&Ps(o)&&Ps(s),f=u?It(o):tu,h=u?It(s):tu;if(!rr){for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),ln(d),i>=rc)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}return}for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),i>=rc)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);if(u&&m===Lr){const b=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,R;w<fx;w++)R=b+w,h[R]=f[R]^d[w];g+=Lr;continue}for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}}function px(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=sx({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return nr(o),nr(i),tc(s),tc(n),(a,c,l,d,u=0)=>{Ae(a,void 0,"key"),Ae(c,void 0,"nonce"),Ae(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=nc(f,d,!1),h&&ox(l,d),nr(u),u<0||u>=rc)throw new Error("arx: counter overflow");const g=[];let m=a.length,b,w;if(m===32)g.push(b=Ns(a)),w=ux;else if(m===16&&n)b=new Uint8Array(32),b.set(a),b.set(a,16),w=dx,g.push(b);else throw Ae(a,32,"arx key"),new Error("invalid key size");(!rr||!Ps(c))&&g.push(c=Ns(c));let R=It(b);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const N=c.subarray(0,16);if(rr)r(w,R,It(N),R);else{const x=ln(Uint32Array.from(w));r(x,R,It(N),R),Yt(x),ln(R)}c=c.subarray(16)}else rr||ln(R);const y=16-o;if(y!==c.length)throw new Error(`arx: nonce must be ${y} or 16 bytes`);if(y!==12){const N=new Uint8Array(12);N.set(c,s?0:12-c.length),c=N,g.push(c)}const k=ln(It(c));try{return hx(t,w,R,k,l,d,u,i),d}finally{Yt(...g)}}}function Re(t,e){return t[e++]&255|(t[e++]&255)<<8}class gx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=Ns(Ae(e,32,"key"));const n=Re(e,0),r=Re(e,2),o=Re(e,4),s=Re(e,6),i=Re(e,8),a=Re(e,10),c=Re(e,12),l=Re(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Re(e,16+2*d)}process(e,n,r=!1){const o=r?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],b=i[9],w=Re(e,n+0),R=Re(e,n+2),y=Re(e,n+4),k=Re(e,n+6),N=Re(e,n+8),x=Re(e,n+10),T=Re(e,n+12),S=Re(e,n+14);let v=s[0]+(w&8191),A=s[1]+((w>>>13|R<<3)&8191),_=s[2]+((R>>>10|y<<6)&8191),B=s[3]+((y>>>7|k<<9)&8191),C=s[4]+((k>>>4|N<<12)&8191),E=s[5]+(N>>>1&8191),P=s[6]+((N>>>14|x<<2)&8191),I=s[7]+((x>>>11|T<<5)&8191),D=s[8]+((T>>>8|S<<8)&8191),M=s[9]+(S>>>5|o),F=0,L=F+v*a+A*(5*b)+_*(5*m)+B*(5*g)+C*(5*h);F=L>>>13,L&=8191,L+=E*(5*f)+P*(5*u)+I*(5*d)+D*(5*l)+M*(5*c),F+=L>>>13,L&=8191;let U=F+v*c+A*a+_*(5*b)+B*(5*m)+C*(5*g);F=U>>>13,U&=8191,U+=E*(5*h)+P*(5*f)+I*(5*u)+D*(5*d)+M*(5*l),F+=U>>>13,U&=8191;let $=F+v*l+A*c+_*a+B*(5*b)+C*(5*m);F=$>>>13,$&=8191,$+=E*(5*g)+P*(5*h)+I*(5*f)+D*(5*u)+M*(5*d),F+=$>>>13,$&=8191;let H=F+v*d+A*l+_*c+B*a+C*(5*b);F=H>>>13,H&=8191,H+=E*(5*m)+P*(5*g)+I*(5*h)+D*(5*f)+M*(5*u),F+=H>>>13,H&=8191;let q=F+v*u+A*d+_*l+B*c+C*a;F=q>>>13,q&=8191,q+=E*(5*b)+P*(5*m)+I*(5*g)+D*(5*h)+M*(5*f),F+=q>>>13,q&=8191;let K=F+v*f+A*u+_*d+B*l+C*c;F=K>>>13,K&=8191,K+=E*a+P*(5*b)+I*(5*m)+D*(5*g)+M*(5*h),F+=K>>>13,K&=8191;let X=F+v*h+A*f+_*u+B*d+C*l;F=X>>>13,X&=8191,X+=E*c+P*a+I*(5*b)+D*(5*m)+M*(5*g),F+=X>>>13,X&=8191;let z=F+v*g+A*h+_*f+B*u+C*d;F=z>>>13,z&=8191,z+=E*l+P*c+I*a+D*(5*b)+M*(5*m),F+=z>>>13,z&=8191;let W=F+v*m+A*g+_*h+B*f+C*u;F=W>>>13,W&=8191,W+=E*d+P*l+I*c+D*a+M*(5*b),F+=W>>>13,W&=8191;let G=F+v*b+A*m+_*g+B*h+C*f;F=G>>>13,G&=8191,G+=E*u+P*d+I*l+D*c+M*a,F+=G>>>13,G&=8191,F=(F<<2)+F|0,F=F+L|0,L=F&8191,F=F>>>13,U+=F,s[0]=L,s[1]=U,s[2]=$,s[3]=H,s[4]=q,s[5]=K,s[6]=X,s[7]=z,s[8]=W,s[9]=G}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,r[0]=e[0]+5,o=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+o,o=r[a]>>>13,r[a]&=8191;r[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)r[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+n[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+n[a]|0)+(i>>>16)|0,e[a]=i&65535;Yt(r)}update(e){eu(this),Ae(e),e=Ns(e);const{buffer:n,blockLen:r}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(e,s);continue}n.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Yt(this.h,this.r,this.buffer,this.pad)}digestInto(e){eu(this),QS(e,this),this.finished=!0;const{buffer:n,h:r}=this;let{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=r[i]>>>0,e[s++]=r[i]>>>8}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}const mx=ax(32,t=>new gx(t));function wx(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],b=e[6],w=e[7],R=o,y=n[0],k=n[1],N=n[2],x=i,T=a,S=c,v=l,A=d,_=u,B=f,C=h,E=g,P=m,I=b,D=w,M=R,F=y,L=k,U=N;for(let H=0;H<s;H+=2)x=x+A|0,M=ne(M^x,16),E=E+M|0,A=ne(A^E,12),x=x+A|0,M=ne(M^x,8),E=E+M|0,A=ne(A^E,7),T=T+_|0,F=ne(F^T,16),P=P+F|0,_=ne(_^P,12),T=T+_|0,F=ne(F^T,8),P=P+F|0,_=ne(_^P,7),S=S+B|0,L=ne(L^S,16),I=I+L|0,B=ne(B^I,12),S=S+B|0,L=ne(L^S,8),I=I+L|0,B=ne(B^I,7),v=v+C|0,U=ne(U^v,16),D=D+U|0,C=ne(C^D,12),v=v+C|0,U=ne(U^v,8),D=D+U|0,C=ne(C^D,7),x=x+_|0,U=ne(U^x,16),I=I+U|0,_=ne(_^I,12),x=x+_|0,U=ne(U^x,8),I=I+U|0,_=ne(_^I,7),T=T+B|0,M=ne(M^T,16),D=D+M|0,B=ne(B^D,12),T=T+B|0,M=ne(M^T,8),D=D+M|0,B=ne(B^D,7),S=S+C|0,F=ne(F^S,16),E=E+F|0,C=ne(C^E,12),S=S+C|0,F=ne(F^S,8),E=E+F|0,C=ne(C^E,7),v=v+A|0,L=ne(L^v,16),P=P+L|0,A=ne(A^P,12),v=v+A|0,L=ne(L^v,8),P=P+L|0,A=ne(A^P,7);let $=0;r[$++]=i+x|0,r[$++]=a+T|0,r[$++]=c+S|0,r[$++]=l+v|0,r[$++]=d+A|0,r[$++]=u+_|0,r[$++]=f+B|0,r[$++]=h+C|0,r[$++]=g+E|0,r[$++]=m+P|0,r[$++]=b+I|0,r[$++]=w+D|0,r[$++]=R+M|0,r[$++]=y+F|0,r[$++]=k+L|0,r[$++]=N+U|0}const yx=px(wx,{counterRight:!1,counterLength:4,allowShortKeys:!1}),bx=new Uint8Array(16),nu=(t,e)=>{t.update(e);const n=e.length%16;n&&t.update(bx.subarray(n))},vx=new Uint8Array(32);function ru(t,e,n,r,o){o!==void 0&&Ae(o,void 0,"AAD");const s=t(e,n,vx),i=lx(r.length,o?o.length:0,!0),a=mx.create(s);o&&nu(a,o),nu(a,r),a.update(i);const c=a.digest();return Yt(s,i),c}const Sx=t=>(e,n,r)=>({encrypt(s,i){const a=s.length;i=nc(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,n,c,c,1);const l=ru(t,e,n,c,r);return i.set(l,a),Yt(l),i},decrypt(s,i){i=nc(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=ru(t,e,n,a,r);if(!ix(c,l))throw Yt(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,n,i,i,1),Yt(l),i}}),ou=cx({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Sx(yx));function xx(t,e,n){return il(t),n===void 0&&(n=new Uint8Array(t.outputLen)),yp(t,n,e)}const Br=Uint8Array.of(0),Ex=Uint8Array.of();function Ax(t,e,n,r=32,o){il(t),Bt(r,"length"),_t(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(r>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(r/s);if(n===void 0?n=Ex:_t(n,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=yp.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Br[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(n).update(Br).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Br[0]=i,i>1&&c.update(d),c.update(n).update(Br).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&pn(d),pn(Br),r===a.length)return a;const f=a.slice(0,r);return pn(a),f}const Ep={hashSHA256(t){return ji(t.subarray())},getHKDF(t,e){const n=xx(ji,e,t),o=Ax(ji,n,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=Uo.utils.randomSecretKey();return{publicKey:Uo.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:Uo.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return Uo.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,n,r){return ou(r,e,n).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,n,r,o){return ou(r,e,n).decrypt(t.subarray(),o)}},kx=Ep;function Cx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,n)=>t.generateX25519SharedKey(e.privateKey,n).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const Ls=t=>{const e=Nt(2);return e[0]=t>>8,e[1]=t,e};Ls.bytes=2;const Bs=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};Bs.bytes=2;function Ix(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Ap(t,e){!e.enabled||!Co||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${te(t.privateKey,"hex")}`)):e("Missing local static keys."))}function kp(t,e){!e.enabled||!Co||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${te(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Rx(t,e){!e.enabled||!Co||e(t?`REMOTE_STATIC_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote static public key.")}function Cp(t,e){!e.enabled||!Co||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Ip(t,e,n){!n.enabled||!Co||(n(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&te(t.k,"hex")}`),n(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&te(e.k,"hex")}`))}class eo extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=eo.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Tx=0,Px=4294967295,Nx="Cipherstate has reached maximum n, a new handshake must be performed";class Lx{n;bytes;view;constructor(e=Tx){this.n=e,this.bytes=$e(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Px)throw new Error(Nx)}}const or=$e(0);class $o{k;n;crypto;constructor(e,n=void 0,r=0){this.crypto=e,this.k=n,this.n=new Lx(r)}hasKey(){return!!this.k}encryptWithAd(e,n){if(!this.hasKey())return n;this.n.assertValue();const r=this.crypto.encrypt(n,this.n.getBytes(),e,this.k);return this.n.increment(),r}decryptWithAd(e,n,r){if(!this.hasKey())return n;this.n.assertValue();const o=this.crypto.decrypt(n,this.n.getBytes(),e,this.k,r);return this.n.increment(),o}}class Bx{cs;ck;h;crypto;constructor(e,n){this.crypto=e;const r=be(n,"utf-8");this.h=Ox(e,r),this.ck=this.h,this.cs=new $o(e)}mixKey(e){const[n,r]=this.crypto.hkdf(this.ck,e);this.ck=n,this.cs=new $o(this.crypto,r)}mixHash(e){this.h=this.crypto.hash(new se(this.h,e))}encryptAndHash(e){const n=this.cs.encryptWithAd(this.h,e);return this.mixHash(n),n}decryptAndHash(e){const n=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),n}split(){const[e,n]=this.crypto.hkdf(this.ck,or);return[new $o(this.crypto,e),new $o(this.crypto,n)]}}class _x{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:n,protocolName:r,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=n,this.ss=new Bx(n,r),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,n=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<n+32)throw new Error("message is not long enough");this.re=e.sublist(n,n+32),this.ss.mixHash(this.re)}readS(e,n=0){if(this.rs)throw new Error("remote static public key is already set");const r=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<n+r)throw new Error("message is not long enough");const o=e.sublist(n,n+r);return this.rs=this.ss.decryptAndHash(o),r}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Rp extends _x{writeMessageA(e){return new se(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const n=this.writeE();this.writeEE();const r=this.writeS();return this.writeES(),new se(n,r,this.ss.encryptAndHash(e))}writeMessageC(e){const n=this.writeS();return this.writeSE(),new se(n,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(n){throw new eo(`handshake stage 0 validation fail: ${n.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const n=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+n))}catch(n){throw new eo(`handshake stage 1 validation fail: ${n.message}`)}}readMessageC(e){try{const n=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(n))}catch(n){throw new eo(`handshake stage 2 validation fail: ${n.message}`)}}}function Ox(t,e){if(e.length<=32){const n=$e(32);return n.set(e),n}else return t.hash(e)}var _s;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{if(o.lengthDelimited!==!1&&r.fork(),n.webtransportCerthashes!=null)for(const s of n.webtransportCerthashes)r.uint32(10),r.bytes(s);if(n.streamMuxers!=null)for(const s of n.streamMuxers)r.uint32(18),r.string(s);o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new kd('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(n.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new kd('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(n.string());break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(_s||(_s={}));var Os;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.identityKey!=null&&n.identityKey.byteLength>0&&(r.uint32(10),r.bytes(n.identityKey)),n.identitySig!=null&&n.identitySig.byteLength>0&&(r.uint32(18),r.bytes(n.identitySig)),n.extensions!=null&&(r.uint32(34),_s.codec().encode(n.extensions,r)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={identityKey:$e(0),identitySig:$e(0)},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.identityKey=n.bytes();break}case 2:{s.identitySig=n.bytes();break}case 4:{s.extensions=_s.codec().decode(n,n.uint32(),{limits:o.limits?.extensions});break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(Os||(Os={}));async function Tp(t,e,n){const r=await t.sign(Np(e));return Os.encode({identityKey:oi(t.publicKey),identitySig:r,extensions:n})}async function Pp(t,e,n){try{const r=Os.decode(t),o=Ya(r.identityKey);if(n?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${n}`);if(!e)throw new Error("Remote static does not exist");const s=Np(e);if(!await o.verify(s,r.identitySig))throw new Error("Invalid payload signature");return r}catch(r){throw new Wm(r.message)}}function Np(t){const e=be("noise-libp2p-static-key:");return t instanceof Uint8Array?ja([e,t],e.length+t.length):(t.prepend(e),t)}class Dx extends vp{stream;handshake;metrics;decoder;constructor(e,n,r){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=n,this.metrics=r,this.decoder=new ZS({lengthDecoder:Bs,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const n=new se;for(let r=0;r<e.byteLength;r+=Zd){let o=r+Zd;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(r,o)):s=this.handshake.encrypt(e.sublist(r,o)),this.metrics?.encryptedPackets.increment(),n.append(Ls(s.byteLength)),n.append(s)}return n}decrypt(e){const n=new se;for(let r=0;r<e.byteLength;r+=ho){let o=r+ho;if(o>e.byteLength&&(o=e.byteLength),o-Jd<r)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(r,o):s=e.sublist(r,o);const i=e.subarray(r,o-Jd);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),n.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return n}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function su(t,e,n){return new Dx(t,e,n)}async function Fx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Tp(s,a.publicKey,l),u=new Rp({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Ap(u.s,n),n.trace("Stage 0 - Initiator starting to send first message."),await r.write(u.writeMessageA(or),e),n.trace("Stage 0 - Initiator finished sending first message."),kp(u.e,n),n.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await r.read(e));n.trace("Stage 1 - Initiator received the message."),Cp(u.re,n),Rx(u.rs,n),n.trace("Initiator going to check remote's signature...");const h=await Pp(f,u.rs,c);n.trace("All good with the signature!"),n.trace("Stage 2 - Initiator sending third handshake message."),await r.write(u.writeMessageC(d),e),n.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Ip(g,m,n),{payload:h,encrypt:b=>g.encryptWithAd(or,b),decrypt:(b,w)=>m.decryptWithAd(or,b,w)}}async function Mx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Tp(s,a.publicKey,l),u=new Rp({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Ap(u.s,n),n.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await r.read(e)),n.trace("Stage 0 - Responder received first message."),Cp(u.re,n),n.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await r.write(u.writeMessageB(d),e),n.trace("Stage 1 - Responder sent the second handshake message with signed payload."),kp(u.e,n),n.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await r.read(e));n.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Pp(f,u.rs,c),[g,m]=u.ss.split();return Ip(g,m,n),{payload:h,encrypt:b=>m.encryptWithAd(or,b),decrypt:(b,w)=>g.decryptWithAd(or,b,w)}}class jx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,n={}){const{staticNoiseKey:r,extensions:o,crypto:s,prologueBytes:i}=n,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??kx;this.crypto=Cx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?Ix(a):void 0,r?this.staticKey=c.generateX25519KeyPairFromSeed(r):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??$e(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[ew]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,n){const r=e.log?.newScope("noise")??this.log,o=Yd(e,{lengthEncoder:Ls,lengthDecoder:Bs,maxDataLength:ho}),s=await this.performHandshakeInitiator(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=Ya(s.payload.identityKey);return{connection:su(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const n=this.components.upgrader.getStreamMuxers();if(n!=null)for(const r of e){const o=n.get(r);if(o!=null)return o}if(e.length)throw new Gm("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,n){const r=e.log?.newScope("noise")??this.log,o=Yd(e,{lengthEncoder:Ls,lengthDecoder:Bs,maxDataLength:ho}),s=await this.performHandshakeResponder(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=Ya(s.payload.identityKey);return{connection:su(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Fx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Mx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Hx(t={}){return e=>new jx(e,t)}const Ux="termdock-e2ee-v1",oc=3600*1e3,iu=512*1024*1024,sc=4*1024*1024,es=()=>{},ai=Object.assign(es,{enabled:!1,error:es,trace:es,newScope:()=>ai});Object.freeze(ai);async function Lp(){const t=await sv();return{privateKey:t,peerId:ur(t.publicKey).toString()}}function $x(t){return btoa(String.fromCharCode(...cv(t.privateKey)))}function au(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=av(Uint8Array.from(atob(t),n=>n.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:ur(e.publicKey).toString()}}class Bp{constructor(e=es){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>sc)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(n=>{this.wake=n})}}}}class qx extends vp{constructor(e,n){super({log:ai,direction:n?"outbound":"inbound",maxReadBufferLength:sc,maxWriteBufferLength:sc}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(r=>{this.abort(fr(r))}),this.readTransport()}duplex;outgoing=new Bp(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(fr(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function fr(t){return t instanceof Error?t:new Error("Secure transport failed")}class Kx extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function zx(t){const e=t?.maxAgeMs??oc,n=t?.maxBytesPerDirection??iu;if(!Number.isSafeInteger(e)||e<=0||e>oc||!Number.isSafeInteger(n)||n<=0||n>iu)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:n}}async function Wx(t){const{identity:e,duplex:n,initiator:r,targetPinnedPeerId:o,signal:s}=t,i=zx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(r&&!o)throw new Error("A pinned target identity is required");const a=o?fv(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==ur(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new qx(n,r),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(fr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Hx({crypto:Ep,prologueBytes:new TextEncoder().encode(Ux)})({privateKey:e.privateKey,peerId:ur(e.privateKey.publicKey),logger:{forComponent:()=>ai},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(r?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:Gx(h.connection,i)}}catch(h){throw c.abort(fr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function Gx(t,e){const n=new Bp,r=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Kx,n.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-r,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,n.push(f.data.subarray())}catch(h){t.abort(fr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),n.end(f.error)},{once:!0});let u=!1;return{source:n,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(fr(h)),h}},close(f){f?t.abort(f):t.close()}}}const _p=1012,Op="Encrypted transport renewed";class gl{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(n=>{this.wake=n}),this.wake=void 0}}}const Ki=2*1024*1024,Vx=new TextEncoder,Xx=new TextDecoder("utf-8",{fatal:!0});class Yx{constructor(e){this.duplex=e;const n=this;this.done=e.sink((async function*(){for await(const r of n.outgoing)try{yield r}finally{n.outgoingBytes-=r.byteLength}})()),this.done.catch(r=>this.close(r instanceof Error?r:new Error("Transport failed")))}duplex;outgoing=new gl(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const n=Vx.encode(JSON.stringify(e));if(n.length>Ki)throw new Error("Record too large");const r=new Uint8Array(n.length+4);if(new DataView(r.buffer).setUint32(0,n.length),r.set(n,4),this.outgoingBytes+r.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=r.byteLength;try{this.outgoing.push(r)}catch(o){throw this.outgoingBytes-=r.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const n of this.duplex.source){if(e.length+n.length>Ki*2+8)throw new Error("Record buffer exceeded");const r=new Uint8Array(e.length+n.length);for(r.set(e),r.set(n,e.length),e=r;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>Ki||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(Xx.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function Dp(t){let e="";for(let n=0;n<t.length;n+=8192)e+=String.fromCharCode(...t.subarray(n,n+8192));return btoa(e)}function Fp(t){const e=atob(t);return Uint8Array.from(e,n=>n.charCodeAt(0))}function Zx(t){const e=new gl(64);t.binaryType="arraybuffer";const n=r=>{e.end(r),t.close(1e3)};return t.addEventListener("message",r=>{try{if(!(r.data instanceof ArrayBuffer)||r.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(r.data))}catch{n(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:n,async sink(r){try{for await(const o of r)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw n(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Mp=8,jp=128,Jx=5*1024*1024,Qx=jp+Mp+8,eE=256,qo=3e4,_r=64*1024;function zt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function cu(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Hp extends EventTarget{constructor(e,n,r){super(),this.url=e,this.transmit=n,this.disconnect=r}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,n=""){this.readyState!==3&&(this.disconnect(),this.finish(e,n))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const n=new Event("open");this.dispatchEvent(n),this.onopen?.(n)}else if(e.type==="ws-data"&&typeof e.data=="string"){const n=new MessageEvent("message",{data:e.data});this.dispatchEvent(n),this.onmessage?.(n)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(zt(e.error))}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e.message)}finish(e,n){if(this.readyState===3)return;this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}class tE{constructor(e,n,r){this.channel=e,this.identity=n,this.targetPeerId=r,this.read().catch(o=>this.close(zt(o))),e.done.catch(o=>this.close(zt(o)))}channel;identity;targetPeerId;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=oc-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=Qx)return!1;const n=[...this.pending.values()].filter(r=>r.kind===e).length;return e==="http"?n<Mp:e==="socket"?n<jp:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const n=crypto.randomUUID(),r=new gl(4);return this.pending.set(n,{queue:r,kind:e}),{id:n,queue:r}}reserve(e,n){return n?.aborted?Promise.reject(n.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=eE?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((r,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(n?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),qo),c={kind:e,resolve:r,reject:o,cleanup:()=>{clearTimeout(a),n?.removeEventListener("abort",i)}};this.waiting.push(c),n?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const n=this.waiting[e];if(!this.hasCapacity(n.kind)){e++;continue}this.waiting.splice(e,1),n.cleanup(),n.resolve(this.allocate(n.kind))}}async read(){try{for await(const e of this.channel.read()){const n=this.pending.get(e.id);n&&(n.socket?(n.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(n.queue.push(e),(e.type==="end"||e.type==="error")&&(n.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,n){const{id:r,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(qo,n?.timeoutMs??qo)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:r});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw zt(i.error);return i}finally{clearTimeout(s),this.release(r)}}openSocket(e){cu(e);let n;const r=new AbortController,o=new Hp(e,s=>{if(n){try{JSON.parse(s)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:n,type:"ws-data",data:s})}},()=>{if(r.abort(),n)try{this.channel.send({id:n,type:"ws-close"})}finally{this.release(n)}});return this.reserve("socket",r.signal).then(s=>{if(n=s.id,o.readyState===3){this.release(n);return}const i=this.pending.get(n);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:n,type:"ws-open",path:e})}).catch(s=>{n&&this.release(n),o.fail(zt(s))}),o}async fetch(e,n){const r=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),r);if(s.origin!==r)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,n):n),a=i.method.toUpperCase(),c=cu(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:Jx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((k,N)=>{["cookie","authorization","host","connection","content-length"].includes(N)||(d[N]=k)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},b=this.pending.get(u);if(!b)throw new Error("Secure connection closed");b.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(zt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const R=()=>{i.signal.removeEventListener("abort",w),this.release(u)},y=async()=>{let k;try{const N=(await Promise.race([h.next(),new Promise((x,T)=>{k=setTimeout(()=>T(new Error("服务响应超时,请重试。")),qo)})])).value;if(!N)throw new Error("Secure response ended unexpectedly");if(N.type==="error")throw zt(N.error);return N}finally{clearTimeout(k)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const S=i.body.getReader();g=S;let v=0,A=0;try{for(;;){const{done:_,value:B}=await S.read();if(_)break;if(v+=B.byteLength,v>l)throw new Error("Request body exceeds upload limit");for(let C=0;C<B.byteLength;C+=_r){if(this.channel.send({id:u,type:"upload",data:Dp(B.subarray(C,C+_r))}),(await y()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");A+=Math.min(_r,B.byteLength-C),n?.onUploadProgress?.(A)}}}catch(_){throw await S.cancel(_).catch(()=>{}),_}finally{g=void 0,S.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const k=await y();if(k.type!=="head"||typeof k.status!="number")throw new Error("Invalid response header");const N=new Headers(k.headers);if(a==="HEAD"||[204,205,304].includes(k.status)){if((await y()).type!=="end")throw new Error("Unexpected response body");return R(),new Response(null,{status:k.status,headers:N})}let x=!1;const T=new ReadableStream({pull:async S=>{try{x&&(this.channel.send({id:u,type:"ack"}),x=!1);const v=await y();if(v.type==="end"){S.close(),R();return}if(v.type!=="chunk"||typeof v.data!="string")throw new Error("Invalid response chunk");const A=Fp(v.data);if(A.length>_r)throw new Error("Response chunk exceeds budget");S.enqueue(A),x=!0}catch(v){S.error(v),w(),R()}},cancel:()=>{w(),R()}},{highWaterMark:_r,size:S=>S.byteLength});return new Response(T,{status:k.status,headers:N})}catch(k){throw w(),R(),k}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:_p,reason:Op});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const n of this.waiting.splice(0))n.cleanup(),n.reject(e);for(const n of this.pending.values())n.queue.end(e),n.cancelUpload?.(),n.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function vn(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const n=t.identity??await Lp(),r=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=Zx(r),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),r.removeEventListener("open",h),r.removeEventListener("error",g),r.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),r.addEventListener("open",h),r.addEventListener("error",g),r.addEventListener("close",g),r.readyState===1&&h()});const c=await Wx({identity:n,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new tE(new Yx(c.duplex),n,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(zt(d)),d}return l}catch(c){throw r.close(),c}finally{clearTimeout(i)}}const lu=256*1024,nE=1024*1024;class rE extends EventTarget{constructor(e,n,r=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(n))throw new Error("Invalid target identity");this.upstream=r(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>lu)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:n});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=Fp(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const n=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+n.length>nE||n.length>lu)throw new Error("Relay unavailable or congested");this.upstream.send(n)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let n;if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Dp(n)})}catch(r){throw this.fail("Relay transport congested"),r}}close(e=1e3,n=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,n),this.upstream.close()}}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e),this.upstream.close()}finish(e,n){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}function Up(t){return e=>new rE(e,t)}function oE(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const r=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return r.endsWith("/")&&!r.startsWith("/api/terminal/fs/preview/")?null:r}catch{return null}}function sE(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,n=r=>{if(r.source!==navigator.serviceWorker.controller||r.data?.type!=="termdock-secure-fetch"||r.ports.length!==1)return;const o=r.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=r.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!oE(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,b=!1;const w=()=>{b||(b=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=R=>{if(R.data?.type==="cancel"){w();return}R.data?.type!=="pull"||m||b||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const k=await h.read();if(k.done){o.postMessage({type:"end"}),w();return}g=k.value}const y=g.slice(0,64*1024);g=g.subarray(y.length),o.postMessage({type:"chunk",data:y.buffer},[y.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const R=await t();if(b)return;if(l&&l!==R.targetPeerId)throw new Error("Preview target changed");const y=await R.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(b){await y.body?.cancel();return}h=y.body?.getReader();const k={};y.headers.forEach((N,x)=>{k[x]=N}),o.postMessage({type:"head",status:y.status,headers:k,bodyless:!h,targetPeerId:R.targetPeerId})})().catch(()=>{b||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",n),()=>{navigator.serviceWorker.removeEventListener("message",n);for(const r of[...e])r()}}class et extends Error{constructor(){super("Device authorization expired or revoked")}}const Ko=new WeakMap;function br(t,e={}){const n=Ko.get(t);if(!t.closed&&n&&(!n.settled||Date.now()-n.at<(e.maxAgeMs??1e3)))return n.pending;const r={at:Date.now(),settled:!1,pending:void 0},o=iE(t,e.timeoutMs??5e3).then(s=>(r.at=Date.now(),r.settled=!0,s),s=>{throw Ko.get(t)===r&&Ko.delete(t),s});return r.pending=o,Ko.set(t,r),o}async function iE(t,e){const n=await t.request({type:"permissions"},{timeoutMs:e});if(n.type!=="result"||typeof n.fullService!="boolean"||!Array.isArray(n.grants))throw new Error("Invalid permission response");const r=n.grants,o=n.fullService===!0;if(!o&&r.length===0)throw new et;return{fullService:o,grants:r,canManage:o&&r.length>0||r.some(s=>s.actions.includes("authorization.manage"))}}const $p="termdock-secure-last-path:",aE=10*6e4;function qp(t){try{const e=JSON.parse(sessionStorage.getItem($p+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<aE?e.key:void 0}catch{return}}function ic(t,e){try{sessionStorage.setItem($p+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Kp(t,e,n=!1){return new Promise((r,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(n?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},b=new AbortController;d.add(b),i++,h.run(b.signal).then(w=>{if(m(!0),d.delete(b),a){e(w);return}a=!0,u(),r({value:w,key:h.key})},w=>{if(m(!1),d.delete(b),i--,!a){if(c=w,w instanceof et){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!n&&s<t.length&&(l=setTimeout(f,400))};f()})}const cE=3,lE=1/0,dE=10,zp="termdock-secure-workspace-limit";function Wp(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=dE}function uE(){try{const t=localStorage.getItem(zp),e=t==="unlimited"?1/0:Number(t);if(Wp(e))return e}catch{}return navigator.maxTouchPoints>0?cE:lE}function fE(t,e,n,r){if(t.length<=r)return t;const o=new Set(["root",e,...n?[n]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=r)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const Gp="termdock-workspace",po="termdock:workspace-visibility",ac="termdock:workspace-activate";function ci(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Gp)||"root"}let du,uu;function gt(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==du&&(du=t,uu={...t,subscribe(e){const n=t.subscribe(e,ci()),r=o=>{o.persisted||n()};return window.addEventListener("pagehide",r),()=>{n(),window.removeEventListener("pagehide",r)}}}),t?uu:void 0}catch{return}}function ts(){const t=gt();return!t||t.snapshot().activeKey===ci()}function Ds(t,e=!0){return gt()?.activate(t,e)??!1}function $n(t){gt()?.report(ci(),t)}const cc="termdock-secure-workspace-session:",Vp="termdock-secure-last-workspace";function hE(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(Vp);if(e)return e}catch{}return null}function pE(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(Vp,t)}catch{}}function yR(t){if(t)try{const e=JSON.parse(localStorage.getItem(cc+t)||"null");return localStorage.removeItem(cc+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function gE(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=hE(),f=t&&u!==t.targetPeerId?wn().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let n=uE(),r=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=fE(e.items,e.activeKey,r,n),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(po,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(ac,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){r=u},retentionLimit:()=>n,setRetentionLimit(u){if(Wp(u)){n=u;try{localStorage.setItem(zp,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Gs(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,b=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?b:w):[...e.items,b]},c(),pE(h.targetPeerId),f&&i.add(m),a();for(const[w,R]of s)l(w,R);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=wn().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(cc+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let zi;async function tt(){return zi||(zi=(async()=>{const t=await new Promise((e,n)=>{const r=indexedDB.open("termdock-device-identity",1);r.onupgradeneeded=()=>r.result.createObjectStore("keys"),r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return au(e);const n=await Lp();let r=n;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?r=au(c.result):a.put($x(n),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),r}finally{t.close()}})()),zi}const Je="termdock:secure-state";let J,qn,Me,hr="direct",ns=!1,fu=0,rs=!1,hu=-1/0;const pr=globalThis.fetch.bind(globalThis);function re(){return io()}function Gt(){return J}function mE(){return Me}function Xp(){J?.close(),Me?.close(),J=void 0,Me=void 0}async function Yp(){const t=await pr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function wE(){if(re()){await it();return}if((await Yp()).enabled)return;const t=await pr("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await Qe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function yE(t,e){const{startPasswordBootstrap:n,finishPasswordBootstrap:r}=await Qt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-zDAux6sN.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await pr(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await tt(),c=await n(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await r(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function ml(t,e){const n=re();if(n&&(n.serviceOrigin||n.url)===t)return await lc(n,e),n;try{return await yE(t,e)}catch(r){if(!(r instanceof TypeError)&&!(r instanceof DOMException))throw r;const o=(await ze()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await lc(s,e),s}}async function lc(t,e){const n=await wl(t),{startPasswordBootstrap:r,finishPasswordBootstrap:o}=await Qt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-zDAux6sN.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await n.request({type:"password-parameters"},{timeoutMs:5e3});s=await r(e,String(i.saltHex));const a=await n.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await tt()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await n.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),n.close()}}async function bE(t){try{const e=re(),n=e?.serviceOrigin||location.origin,r=await ml(n,t);return await Qe({...r,routes:e?.routes,serviceName:e?.serviceName||r.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function pu(t,e){const n=Oe(t),r=(await ze()).find(i=>(i.serviceOrigin||i.url)===n&&i.targetPeerId);if(e===void 0&&r?.targetPeerId)try{return await Qe({...r,targetPeerId:r.targetPeerId,serviceName:r.label}),{}}catch(i){if(!(i instanceof et))throw i}if(e!==void 0){const i=await ml(n,e);if(r?.targetPeerId&&r.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({...i,routes:r?.routes,serviceName:r?.label||i.serviceName}),{}}const o=await pr(new URL("/api/auth/open/parameters",n).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(r?.targetPeerId&&r.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({url:n,targetPeerId:s,serviceName:r?.label||new URL(n).host,serviceOrigin:n}),{}}function Jt(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const n=JSON.parse(localStorage.getItem(jc)||"null");n&&n.targetPeerId!==t.targetPeerId&&new URL(n.url).host===new URL(t.url).host&&e.push(n)}catch{}return e.flatMap((n,r)=>{try{return n.targetPeerId&&n.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===n.targetPeerId)===r?[{url:Oe(n.url),targetPeerId:n.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function vr(t){const e=Jt(t),n=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],r=new Set;for(const o of n)try{const s=Oe(o);e.some(i=>i.url===s)||r.add(s)}catch{}return[...r]}function Sn(t){const e=new URL("/api/federation/secure",Oe(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function en(t,e){return vn({url:Sn(t.url),targetPeerId:t.targetPeerId,identity:await tt(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function wl(t,e){const n=await tt(),r=vr(t).map(i=>({key:`direct:${i}`,run:a=>vn({url:Sn(i),targetPeerId:t.targetPeerId,identity:n,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of Jt(t))r.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[J,Me].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await en(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(Sn(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await vn({url:u.href,targetPeerId:t.targetPeerId,identity:n,socketFactory:Up(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=qp(t.targetPeerId);r.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Kp(r,i=>i.close());return ic(t.targetPeerId,s.key),s.value}async function vE(t,e){const n=await wl(t,e);try{const o=(await n.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node;if(o?.serviceId!==t.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");return{...o,serviceId:t.targetPeerId}}finally{n.close()}}async function SE(t,e){const n=await wl(t,e),r=()=>n.close();e.addEventListener("abort",r,{once:!0});try{if(e.aborted||(await br(n,{timeoutMs:3e3}),e.aborted))throw e.reason;return n}catch(o){throw n.close(),o}finally{e.removeEventListener("abort",r)}}async function Qe(t,e={}){const n=J,r=Me,o=await tt(),s=Oe(t.serviceOrigin||t.url),i=(await ze()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=Jt(a),l=vr(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,b=async(w,R)=>{if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;const y=m.get(w.targetPeerId);if(y&&!y.closed)return y;const k=await en(w,R);return g.add(k),m.set(w.targetPeerId,k),k};try{if(t.routeCode&&t.entryServiceId){const S=c.find(_=>_.targetPeerId===t.entryServiceId);if(!S)throw new Error("邀请缺少入口信息。");if((await(await b(S)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Pt({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],R=async(S,v)=>{const A=()=>S.close();v.addEventListener("abort",A,{once:!0});try{if(v.aborted||(await br(S),v.aborted))throw v.reason}catch(_){throw S.close(),_}finally{v.removeEventListener("abort",A)}};for(const S of l)w.push({key:`direct:${S}`,run:async v=>{const A=await vn({url:Sn(S),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])});return f=void 0,await R(A,v),{client:A,path:"direct"}}});for(const S of c)w.push({key:`relay:${S.targetPeerId}:${S.url}`,run:async v=>{let A,_;try{if(A=await b(S,v),v.aborted)throw v.reason;const B=await A.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(v.aborted)throw v.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const C=new URL(Sn(S.url));return C.pathname="/api/federation/relay",C.searchParams.set("routeToken",B.routeToken),_=await vn({url:C.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Up(t.targetPeerId),signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])}),f=void 0,await R(_,v),{client:_,entry:A,path:"relay"}}catch(B){throw _?.close(),A&&A!==r&&A!==n&&A.close(),B}}});const y=qp(t.targetPeerId);w.sort((S,v)=>+(v.key===y)-+(S.key===y));const k=await Kp(w,S=>{S.client.close(),S.entry&&S.entry!==n&&S.entry!==r&&S.entry.close()},!!f);if(d=k.value.client,u=k.value.entry,h=k.value.path,e.renewIfCurrent){if(J!==e.renewIfCurrent||n!==e.renewIfCurrent||n.closed||!n.canSwitchTransport||re()?.targetPeerId!==t.targetPeerId){d.close();for(const S of g)S!==Me&&S!==J&&S.close();return J??n}J=d,hr=h,Me=u,ic(t.targetPeerId,k.key),n.retire();for(const S of new Set([r,...g]))S&&S!==n&&S!==d&&S!==u&&S.close();return window.dispatchEvent(new Event(Je)),d}if(ic(t.targetPeerId,k.key),J!==n&&J&&!J.closed&&J.targetPeerId===t.targetPeerId){d.close();for(const S of g)S!==Me&&S.close();return J}h==="direct"&&new URL(s).host===location.host&&$m(t.targetPeerId);const N=(await ze()).find(S=>S.targetPeerId===t.targetPeerId||!S.targetPeerId&&(S.serviceOrigin||S.url)===s),x=N?.label||t.serviceName||new URL(s).host,T={url:s,targetPeerId:t.targetPeerId,serviceName:x,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Km:Pt)({id:N?.id||t.targetPeerId,...T,label:x}),Vn!=="unpaired"&&Vn!==t.targetPeerId&>()&&Ds({id:N?.id||t.targetPeerId,...T,label:x})){d.close();for(const S of g)S!==n&&S!==r&&S.close();return n||d}Nf(T),J=d,hr=h,Me=u;for(const S of new Set([n,r,...g]))S&&S!==d&&S!==u&&S.close();return Vn!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(Je)),d)}catch(w){d?.close();for(const R of g)R!==r&&R.close();throw w}}async function xE(){const t=J,e=re();if(!(rs||ns||qn||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-hu<3e4)){hu=performance.now(),rs=!0;try{await Qe(e,{renewIfCurrent:t})}catch(n){console.debug("[connection] renewal deferred",{reason:n instanceof Error?n.message:"unknown"})}finally{rs=!1}}}async function EE(){const t=J,e=re();if(Date.now()-fu<6e4||rs||ns||hr!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;ns=!0,fu=Date.now();let n;try{for(const o of vr(e))try{n=await vn({url:Sn(o),targetPeerId:e.targetPeerId,identity:await tt(),signal:AbortSignal.timeout(3e3)}),await br(n);break}catch(s){if(n?.close(),n=void 0,s instanceof et)throw s}if(!n||J!==t||!t.canSwitchTransport)return;const r=Me;J=n,n=void 0,Me=void 0,hr="direct",t.close(),r?.close(),window.dispatchEvent(new Event(Je))}catch(r){r instanceof et&&J===t&&(Xp(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{n?.close(),ns=!1}}function AE(){return hr}async function kE(t){return t?(t.throwIfAborted(),new Promise((e,n)=>{const r=()=>n(t.reason);t.addEventListener("abort",r,{once:!0}),it().then(o=>{t.removeEventListener("abort",r),t.aborted?n(t.reason):e(o)},o=>{t.removeEventListener("abort",r),n(o)})})):it()}async function it(){if(J&&!J.closed){const e=J;return xE(),e}if(J=void 0,qn)return qn;const t=re();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return qn=Qe(t,{rememberOnly:!0}).catch(e=>{if(J&&!J.closed&&J.targetPeerId===t.targetPeerId)return J;throw e}).finally(()=>{qn=void 0}),qn}function Zp(t){const e=new URL(t,location.href);if(J&&!J.closed)return J.openSocket(e.pathname+e.search);let n;const r=new Hp(t,o=>n?.send(o),()=>n?.close());return it().then(o=>{r.readyState!==3&&(n=o.openSocket(e.pathname+e.search),n.onopen=()=>r.accept({type:"ws-ready",id:""}),n.onmessage=s=>r.accept({type:"ws-data",id:"",data:s.data}),n.onclose=s=>r.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),n.onerror=()=>r.fail(new Error("Encrypted connection unavailable")))}).catch(o=>r.fail(o)),r}function CE(){sE(it),window.fetch=async(t,e)=>{const n=new URL(t instanceof Request?t.url:String(t),location.href);if(!n.pathname.startsWith("/api/"))return pr(t,e);if(n.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(n.pathname==="/api/meta")return pr(t,e);if(n.pathname==="/api/auth/status"){if(!re()){const s=await Yp();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await br(await it());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof et)return Response.json({enabled:!0,authenticated:!1});throw s}}if(n.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:n.href,e).json();return bE(typeof i.password=="string"?i.password:"")}if(n.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(n.pathname==="/api/auth/logout")return J&&!J.closed&&await J.request({type:"logout"}),J?.close(),Me?.close(),J=void 0,Me=void 0,Um(),location.reload(),Response.json({ok:!0});const r=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await kE(r);return t instanceof Request?o.fetch(t,e):o.fetch(n.pathname+n.search,e)}}async function IE(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of vr({...t,targetPeerId:t.targetPeerId})){let n;const r={url:e,targetPeerId:t.targetPeerId};try{n=await en(r)}catch{continue}try{const o=await n.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:r,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{n.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function RE(t,e){const n=await en(t);try{const r=await n.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(r.items)?r.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await ze()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!r.canManage)throw new Error("请先让入口管理员授权此设备。");await n.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await tt()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{n.close()}}async function TE(t,e){const n=await en(t);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await tt()).peerId;return{canManage:r.canManage===!0,grants:(Array.isArray(r.grants)?r.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{n.close()}}async function PE(t,e,n){if(n!==void 0&&(await ml(Oe(e.url),n)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const r=await en(e);try{await r.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await tt()).peerId,url:Oe(t.serviceOrigin||t.url)})}finally{r.close()}}async function NE(t,e){const n=await en(e);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await tt()).peerId,s=(Array.isArray(r.grants)?r.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await n.request({type:"route-revoke",grantId:i.id})}finally{n.close()}}async function Jp(t,e){const n=await en(e);try{const r=await n.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof r.routeCode!="string"||typeof r.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:r.routeCode,expiresAt:r.expiresAt}}finally{n.close()}}async function os(t,e){const n=(await ze()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Pt({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e});const r=re();r&&r.targetPeerId===t.targetPeerId&&Nf({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e})}async function LE(t,e){const n=t.targetPeerId;if(!n)throw new Error("请先连接这台服务,再添加备用地址。");let r;try{r=Oe(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await ze()).find(a=>a.targetPeerId===n)||t,s=a=>{const c=a.routes??Jt({...a,targetPeerId:n});if(Oe(a.serviceOrigin||a.url)===r||c.some(l=>Oe(l.url)===r))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:r,targetPeerId:n}]};s(await o());let i;try{try{i=await vn({url:Sn(r),targetPeerId:n,identity:await tt(),signal:AbortSignal.timeout(5e3)}),await br(i)}catch(l){throw l instanceof et?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await os(a,c),re()?.targetPeerId===n&&Vn===n&&(!J||J.closed)){const l=J,d=Me;J=i,i=void 0,Me=void 0,hr="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(Je))}return c}finally{i?.close()}}async function gu(t,e){await lc(t,e),await Qe({...t,pairingCode:void 0,routeCode:void 0})}function BE(){let t=!1,e=!1,n=!1,r;const o=new Map,s=new Set,i=new Map,a=async(f,h,g)=>{const m=JSON.stringify(g);if(o.get(h.serviceId)===m)return;const b=AbortSignal.timeout(1e4),w=await f.fetch("/api/csrf-token",{signal:b});if(!w.ok)throw new Error("CONNECTION_AUTHORIZATION_REQUIRED");const R=await w.json();if(typeof R.csrfToken!="string")throw new Error("INVALID_CSRF_TOKEN");const y=await f.fetch("/api/terminal/operations/collaboration-connections",{method:"POST",signal:b,headers:{"Content-Type":"application/json","X-XSRF-TOKEN":R.csrfToken},body:JSON.stringify({origin:h.origin,nodes:g})});if(!y.ok){const k=await y.json().catch(()=>({}));throw new Error(k.error||`HTTP_${y.status}`)}o.set(h.serviceId,m)},c=async()=>{if(t){n=!0;return}const f=re(),h=Gt();if(!(e||!f||!h||h.closed)){t=!0,n=!1;try{let g;const m=await Promise.race([ze(),new Promise((N,x)=>{g=setTimeout(()=>x(new Error("SERVICE_DIRECTORY_TIMEOUT")),8e3)})]).finally(()=>clearTimeout(g));m.some(N=>N.targetPeerId===f.targetPeerId)||m.push({...f,id:f.targetPeerId,label:f.serviceName||f.url});const b=[...new Map(m.filter(N=>!!N.targetPeerId).map(N=>[N.targetPeerId,N])).values()].slice(0,64);if(b.length<2)return;const w=[];for(const N of b)try{const x=`${N.targetPeerId}:${N.serviceOrigin||N.url}`;let T=i.get(x);if(!T){const S=N.targetPeerId===f.targetPeerId?(await h.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node:await vE({...N,targetPeerId:N.targetPeerId},AbortSignal.timeout(8e3));if(S?.serviceId!==N.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");const v=S.origin||N.serviceOrigin||N.url,A=new URL(v);if(A.protocol!=="https:"||A.origin!==v)throw new Error("INVALID_SERVICE_ORIGIN");T={serviceId:S.serviceId,origin:v,...S.caFingerprint256?{caFingerprint256:S.caFingerprint256}:{}},i.set(x,T)}w.push({service:N,node:T})}catch{}if(e||Gt()!==h||re()?.targetPeerId!==f.targetPeerId)return;const R=w.find(N=>N.node.serviceId===f.targetPeerId);if(!R||w.length<2){l(3e4);return}const y=w.map(N=>N.node).sort((N,x)=>N.serviceId.localeCompare(x.serviceId));await a(h,R.node,y);let k=w.length<b.length;for(const N of w){if(N===R||o.get(N.node.serviceId)===JSON.stringify(y))continue;let x;try{x=await SE({...N.service,targetPeerId:N.node.serviceId},AbortSignal.timeout(8e3)),await a(x,N.node,y)}catch{let T=s.has(N.node.serviceId);if(!T&&x)try{(await x.request({type:"collaboration-scoped-peer",origin:N.node.origin,node:R.node},{timeoutMs:8e3})).type==="result"&&(s.add(N.node.serviceId),T=!0)}catch{}T||(k=!0)}finally{x?.close()}}window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!0}})),k&&l(3e4)}catch(g){window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!1,error:g instanceof Error?g.message:"CONNECTION_ENROLLMENT_FAILED"}})),l(3e4)}finally{t=!1,n&&l(100)}}};function l(f=100){e||(clearTimeout(r),r=setTimeout(()=>{c()},f))}const d=()=>{l()},u=Vs(d);window.addEventListener(Je,d),window.addEventListener("termdock:collaboration-enroll",d),window.addEventListener("online",d),window.addEventListener("pageshow",d),window.addEventListener("pagehide",f=>{f.persisted||(e=!0,clearTimeout(r),u(),window.removeEventListener("termdock:collaboration-enroll",d),window.removeEventListener(Je,d),window.removeEventListener("online",d),window.removeEventListener("pageshow",d))}),l()}var zo={},mu;function _E(){if(mu)return zo;mu=1;var t=Lm();return zo.createRoot=t.createRoot,zo.hydrateRoot=t.hydrateRoot,zo}var OE=_E();const DE=Pf(OE);const Qp=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const FE=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const ME=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const wu=t=>{const e=ME(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Wi={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const jE=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},HE=O.createContext({}),UE=()=>O.useContext(HE),$E=O.forwardRef(({color:t,size:e,strokeWidth:n,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=UE()??{},g=r??u?Number(n??d)*24/Number(e??l):n??d;return O.createElement("svg",{ref:c,...Wi,width:e??l??Wi.width,height:e??l??Wi.height,stroke:t??f,strokeWidth:g,className:Qp("lucide",h,o),...!s&&!jE(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,b])=>O.createElement(m,b)),...Array.isArray(s)?s:[s]])});const Ce=(t,e)=>{const n=O.forwardRef(({className:r,...o},s)=>O.createElement($E,{ref:s,iconNode:e,className:Qp(`lucide-${FE(wu(t))}`,`lucide-${t}`,r),...o}));return n.displayName=wu(t),n};const qE=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],eg=Ce("arrow-left",qE);const KE=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],zE=Ce("arrow-right",KE);const WE=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],GE=Ce("arrow-up-right",WE);const VE=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],tg=Ce("bell-dot",VE);const XE=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Fs=Ce("check",XE);const YE=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],ng=Ce("chevron-down",YE);const ZE=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],xn=Ce("chevron-right",ZE);const JE=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],QE=Ce("chevron-up",JE);const e1=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],rg=Ce("copy",e1);const t1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],og=Ce("ellipsis",t1);const n1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],je=Ce("loader-circle",n1);const r1=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],o1=Ce("monitor",r1);const s1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],i1=Ce("pencil",s1);const a1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],sg=Ce("plus",a1);const c1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],li=Ce("server",c1);const l1=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],ig=Ce("smartphone",l1);const d1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],u1=Ce("terminal",d1);const f1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ag=Ce("x",f1),h1={},yu=t=>{let e;const n=new Set,r=(d,u)=>{const f=typeof d=="function"?d(e):d;if(!Object.is(f,e)){const h=e;e=u??(typeof f!="object"||f===null)?f:Object.assign({},e,f),n.forEach(g=>g(e,h))}},o=()=>e,c={setState:r,getState:o,getInitialState:()=>l,subscribe:d=>(n.add(d),()=>n.delete(d)),destroy:()=>{(h1?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=e=t(r,o,c);return c},p1=t=>t?yu(t):yu;var Gi={exports:{}},Vi={},Xi={exports:{}},Yi={};var bu;function g1(){if(bu)return Yi;bu=1;var t=Fc();function e(u,f){return u===f&&(u!==0||1/u===1/f)||u!==u&&f!==f}var n=typeof Object.is=="function"?Object.is:e,r=t.useState,o=t.useEffect,s=t.useLayoutEffect,i=t.useDebugValue;function a(u,f){var h=f(),g=r({inst:{value:h,getSnapshot:f}}),m=g[0].inst,b=g[1];return s(function(){m.value=h,m.getSnapshot=f,c(m)&&b({inst:m})},[u,h,f]),o(function(){return c(m)&&b({inst:m}),u(function(){c(m)&&b({inst:m})})},[u]),i(h),h}function c(u){var f=u.getSnapshot;u=u.value;try{var h=f();return!n(u,h)}catch{return!0}}function l(u,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return Yi.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:d,Yi}var vu;function m1(){return vu||(vu=1,Xi.exports=g1()),Xi.exports}var Su;function w1(){if(Su)return Vi;Su=1;var t=Fc(),e=m1();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=e.useSyncExternalStore,s=t.useRef,i=t.useEffect,a=t.useMemo,c=t.useDebugValue;return Vi.useSyncExternalStoreWithSelector=function(l,d,u,f,h){var g=s(null);if(g.current===null){var m={hasValue:!1,value:null};g.current=m}else m=g.current;g=a(function(){function w(x){if(!R){if(R=!0,y=x,x=f(x),h!==void 0&&m.hasValue){var T=m.value;if(h(T,x))return k=T}return k=x}if(T=k,r(y,x))return T;var S=f(x);return h!==void 0&&h(T,S)?(y=x,T):(y=x,k=S)}var R=!1,y,k,N=u===void 0?null:u;return[function(){return w(d())},N===null?void 0:function(){return w(N())}]},[d,u,f,h]);var b=o(l,g[0],g[1]);return i(function(){m.hasValue=!0,m.value=b},[b]),c(b),b},Vi}var xu;function y1(){return xu||(xu=1,Gi.exports=w1()),Gi.exports}var b1=y1();const v1=Pf(b1),cg={},{useDebugValue:S1}=Ge,{useSyncExternalStoreWithSelector:x1}=v1;let Eu=!1;const E1=t=>t;function A1(t,e=E1,n){(cg?"production":void 0)!=="production"&&n&&!Eu&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Eu=!0);const r=x1(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return S1(r),r}const Au=t=>{(cg?"production":void 0)!=="production"&&typeof t!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const e=typeof t=="function"?p1(t):t,n=(r,o)=>A1(e,r,o);return Object.assign(n,e),n},di=t=>t?Au(t):Au,yl=t=>`@collaboration:${t}`,lg=di(t=>({activePaneId:null,setActivePane:e=>t({activePaneId:e}),docks:{},hosts:{},setDock:(e,n)=>t(r=>{const o={...r.docks};return n?o[e]=n:delete o[e],{docks:o,...!n&&r.activePaneId===yl(e)?{activePaneId:r.docks[e]?.sessionId??null}:{}}}),setHost:(e,n)=>t(r=>{const o={...r.hosts};return n?o[e]=n:delete o[e],{hosts:o}})})),dn=new Map;let to;function dg(){const t=lg.getState().activePaneId;for(const[n,r]of dn)if(r.requiresFocus&&t===yl(n))return r.receive;const e=dn.get(to??"");return e&&!e.requiresFocus?e.receive:void 0}function bR(t){const e=dn.get(t);e&&(e.requiresFocus?lg.getState().setActivePane(yl(t)):to=t)}function k1(t){const e=dg();return!e||!t?!1:(e(t),!0)}function vR(t,e="default",n=!1){dn.set(e,{receive:t,requiresFocus:n}),n||(to=e);const r=o=>{const{text:s,nonce:i}=o.detail??{};!s||dg()!==t||(t(s),o.stopImmediatePropagation(),i&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:i,ok:!0}})))};return window.addEventListener("termdock-insert-reference",r,!0),()=>{dn.get(e)?.receive===t&&(dn.delete(e),to===e&&(to=[...dn.keys()].at(-1))),window.removeEventListener("termdock-insert-reference",r,!0)}}const C1=/^[A-Za-z0-9_@%+=:,./-]$/;function I1(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||C1.test(e)?e:`\\${e}`).join("")}function R1(t,e){if(!e)return!1;try{const n=new URL(e.serviceOrigin||e.url);return n.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(n.hostname)&&!(e.routes??[]).some(r=>r.targetPeerId!==e.targetPeerId)}catch{return!1}}function T1(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,n=()=>!R1(location.origin,io()),r=s=>{const i=e(s);!i||!n()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!n())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Qt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>qC);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",r,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",r,!0),window.removeEventListener("drop",o,!0)}}function nt(){return typeof window>"u"?null:window.termdockDesktop??null}const Zi=new Set;let ku=!1;function SR(t){const e=nt();if(!e)return()=>{};if(Zi.add(t),!ku){const n=r=>{if(!k1(r.paths.map(I1).join(" ")+" "))for(const o of Zi)o(r)};T1(n),e.onNativeFileDrop(n),ku=!0}return()=>{Zi.delete(t)}}function ug(t=navigator.userAgent,e=navigator.maxTouchPoints){const n=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",r=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${n} · ${r}`}let P1;function N1(){return P1??=(async()=>{const t=navigator.userAgent,[e,n]=ug().split(" · "),r=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(r)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${n}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=nt();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function L1({service:t,onBusyChange:e,onConnect:n,onConnectWithPassword:r}){const[o,s]=O.useState(),[i,a]=O.useState(!0),[c,l]=O.useState(!1),[d,u]=O.useState(""),[f,h]=O.useState(0),[g,m]=O.useState(),[b,w]=O.useState("");O.useEffect(()=>{let k=!1,N=!1,x;a(!0),u(""),s(void 0);const T=async S=>{try{const v=await IE(t);if(k)return;N=!0,s(v),u("")}catch(v){!k&&(!N||S)&&u(v instanceof Error?v.message:"暂时无法读取中转列表,请重试。")}finally{k||(a(!1),x=setTimeout(()=>{T(!1)},2e3))}};return T(!0),()=>{k=!0,clearTimeout(x)}},[t.id,t.url,f]);const R=async k=>{if(!c){l(!0),e(!0),u("");try{await k()}catch(N){u(N instanceof Error?N.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},y=async k=>{const N=await RE(o.route,k.serviceId);try{await n(N)}catch(x){if(!(x instanceof et))throw x;m(N)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:k=>{k.preventDefault(),R(async()=>{try{await r?.(g,b)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),r?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:b,disabled:c,onChange:k=>w(k.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!b,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(k=>k+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(k=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!k.available,onClick:()=>{R(()=>y(k))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:k.label||(k.url?new URL(k.url).host:`中转服务 ${k.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:k.available?k.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(xn,{size:16})]},k.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(k=>k+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const dc="#termdock-invite=";function fg(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const n=new TextEncoder().encode(JSON.stringify(t));return e.hash=dc.slice(1)+btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Ms(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(dc))throw new Error("这不是有效的 Termdock 邀请链接");const n=e.hash.slice(dc.length);if(n.length>8192)throw new Error("邀请链接过长");let r;try{const i=n.replace(/-/g,"+").replace(/_/g,"/");r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(r.v!==1||typeof r.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.serviceId)||r.routeOnly!==!0&&(typeof r.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(r.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(r.entryServiceId!==void 0&&(typeof r.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.entryServiceId)))throw new Error("邀请入口身份无效");if(r.routeCode!==void 0&&(typeof r.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.routeCode)||!r.entryServiceId))throw new Error("邀请入口权限无效");if(r.routeOnly===!0&&(!r.entryServiceId||!r.routeCode||r.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(r.serviceUrl!==void 0){const i=new URL(r.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=r.entryServiceId&&r.entryServiceId!==r.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:r.serviceId,pairingCode:r.code,...r.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof r.name=="string"?r.name.slice(0,120):void 0,entryServiceId:r.entryServiceId,routeCode:r.routeCode}}function B1({service:t,onBusyChange:e}){const n={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[r,o]=O.useState(()=>t.routes??Jt(n)),[s,i]=O.useState([]),[a,c]=O.useState(!0),[l,d]=O.useState(!1),[u,f]=O.useState(""),h=L=>{d(L),e(L)},[g,m]=O.useState(),[b,w]=O.useState(""),[R,y]=O.useState(""),[k,N]=O.useState(""),[x,T]=O.useState(!1),[S,v]=O.useState(),[A,_]=O.useState(),[B,C]=O.useState(!1);O.useEffect(()=>{let L=!1;return ze().then(U=>{L||i(U.filter($=>$.targetPeerId&&$.targetPeerId!==t.targetPeerId))}).catch(()=>{L||f("暂时无法读取可用服务。")}).finally(()=>{L||c(!1)}),()=>{L=!0}},[t.targetPeerId]);const E=L=>s.find(U=>U.targetPeerId===L.targetPeerId)?.label||new URL(L.url).host,P=async L=>{h(!0),f(""),N("");try{await L()}catch(U){const $=U instanceof Error?U.message:"";f(/AUTHORIZATION|DENIED/.test($)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},I=async(L,U)=>{const $={url:L.serviceOrigin||L.url,targetPeerId:L.targetPeerId};await P(async()=>{const H=await TE($,n.targetPeerId);if(!H.grants.some(K=>K.active)){if(!H.canManage&&U===void 0){m(L);return}await PE(n,$,U)}const q=[...r.filter(K=>K.targetPeerId!==$.targetPeerId),$];await os(t,q),o(q),m(void 0),w("")})};if(A)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:A,onFocus:L=>L.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(A).then(()=>C(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(rg,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{_(void 0),C(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),I(g,b).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:b,onChange:L=>w(L.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!b,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const D=r.filter(L=>L.targetPeerId===n.targetPeerId),M=r.filter(L=>L.targetPeerId!==n.targetPeerId),F=async()=>{if(!l){h(!0),T(!0),f(""),N("");try{o(await LE({...t,routes:r},R)),y(""),N("备用地址已验证并保存。")}catch(L){f(L instanceof Error?L.message:"暂时无法添加地址,请重试。")}finally{h(!1),T(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),F()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:R,onChange:L=>{y(L.target.value),f(""),N("")},required:!0,disabled:l||r.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||r.length>=4||!R.trim(),children:x?p.jsxs(p.Fragment,{children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),k&&p.jsx("p",{role:"status",className:"service-help",children:k}),r.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),D.length>0&&p.jsx("div",{className:"service-list",children:D.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:L.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${L.url}`,disabled:l,onClick:()=>v(L),children:"移除"})]}),S?.targetPeerId===L.targetPeerId&&S.url===L.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const U=r.filter($=>$.targetPeerId!==L.targetPeerId||$.url!==L.url);await os(t,U),o(U),v(void 0)})},children:"确认移除"})]})]})]},L.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",M.length?`(${M.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:18})}),p.jsx("span",{className:"service-name",children:E(L)}),p.jsx(Fs,{size:16,className:"service-selected"})]}),S?.targetPeerId===L.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(L),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await NE(n.targetPeerId,L);const U=r.filter($=>$.targetPeerId!==L.targetPeerId);await os(t,U),o(U),v(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const U=await Jp(n,L);_(fg({v:1,routeOnly:!0,serviceId:n.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:L.url,entryServiceId:L.targetPeerId,routeCode:U.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>v(L),children:"撤销授权"})]})]},L.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(L=>!r.some(U=>U.targetPeerId===L.targetPeerId)).map(L=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||r.length>=4,onClick:()=>{I(L)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:L.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(xn,{size:16})]},L.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!x&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function _1({current:t,renderRoutes:e,renderRelayServices:n,onOpen:r,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=O.useState([]),[f,h]=O.useState(!0),[g,m]=O.useState(l?{kind:"add"}:{kind:"list"}),[b,w]=O.useState(!1),R=O.useCallback(C=>{w(C),c?.(C)},[c]),[y,k]=O.useState(""),N=O.useCallback(()=>{m(C=>C.kind==="routes"||C.kind==="relay-services"?{kind:"edit",service:C.service}:{kind:"list"}),k("")},[]),x=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;O.useEffect(()=>{a?.({title:x,...x?{back:N}:{}})},[x,N,a]),O.useEffect(()=>{let C=!1,E=0;const P=async()=>{const D=++E;try{const M=await ze();!C&&E===D&&(u(M),k(""))}catch{!C&&E===D&&k("暂时无法读取服务列表,请重试。")}finally{!C&&E===D&&h(!1)}};P();const I=Vs(()=>{P()});return()=>{C=!0,I()}},[]);const T=async C=>{if(!b){R(!0),k("");try{await C()}catch(E){k(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{R(!1)}}},S=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(C=>kt(C,g.service))||g.service:void 0,v=t?d.find(C=>kt(C,t))||t:void 0,A=d.filter(C=>!t||!kt(C,t)),_=v?[v,...A]:A,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[_.map(C=>{const E=!!t&&kt(C,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:b||E,onClick:()=>{T(async()=>{(await r(C))?.passwordRequired&&m({kind:"add",input:C.serviceOrigin||C.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${C.label}`:`打开 ${C.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:C.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(C.serviceOrigin||C.url).host})]}),E?p.jsx(Fs,{size:17,className:"service-selected"}):p.jsx(xn,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${C.label}`,disabled:b,onClick:()=>{m({kind:"edit",service:C}),k("")},children:p.jsx(og,{size:19})})]},C.id)}),_.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:()=>{m({kind:"add"}),k("")},children:[p.jsx(sg,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:s,children:[p.jsx(ig,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[x&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:b,onClick:N,children:p.jsx(eg,{size:20})}),p.jsx("h2",{children:x||"服务"})]}),g.kind==="relay-services"?n?.(S,R):g.kind==="routes"?e?.(S,R):g.kind==="list"?B:g.kind==="add"?p.jsx(O1,{onSave:C=>T(async()=>{const E=Oe(C);u(await Pt({id:E,url:E,label:new URL(E).host})),N()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:b,onSubmit:async(C,E)=>{let P;return await T(async()=>{P=await o(C,E),P?.passwordRequired||N()}),P}}):p.jsx(D1,{onRelayServices:n&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:S,busy:b,canRemove:!t||!kt(g.service,t),onSave:C=>{T(async()=>{u(await Pt({...S,label:C})),N()})},onRemove:()=>{T(async()=>{u(await zm(g.service.id)),N()})}}),y&&p.jsx("p",{className:"service-error",role:"alert",children:y})]})}function O1({busy:t,onSubmit:e,onSave:n,initialInput:r="",passwordRequired:o=!1}){const[s,i]=O.useState(r),[a,c]=O.useState(""),[l,d]=O.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{n(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function D1({service:t,busy:e,canRemove:n,onSave:r,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=O.useState(t.label),[l,d]=O.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),r(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(xn,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(xn,{size:16})]}),n&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Fn={},Ji,Cu;function F1(){return Cu||(Cu=1,Ji=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ji}var Qi={},$t={},Iu;function Cn(){if(Iu)return $t;Iu=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return $t.getSymbolSize=function(r){if(!r)throw new Error('"version" cannot be null or undefined');if(r<1||r>40)throw new Error('"version" should be in range from 1 to 40');return r*4+17},$t.getSymbolTotalCodewords=function(r){return e[r]},$t.getBCHDigit=function(n){let r=0;for(;n!==0;)r++,n>>>=1;return r},$t.setToSJISFunction=function(r){if(typeof r!="function")throw new Error('"toSJISFunc" is not a valid function.');t=r},$t.isKanjiModeEnabled=function(){return typeof t<"u"},$t.toSJIS=function(r){return t(r)},$t}var ea={},Ru;function bl(){return Ru||(Ru=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}t.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},t.from=function(r,o){if(t.isValid(r))return r;try{return e(r)}catch{return o}}})(ea)),ea}var ta,Tu;function M1(){if(Tu)return ta;Tu=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let r=0;r<n;r++)this.putBit((e>>>n-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},ta=t,ta}var na,Pu;function j1(){if(Pu)return na;Pu=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,n,r,o){const s=e*this.size+n;this.data[s]=r,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,n){return this.data[e*this.size+n]},t.prototype.xor=function(e,n,r){this.data[e*this.size+n]^=r},t.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},na=t,na}var ra={},Nu;function H1(){return Nu||(Nu=1,(function(t){const e=Cn().getSymbolSize;t.getRowColCoords=function(r){if(r===1)return[];const o=Math.floor(r/7)+2,s=e(r),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(r){const o=[],s=t.getRowColCoords(r),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(ra)),ra}var oa={},Lu;function U1(){if(Lu)return oa;Lu=1;const t=Cn().getSymbolSize,e=7;return oa.getPositions=function(r){const o=t(r);return[[0,0],[o-e,0],[0,o-e]]},oa}var sa={},Bu;function $1(){return Bu||(Bu=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function n(r,o,s){switch(r){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,n(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(sa)),sa}var Wo={},_u;function hg(){if(_u)return Wo;_u=1;const t=bl(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],n=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return Wo.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},Wo.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return n[(o-1)*4+0];case t.M:return n[(o-1)*4+1];case t.Q:return n[(o-1)*4+2];case t.H:return n[(o-1)*4+3];default:return}},Wo}var ia={},Or={},Ou;function q1(){if(Ou)return Or;Ou=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let r=1;for(let o=0;o<255;o++)t[o]=r,e[r]=o,r<<=1,r&256&&(r^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),Or.log=function(r){if(r<1)throw new Error("log("+r+")");return e[r]},Or.exp=function(r){return t[r]},Or.mul=function(r,o){return r===0||o===0?0:t[e[r]+e[o]]},Or}var Du;function K1(){return Du||(Du=1,(function(t){const e=q1();t.mul=function(r,o){const s=new Uint8Array(r.length+o.length-1);for(let i=0;i<r.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(r[i],o[a]);return s},t.mod=function(r,o){let s=new Uint8Array(r);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(r){let o=new Uint8Array([1]);for(let s=0;s<r;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(ia)),ia}var aa,Fu;function z1(){if(Fu)return aa;Fu=1;const t=K1();function e(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(r){this.degree=r,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(r){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(r.length+this.degree);o.set(r);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},aa=e,aa}var ca={},la={},da={},Mu;function pg(){return Mu||(Mu=1,da.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),da}var ht={},ju;function gg(){if(ju)return ht;ju=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-B5ZngKXH.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-D3GMpftt.js","assets/gestureArbiter-C5OWgbj5.js","assets/gestureArbiter-C2J0D0kV.css","assets/triangle-alert-Dg2aJQyG.js","assets/referenceLongPress-C9-wHXE8.js","assets/DagPlayground-D0RdKW7B.js","assets/ChangeWalkthroughPanel-C218u7SN.js","assets/sparkles-DWhNuQTx.js","assets/DiffLab-B-64zTi5.js","assets/DiffViewer-Crz6zQeB.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab-m2uqIPwo.js","assets/DiffReview-C4WHbN50.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as Fc,a as Lm,g as Pf}from"./react-XDCjal2T.js";import{b as O,R as Ge,r as Mc}from"./dnd-BCFAPC0L.js";import{L as Bm,l as _m}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();const Om="modulepreload",Dm=function(t){return"/"+t},Vl={},Qt=function(e,n,r){let o=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(n.map(l=>{if(l=Dm(l),l in Vl)return;Vl[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":Om,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var ki={exports:{}},Cr={};var Xl;function Fm(){if(Xl)return Cr;Xl=1;var t=Fc(),e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)r.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return Cr.Fragment=n,Cr.jsx=i,Cr.jsxs=i,Cr}var Yl;function Mm(){return Yl||(Yl=1,ki.exports=Fm()),ki.exports}var p=Mm();const mn="termdock-secure-target-v1",jc="termdock-secure-entry-v1",jm=new Set([mn,jc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),Ro=typeof Storage>"u"?void 0:Storage.prototype.getItem,Ci=typeof Storage>"u"?void 0:Storage.prototype.setItem,Zl="termdock-secure-legacy-owner",Ks=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function Hm(){if(typeof window>"u")return null;try{if(Ks){const e=new URLSearchParams(location.search).get("termdock-workspace"),n=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),r=Array.isArray(n)?n.find(o=>o?.targetPeerId===e):void 0;return r&&typeof r.url=="string"&&typeof r.targetPeerId=="string"?{...r,serviceName:r.label||r.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(mn)??localStorage.getItem(mn)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let zs=Hm();const Vn=zs?.targetPeerId??"unpaired";function io(){return zs}function Nf(t){if(zs=t,Ks)return;const e=JSON.stringify(t);sessionStorage.setItem(mn,e),localStorage.setItem(mn,e)}function Um(){zs=null,!Ks&&(localStorage.removeItem(mn),sessionStorage.removeItem(mn),localStorage.removeItem(jc))}function Yr(t,e=Vn){return jm.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function $m(t){if(!(!Ro||!Ci))try{if(Ro.call(localStorage,Zl))return;Ci.call(localStorage,Zl,t);for(const n of[localStorage,sessionStorage]){const r=Array.from({length:n.length},(o,s)=>n.key(s)).filter(o=>!!o);for(const o of r){if(o.startsWith("termdock-service:")||Yr(o,t)===o)continue;const s=Yr(o,t),i=Ro.call(n,o);i!==null&&Ro.call(n,s)===null&&Ci.call(n,s,i)}}}catch{}}let Jl=!1;function qm(){if(Jl||typeof Storage>"u")return;Jl=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,n=Storage.prototype.removeItem;Storage.prototype.getItem=function(r){return t.call(this,Yr(String(r)))},Storage.prototype.setItem=function(r,o){e.call(this,Yr(String(r)),o)},Storage.prototype.removeItem=function(r){n.call(this,Yr(String(r)))}}qm();const Ws="termdock.federation.connections.v1",_a="termdock:services-changed",Hc="termdock-secure-removed-services",us=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Uc(){try{const t=JSON.parse(localStorage.getItem(Hc)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Oe(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const n=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);n.protocol==="wss:"&&(n.protocol="https:"),n.protocol==="ws:"&&(n.protocol="http:");const r=["localhost","127.0.0.1","[::1]"].includes(n.hostname);if(!["https:","http:"].includes(n.protocol)||n.protocol==="http:"&&!r)throw new Error("请使用 HTTPS 服务地址。");if(n.username||n.password||n.search||n.hash||!["/","/api/federation/secure"].includes(n.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return n.origin}function Gs(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const n=Oe(e.url),r=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(n).host;return{id:typeof e.id=="string"&&e.id?e.id:r||n,url:n,label:o,...r?{targetPeerId:r}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Oe(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:Oe(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function kt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Lf(t){const e=[];for(const n of t){const r=e.findIndex(o=>kt(o,n));r<0?e.push(n):e[r]={...e[r],...n,id:e[r].id}}return e}function yo(){return typeof window>"u"?void 0:window.termdockDesktop}function wn(){try{const t=JSON.parse(localStorage.getItem(Ws)||"[]");return Array.isArray(t)?Lf(t.map(Gs).filter(e=>!!e)):[]}catch{return[]}}function Bf(t){localStorage.setItem(Ws,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(_a))}let Ir;async function ze(){const t=yo();if(!t?.serviceConnections||!t.saveServiceConnection)return wn();if(Ir)return Ir;Ir=(async()=>{let e=await t.serviceConnections();const n=wn();for(const r of n)e.some(o=>kt(o,r))||(e=await(t.importServiceConnection||t.saveServiceConnection)(r));return n.length&&localStorage.removeItem(Ws),e})();try{return await Ir}finally{Ir=void 0}}async function Pt(t){const e=Gs(t);if(!e)throw new Error("服务地址无效。");const n=yo();if(n?.saveServiceConnection)return n.saveServiceConnection(e);const r=wn(),o=r.find(a=>a.id===e.id||kt(a,e)),s=new Set([...us(e),...o?us(o):[]]);localStorage.setItem(Hc,JSON.stringify(Uc().filter(a=>!s.has(a))));const i=Lf([...r.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return Bf(i),i}async function Km(t){const e=Gs(t);if(!e)throw new Error("服务地址无效。");const n=yo();if(n?.importServiceConnection)return n.importServiceConnection(e);if(n?.serviceConnections){const r=await n.serviceConnections();return r.some(o=>kt(o,e))?Pt(e):r}return us(e).some(r=>Uc().includes(r))?wn():Pt(e)}async function zm(t){const e=yo();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const n=wn(),r=n.find(s=>s.id===t);r&&localStorage.setItem(Hc,JSON.stringify([...new Set([...Uc(),...us(r)])].slice(-768)));const o=n.filter(s=>s.id!==t);return Bf(o),o}function Vs(t){const e=r=>{(r.key===Ws||r.key===null)&&t()};window.addEventListener(_a,t),window.addEventListener("storage",e);const n=yo()?.onServiceConnections?.(t);return()=>{window.removeEventListener(_a,t),window.removeEventListener("storage",e),n?.()}}class Wm extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let Gm=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},ct=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class _f extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Of extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class Vm extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class Xm extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Xs extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const Df=Symbol.for("@libp2p/peer-id");function Ym(t){return typeof t?.handleEvent=="function"}function Zm(t){return t===!0||t===!1}function Jm(t){return Zm(t)?t:t?.capture??!1}function Oa(t){const e={capture:Jm(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function Ql(t,e){return Oa(t).capture===Oa(e).capture}class Qm extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const n=this.#e.get(e);return n==null?0:n.length}addEventListener(e,n,r){const o=Oa(r);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,n,o),Ym(n)?n.handleEvent(l):n(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==n?!1:Ql(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,n,o)};o.signal?.addEventListener("abort",c),i.push({callback:n,wrapper:s,options:o,onAbort:c})}removeEventListener(e,n,r){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,n??null,r);return}this.#e.set(e,o.filter(s=>s.callback===n&&Ql(s.options,r)?(super.removeEventListener(e,s.wrapper,r),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,n={}){return this.dispatchEvent(new CustomEvent(e,n))}}const ew=Symbol.for("@libp2p/service-capabilities");function tw(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function Ys(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function nw(t){return new TextEncoder().encode(t)}function rw(t){return new TextDecoder().decode(t)}function ow(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(n[i]!==255)throw new TypeError(s+" is ambiguous");n[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,b=0,w=0,R=g.length;w!==R&&g[w]===0;)w++,m++;for(var y=(R-w)*d+1>>>0,k=new Uint8Array(y);w!==R;){for(var N=g[w],x=0,T=y-1;(N!==0||x<b)&&T!==-1;T--,x++)N+=256*k[T]>>>0,k[T]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");b=x,w++}for(var S=y-b;S!==y&&k[S]===0;)S++;for(var v=c.repeat(m);S<y;++S)v+=t.charAt(k[S]);return v}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var b=0,w=0;g[m]===c;)b++,m++;for(var R=(g.length-m)*l+1>>>0,y=new Uint8Array(R);g[m];){var k=n[g.charCodeAt(m)];if(k===255)return;for(var N=0,x=R-1;(k!==0||N<w)&&x!==-1;x--,N++)k+=a*y[x]>>>0,y[x]=k%256>>>0,k=k/256>>>0;if(k!==0)throw new Error("Non-zero carry");w=N,m++}if(g[m]!==" "){for(var T=R-w;T!==R&&y[T]===0;)T++;for(var S=new Uint8Array(b+(R-T)),v=b;T!==R;)S[v++]=y[T++];return S}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var sw=ow,iw=sw;class aw{name;prefix;baseEncode;constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class cw{name;prefix;baseDecode;prefixCodePoint;constructor(e,n,r){this.name=e,this.prefix=n;const o=n.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ff(this,e)}}class lw{decoders;constructor(e){this.decoders=e}or(e){return Ff(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r!=null)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Ff(t,e){return new lw({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class dw{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,n,r,o){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=o,this.encoder=new aw(e,n,r),this.decoder=new cw(e,n,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function Zs({name:t,prefix:e,encode:n,decode:r}){return new dw(t,e,n,r)}function bo({name:t,prefix:e,alphabet:n}){const{encode:r,decode:o}=iw(n,t);return Zs({prefix:e,name:t,encode:r,decode:s=>Ys(o(s))})}function uw(t,e,n,r){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*n/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${r} character`);a=a<<n|d,i+=n,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=n||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function fw(t,e,n){const r=e[e.length-1]==="=",o=(1<<n)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>n;)i-=n,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<n-i]),r)for(;(s.length*n&7)!==0;)s+="=";return s}function hw(t){const e={};for(let n=0;n<t.length;++n)e[t[n]]=n;return e}function Pe({name:t,prefix:e,bitsPerChar:n,alphabet:r}){const o=hw(r);return Zs({prefix:e,name:t,encode(s){return fw(s,r,n)},decode(s){return uw(s,o,n,t)}})}const Fe=bo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),pw=bo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),gw=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Fe,base58flickr:pw},Symbol.toStringTag,{value:"Module"})),Zr=Pe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),mw=Pe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ww=Pe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),yw=Pe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),bw=Pe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),vw=Pe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Sw=Pe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),xw=Pe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ew=Pe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Aw=Object.freeze(Object.defineProperty({__proto__:null,base32:Zr,base32hex:bw,base32hexpad:Sw,base32hexpadupper:xw,base32hexupper:vw,base32pad:ww,base32padupper:yw,base32upper:mw,base32z:Ew},Symbol.toStringTag,{value:"Module"})),Jo=bo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),kw=bo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Cw=Object.freeze(Object.defineProperty({__proto__:null,base36:Jo,base36upper:kw},Symbol.toStringTag,{value:"Module"}));var Iw=Mf,ed=128,Rw=-128,Tw=Math.pow(2,31);function Mf(t,e,n){e=e||[],n=n||0;for(var r=n;t>=Tw;)e[n++]=t&255|ed,t/=128;for(;t&Rw;)e[n++]=t&255|ed,t>>>=7;return e[n]=t|0,Mf.bytes=n-r+1,e}var Pw=Da,Nw=128,td=127;function Da(t,r){var n=0,r=r||0,o=0,s=r,i,a=t.length;do{if(s>=a)throw Da.bytes=0,new RangeError("Could not decode varint");i=t[s++],n+=o<28?(i&td)<<o:(i&td)*Math.pow(2,o),o+=7}while(i>=Nw);return Da.bytes=s-r,n}var Lw=Math.pow(2,7),Bw=Math.pow(2,14),_w=Math.pow(2,21),Ow=Math.pow(2,28),Dw=Math.pow(2,35),Fw=Math.pow(2,42),Mw=Math.pow(2,49),jw=Math.pow(2,56),Hw=Math.pow(2,63),Uw=function(t){return t<Lw?1:t<Bw?2:t<_w?3:t<Ow?4:t<Dw?5:t<Fw?6:t<Mw?7:t<jw?8:t<Hw?9:10},$w={encode:Iw,decode:Pw,encodingLength:Uw},fs=$w;function Fa(t,e=0){return[fs.decode(t,e),fs.decode.bytes]}function hs(t,e,n=0){return fs.encode(t,e,n),e}function ps(t){return fs.encodingLength(t)}function vo(t,e){const n=e.byteLength,r=ps(t),o=r+ps(n),s=new Uint8Array(o+n);return hs(t,s,0),hs(n,s,r),s.set(e,o),new $c(t,n,e,s)}function jf(t){const e=Ys(t),[n,r]=Fa(e),[o,s]=Fa(e.subarray(r)),i=e.subarray(r+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new $c(n,o,i,e)}function qw(t,e){if(t===e)return!0;{const n=e;return t.code===n.code&&t.size===n.size&&n.bytes instanceof Uint8Array&&tw(t.bytes,n.bytes)}}class $c{code;size;digest;bytes;constructor(e,n,r,o){this.code=e,this.size=n,this.digest=r,this.bytes=o}}function nd(t,e){const{bytes:n,version:r}=t;return r===0?zw(n,Ma(t),e??Fe.encoder):Ww(n,Ma(t),e??Zr.encoder)}const rd=new WeakMap;function Ma(t){const e=rd.get(t);if(e==null){const n=new Map;return rd.set(t,n),n}return e}class ue{code;version;multihash;bytes;"/";constructor(e,n,r,o){this.code=n,this.version=e,this.multihash=r,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:n}=this;if(e!==Rr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(n.code!==Gw)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ue.createV0(n)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:n}=this.multihash,r=vo(e,n);return ue.createV1(this.code,r)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ue.equals(this,e)}static equals(e,n){const r=n;return r!=null&&e.code===r.code&&e.version===r.version&&qw(e.multihash,r.multihash)}toString(e){return nd(this,e)}toJSON(){return{"/":nd(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const n=e;if(n instanceof ue)return n;if(n["/"]!=null&&n["/"]===n.bytes||n.asCID===n){const{version:r,code:o,multihash:s,bytes:i}=n;return new ue(r,o,s,i??od(r,o,s.bytes))}else if(n[Vw]===!0){const{version:r,multihash:o,code:s}=n,i=jf(o);return ue.create(r,s,i)}else return null}static create(e,n,r){if(typeof n!="number")throw new Error("String codecs are no longer supported");if(!(r.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(n!==Rr)throw new Error(`Version 0 CID must use dag-pb (code: ${Rr}) block encoding`);return new ue(e,n,r,r.bytes)}case 1:{const o=od(e,n,r.bytes);return new ue(e,n,r,o)}default:throw new Error("Invalid version")}}static createV0(e){return ue.create(0,Rr,e)}static createV1(e,n){return ue.create(1,e,n)}static decode(e){const[n,r]=ue.decodeFirst(e);if(r.length!==0)throw new Error("Incorrect length");return n}static decodeFirst(e){const n=ue.inspectBytes(e),r=n.size-n.multihashSize,o=Ys(e.subarray(r,r+n.multihashSize));if(o.byteLength!==n.multihashSize)throw new Error("Incorrect length");const s=o.subarray(n.multihashSize-n.digestSize),i=new $c(n.multihashCode,n.digestSize,s,o);return[n.version===0?ue.createV0(i):ue.createV1(n.codec,i),e.subarray(n.size)]}static inspectBytes(e){let n=0;const r=()=>{const[u,f]=Fa(e.subarray(n));return n+=f,u};let o=r(),s=Rr;if(o===18?(o=0,n=0):s=r(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=n,a=r(),c=r(),l=n+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,n){const[r,o]=Kw(e,n),s=ue.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ma(s).set(r,e),s}}function Kw(t,e){switch(t[0]){case"Q":{const n=e??Fe;return[Fe.prefix,n.decode(`${Fe.prefix}${t}`)]}case Fe.prefix:{const n=e??Fe;return[Fe.prefix,n.decode(t)]}case Zr.prefix:{const n=e??Zr;return[Zr.prefix,n.decode(t)]}case Jo.prefix:{const n=e??Jo;return[Jo.prefix,n.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function zw(t,e,n){const{prefix:r}=n;if(r!==Fe.prefix)throw Error(`Cannot string encode V0 in ${n.name} encoding`);const o=e.get(r);if(o==null){const s=n.encode(t).slice(1);return e.set(r,s),s}else return o}function Ww(t,e,n){const{prefix:r}=n,o=e.get(r);if(o==null){const s=n.encode(t);return e.set(r,s),s}else return o}const Rr=112,Gw=18;function od(t,e,n){const r=ps(t),o=r+ps(e),s=new Uint8Array(o+n.byteLength);return hs(t,s,0),hs(e,s,r),s.set(n,o),s}const Vw=Symbol.for("@ipld/js-cid/CID"),Hf=0,Xw="identity",Uf=Ys;function Yw(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return vo(Hf,Uf(t))}const So={code:Hf,name:Xw,encode:Uf,digest:Yw};function lt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function $e(t=0){return new Uint8Array(t)}function Nt(t=0){return new Uint8Array(t)}function ja(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const n=Nt(e);let r=0;for(const o of t)n.set(o,r),r+=o.length;return n}const $f=Symbol.for("@achingbrain/uint8arraylist");function sd(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let n=0;for(const r of t){const o=n+r.byteLength;if(e<o)return{buf:r,index:e-n};n=o}throw new RangeError("index is out of bounds")}function To(t){return!!t?.[$f]}class se{bufs;length;[$f]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let n=0;for(const r of e)if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.push(r);else if(To(r)){n+=r.byteLength;for(const o of r.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}prepend(...e){this.prependAll(e)}prependAll(e){let n=0;for(const r of e.reverse())if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.unshift(r);else if(To(r))n+=r.byteLength,this.bufs.unshift(...r.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}get(e){const n=sd(this.bufs,e);return n.buf[n.index]}set(e,n){const r=sd(this.bufs,e);r.buf[r.index]=n}write(e,n=0){if(e instanceof Uint8Array)for(let r=0;r<e.length;r++)this.set(n+r,e[r]);else if(To(e))for(let r=0;r<e.length;r++)this.set(n+r,e.get(r));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,n){const{bufs:r,length:o}=this._subList(e,n);return ja(r,o)}subarray(e,n){const{bufs:r,length:o}=this._subList(e,n);return r.length===1?r[0]:ja(r,o)}sublist(e,n){const{bufs:r,length:o}=this._subList(e,n),s=new se;return s.length=o,s.bufs=r,s}_subList(e,n){if(e=e??0,n=n??this.length,e<0&&(e=this.length+e),n<0&&(n=this.length+n),e<0||n>this.length)throw new RangeError("index is out of bounds");if(e===n)return{bufs:[],length:0};if(e===0&&n===this.length)return{bufs:[...this.bufs],length:this.length};const r=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=n>a&&n<=c;if(l&&d){if(e===a&&n===c){r.push(i);break}const u=e-a;r.push(i.subarray(u,u+(n-e)));break}if(l){if(e===0){r.push(i);continue}r.push(i.subarray(e-a));continue}if(d){if(n===c){r.push(i);break}r.push(i.subarray(0,n-a));break}r.push(i)}return{bufs:r,length:n-e}}indexOf(e,n=0){if(!To(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const r=e instanceof Uint8Array?e:e.subarray();if(n=Number(n??0),isNaN(n)&&(n=0),n<0&&(n=this.length+n),n<0&&(n=0),e.length===0)return n>this.length?this.length:n;const o=r.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[r[u]]=u;const a=i,c=this.byteLength-r.byteLength,l=r.byteLength-1;let d;for(let u=n;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(r[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt8(0)}setInt8(e,n){const r=Nt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt8(0,n),this.write(r,e)}getInt16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt16(0,n)}setInt16(e,n,r){const o=$e(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,n,r),this.write(o,e)}getInt32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt32(0,n)}setInt32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,n,r),this.write(o,e)}getBigInt64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigInt64(0,n)}setBigInt64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,n,r),this.write(o,e)}getUint8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint8(0)}setUint8(e,n){const r=Nt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint8(0,n),this.write(r,e)}getUint16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,n)}setUint16(e,n,r){const o=$e(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,n,r),this.write(o,e)}getUint32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,n)}setUint32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,n,r),this.write(o,e)}getBigUint64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigUint64(0,n)}setBigUint64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,n,r),this.write(o,e)}getFloat32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat32(0,n)}setFloat32(e,n,r){const o=$e(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,n,r),this.write(o,e)}getFloat64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat64(0,n)}setFloat64(e,n,r){const o=$e(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,n,r),this.write(o,e)}equals(e){if(e==null||!(e instanceof se)||e.bufs.length!==this.bufs.length)return!1;for(let n=0;n<this.bufs.length;n++)if(!lt(this.bufs[n],e.bufs[n]))return!1;return!0}static fromUint8Arrays(e,n){const r=new se;return r.bufs=e,n==null&&(n=e.reduce((o,s)=>o+s.byteLength,0)),r.length=n,r}}const Zw=bo({prefix:"9",name:"base10",alphabet:"0123456789"}),Jw=Object.freeze(Object.defineProperty({__proto__:null,base10:Zw},Symbol.toStringTag,{value:"Module"})),Qw=Pe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ey=Pe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),ty=Object.freeze(Object.defineProperty({__proto__:null,base16:Qw,base16upper:ey},Symbol.toStringTag,{value:"Module"})),ny=Pe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),ry=Object.freeze(Object.defineProperty({__proto__:null,base2:ny},Symbol.toStringTag,{value:"Module"})),qf=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),oy=qf.reduce((t,e,n)=>(t[n]=e,t),[]),sy=qf.reduce((t,e,n)=>{const r=e.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${e}`);return t[r]=n,t},[]);function iy(t){return t.reduce((e,n)=>(e+=oy[n],e),"")}function ay(t){const e=[];for(const n of t){const r=n.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${n}`);const o=sy[r];if(o==null)throw new Error(`Non-base256emoji character: ${n}`);e.push(o)}return new Uint8Array(e)}const cy=Zs({prefix:"🚀",name:"base256emoji",encode:iy,decode:ay}),ly=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:cy},Symbol.toStringTag,{value:"Module"})),dy=Pe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),uy=Pe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),fy=Pe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),hy=Pe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),py=Object.freeze(Object.defineProperty({__proto__:null,base64:dy,base64pad:uy,base64url:fy,base64urlpad:hy},Symbol.toStringTag,{value:"Module"})),gy=Pe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),my=Object.freeze(Object.defineProperty({__proto__:null,base8:gy},Symbol.toStringTag,{value:"Module"})),wy=Zs({prefix:"\0",name:"identity",encode:t=>rw(t),decode:t=>nw(t)}),yy=Object.freeze(Object.defineProperty({__proto__:null,identity:wy},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const by=20;function vy({name:t,code:e,encode:n,minDigestLength:r,maxDigestLength:o}){return new Sy(t,e,n,r,o)}class Sy{name;code;encode;minDigestLength;maxDigestLength;constructor(e,n,r,o,s){this.name=e,this.code=n,this.encode=r,this.minDigestLength=o??by,this.maxDigestLength=s}digest(e,n){if(n?.truncate!=null){if(n.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&n.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?id(r,this.code,n?.truncate):r.then(o=>id(o,this.code,n?.truncate))}else throw Error("Unknown type, must be binary type")}}function id(t,e,n){if(n!=null&&n!==t.byteLength){if(n>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,n)}return vo(e,t)}function xy(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const qc=vy({name:"sha2-256",code:18,encode:xy("SHA-256")}),ad={...yy,...ry,...my,...Jw,...ty,...Aw,...Cw,...gw,...py,...ly};function Kf(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const cd=Kf("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ii=Kf("ascii","a",t=>{let e="a";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},t=>{t=t.substring(1);const e=Nt(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}),zf={utf8:cd,"utf-8":cd,hex:ad.base16,latin1:Ii,ascii:Ii,binary:Ii,...ad};function be(t,e="utf8"){const n=zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.decoder.decode(`${n.prefix}${t}`)}function te(t,e="utf8"){const n=zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.encoder.encode(t).substring(1)}const Ey=parseInt("11111",2),Ha=parseInt("10000000",2),Ay=parseInt("01111111",2),ld={0:Tr,1:Tr,2:ky,3:Ry,4:Ty,5:Iy,6:Cy,16:Tr,22:Tr,48:Tr};function yr(t,e={offset:0}){const n=t[e.offset]&Ey;if(e.offset++,ld[n]!=null)return ld[n](t,e);throw new Error("No decoder for tag "+n)}function xo(t,e){let n=0;if((t[e.offset]&Ha)===Ha){const r=t[e.offset]&Ay;let o="0x";e.offset++;for(let s=0;s<r;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");n=parseInt(o,16)}else n=t[e.offset],e.offset++;return n}function Tr(t,e){xo(t,e);const n=[];for(;!(e.offset>=t.byteLength);){const r=yr(t,e);if(r===null)break;n.push(r)}return n}function ky(t,e){const n=xo(t,e),r=e.offset,o=e.offset+n,s=[];for(let i=r;i<o;i++)i===r&&t[i]===0||s.push(t[i]);return e.offset+=n,Uint8Array.from(s)}function Cy(t,e){const n=xo(t,e),r=e.offset+n,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<r;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function Iy(t,e){return e.offset++,null}function Ry(t,e){const n=xo(t,e),r=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+n-1);if(e.offset+=n,r!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Ty(t,e){const n=xo(t,e),r=t.subarray(e.offset,e.offset+n);return e.offset+=n,r}function Py(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new se;for(let r=0;r<e.length;r+=2)n.append(Uint8Array.from([parseInt(`${e[r]}${e[r+1]}`,16)]));return n}function Js(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Py(t.byteLength);return new se(Uint8Array.from([e.byteLength|Ha]),e)}function We(t){const e=new se,n=128;return(t.subarray()[0]&n)===n&&e.append(Uint8Array.from([0])),e.append(t),new se(Uint8Array.from([2]),Js(e),e)}function Kc(t){const e=Uint8Array.from([0]),n=new se(e,t);return new se(Uint8Array.from([3]),Js(n),n)}function Ny(t){return new se(Uint8Array.from([4]),Js(t),t)}function Tt(t,e=48){const n=new se;for(const r of t)n.append(r);return new se(Uint8Array.from([e]),Js(n),n)}async function Ly(t,e,n){const r=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);n?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},r,e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function By(t,e,n,r){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);r?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,n.subarray());return r?.signal?.throwIfAborted(),s}const _y=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),Oy=Uint8Array.from([6,5,43,129,4,0,34]),Dy=Uint8Array.from([6,5,43,129,4,0,35]),Wf={ext:!0,kty:"EC",crv:"P-256"},Gf={ext:!0,kty:"EC",crv:"P-384"},Vf={ext:!0,kty:"EC",crv:"P-521"},Xn=32,Yn=48,Zn=66;function Fy(t){const e=yr(t);return My(e)}function My(t){const e=t[1],n=te(e,"base64url"),r=t[2][1][0],o=1;let s,i;if(e.byteLength===Xn)return s=te(r.subarray(o,o+Xn),"base64url"),i=te(r.subarray(o+Xn),"base64url"),new Ri({...Wf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Yn)return s=te(r.subarray(o,o+Yn),"base64url"),i=te(r.subarray(o+Yn),"base64url"),new Ri({...Gf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Zn)return s=te(r.subarray(o,o+Zn),"base64url"),i=te(r.subarray(o+Zn),"base64url"),new Ri({...Vf,key_ops:["sign"],d:n,x:s,y:i});throw new ct(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function Xf(t){const e=yr(t);return jy(e)}function jy(t){const e=t[1][1][0],n=1;let r,o;if(e.byteLength===Xn*2+1)return r=te(e.subarray(n,n+Xn),"base64url"),o=te(e.subarray(n+Xn),"base64url"),new Qo({...Wf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Yn*2+1)return r=te(e.subarray(n,n+Yn),"base64url"),o=te(e.subarray(n+Yn),"base64url"),new Qo({...Gf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Zn*2+1)return r=te(e.subarray(n,n+Zn),"base64url"),o=te(e.subarray(n+Zn),"base64url"),new Qo({...Vf,key_ops:["verify"],x:r,y:o});throw new ct(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Hy(t){return Tt([We(Uint8Array.from([1])),Ny(be(t.d??"","base64url")),Tt([Yf(t.crv)],160),Tt([Kc(new se(Uint8Array.from([4]),be(t.x??"","base64url"),be(t.y??"","base64url")))],161)]).subarray()}function Uy(t){return Tt([We(Uint8Array.from([1])),Tt([Yf(t.crv)],160),Tt([Kc(new se(Uint8Array.from([4]),be(t.x??"","base64url"),be(t.y??"","base64url")))],161)]).subarray()}function Yf(t){if(t==="P-256")return _y;if(t==="P-384")return Oy;if(t==="P-521")return Dy;throw new ct(`Invalid curve ${t}`)}class Qo{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Uy(this.jwk)),this._raw}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}async verify(e,n,r){return By(this.jwk,n,e,r)}}class Ri{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Qo({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Hy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}async sign(e,n){return Ly(this.jwk,e,n)}}const _n=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Eo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Ua(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function En(t,...e){if(!Eo(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function Zf(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Ua(t.outputLen),Ua(t.blockLen)}function gs(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function $y(t,e){En(t);const n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function lr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ti(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ut(t,e){return t<<32-e|t>>>e}const Jf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",qy=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fn(t){if(En(t),Jf)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=qy[t[n]];return e}const bt={_0:48,_9:57,A:65,F:70,a:97,f:102};function dd(t){if(t>=bt._0&&t<=bt._9)return t-bt._0;if(t>=bt.A&&t<=bt.F)return t-(bt.A-10);if(t>=bt.a&&t<=bt.f)return t-(bt.a-10)}function ms(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Jf)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=dd(t.charCodeAt(s)),a=dd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Ky(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function zc(t){return typeof t=="string"&&(t=Ky(t)),En(t),t}function pt(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];En(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}class Qf{}function eh(t){const e=r=>t().update(zc(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Wc(t=32){if(_n&&typeof _n.getRandomValues=="function")return _n.getRandomValues(new Uint8Array(t));if(_n&&typeof _n.randomBytes=="function")return Uint8Array.from(_n.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function zy(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}function Wy(t,e,n){return t&e^~t&n}function Gy(t,e,n){return t&e^t&n^e&n}let th=class extends Qf{constructor(e,n,r,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Ti(this.buffer)}update(e){gs(this),e=zc(e),En(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Ti(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){gs(this),$y(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,lr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;zy(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Ti(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}};const Dt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ne=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Po=BigInt(2**32-1),ud=BigInt(32);function Vy(t,e=!1){return e?{h:Number(t&Po),l:Number(t>>ud&Po)}:{h:Number(t>>ud&Po)|0,l:Number(t&Po)|0}}function Xy(t,e=!1){const n=t.length;let r=new Uint32Array(n),o=new Uint32Array(n);for(let s=0;s<n;s++){const{h:i,l:a}=Vy(t[s],e);[r[s],o[s]]=[i,a]}return[r,o]}const fd=(t,e,n)=>t>>>n,hd=(t,e,n)=>t<<32-n|e>>>n,On=(t,e,n)=>t>>>n|e<<32-n,Dn=(t,e,n)=>t<<32-n|e>>>n,No=(t,e,n)=>t<<64-n|e>>>n-32,Lo=(t,e,n)=>t>>>n-32|e<<64-n;function vt(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const Yy=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),Zy=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Jy=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),Qy=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,eb=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),tb=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,nb=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ft=new Uint32Array(64);class rb extends th{constructor(e=32){super(64,e,8,!1),this.A=Dt[0]|0,this.B=Dt[1]|0,this.C=Dt[2]|0,this.D=Dt[3]|0,this.E=Dt[4]|0,this.F=Dt[5]|0,this.G=Dt[6]|0,this.H=Dt[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Ft[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Ft[u-15],h=Ft[u-2],g=ut(f,7)^ut(f,18)^f>>>3,m=ut(h,17)^ut(h,19)^h>>>10;Ft[u]=m+Ft[u-7]+g+Ft[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ut(a,6)^ut(a,11)^ut(a,25),h=d+f+Wy(a,c,l)+nb[u]+Ft[u]|0,m=(ut(r,2)^ut(r,13)^ut(r,22))+Gy(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){lr(Ft)}destroy(){this.set(0,0,0,0,0,0,0,0),lr(this.buffer)}}const nh=Xy(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),ob=nh[0],sb=nh[1],Mt=new Uint32Array(80),jt=new Uint32Array(80);class ib extends th{constructor(e=64){super(128,e,16,!1),this.Ah=Ne[0]|0,this.Al=Ne[1]|0,this.Bh=Ne[2]|0,this.Bl=Ne[3]|0,this.Ch=Ne[4]|0,this.Cl=Ne[5]|0,this.Dh=Ne[6]|0,this.Dl=Ne[7]|0,this.Eh=Ne[8]|0,this.El=Ne[9]|0,this.Fh=Ne[10]|0,this.Fl=Ne[11]|0,this.Gh=Ne[12]|0,this.Gl=Ne[13]|0,this.Hh=Ne[14]|0,this.Hl=Ne[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:b}=this;return[e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b]}set(e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=b|0}process(e,n){for(let y=0;y<16;y++,n+=4)Mt[y]=e.getUint32(n),jt[y]=e.getUint32(n+=4);for(let y=16;y<80;y++){const k=Mt[y-15]|0,N=jt[y-15]|0,x=On(k,N,1)^On(k,N,8)^fd(k,N,7),T=Dn(k,N,1)^Dn(k,N,8)^hd(k,N,7),S=Mt[y-2]|0,v=jt[y-2]|0,A=On(S,v,19)^No(S,v,61)^fd(S,v,6),_=Dn(S,v,19)^Lo(S,v,61)^hd(S,v,6),B=Jy(T,_,jt[y-7],jt[y-16]),C=Qy(B,x,A,Mt[y-7],Mt[y-16]);Mt[y]=C|0,jt[y]=B|0}let{Ah:r,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:b,Hh:w,Hl:R}=this;for(let y=0;y<80;y++){const k=On(u,f,14)^On(u,f,18)^No(u,f,41),N=Dn(u,f,14)^Dn(u,f,18)^Lo(u,f,41),x=u&h^~u&m,T=f&g^~f&b,S=eb(R,N,T,sb[y],jt[y]),v=tb(S,w,k,x,ob[y],Mt[y]),A=S|0,_=On(r,o,28)^No(r,o,34)^No(r,o,39),B=Dn(r,o,28)^Lo(r,o,34)^Lo(r,o,39),C=r&s^r&a^s&a,E=o&i^o&c^i&c;w=m|0,R=b|0,m=h|0,b=g|0,h=u|0,g=f|0,{h:u,l:f}=vt(l|0,d|0,v|0,A|0),l=a|0,d=c|0,a=s|0,c=i|0,s=r|0,i=o|0;const P=Yy(A,B,E);r=Zy(P,v,_,C),o=P|0}({h:r,l:o}=vt(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:i}=vt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=vt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=vt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=vt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=vt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:b}=vt(this.Gh|0,this.Gl|0,m|0,b|0),{h:w,l:R}=vt(this.Hh|0,this.Hl|0,w|0,R|0),this.set(r,o,s,i,a,c,l,d,u,f,h,g,m,b,w,R)}roundClean(){lr(Mt,jt)}destroy(){lr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const rh=eh(()=>new rb),ab=eh(()=>new ib);const Gc=BigInt(0),$a=BigInt(1);function yn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}"`;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function at(t,e,n=""){const r=Eo(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function Bo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function oh(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Gc:BigInt("0x"+t)}function Qs(t){return oh(fn(t))}function ao(t){return En(t),oh(fn(Uint8Array.from(t).reverse()))}function Vc(t,e){return ms(t.toString(16).padStart(e*2,"0"))}function sh(t,e){return Vc(t,e).reverse()}function pe(t,e,n){let r;if(typeof e=="string")try{r=ms(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(Eo(e))r=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(t+" of length "+n+" expected, got "+o);return r}function pd(t){return Uint8Array.from(t)}const Pi=t=>typeof t=="bigint"&&Gc<=t;function cb(t,e,n){return Pi(t)&&Pi(e)&&Pi(n)&&e<=t&&t<n}function qa(t,e,n,r){if(!cb(e,n,r))throw new Error("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function ih(t){let e;for(e=0;t>Gc;t>>=$a,e+=1);return e}const Ao=t=>($a<<BigInt(t))-$a;function lb(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");const r=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=r(t),i=r(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>n(i,s,...h),d=(h=r(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return pt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function ko(t,e,n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>r(o,s,!1)),Object.entries(n).forEach(([o,s])=>r(o,s,!0))}function ws(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const qe=BigInt(0),Te=BigInt(1),on=BigInt(2),ah=BigInt(3),ch=BigInt(4),lh=BigInt(5),db=BigInt(7),dh=BigInt(8),ub=BigInt(9),uh=BigInt(16);function ve(t,e){const n=t%e;return n>=qe?n:e+n}function he(t,e,n){let r=t;for(;e-- >qe;)r*=r,r%=n;return r}function gd(t,e){if(t===qe)throw new Error("invert: expected non-zero number");if(e<=qe)throw new Error("invert: expected positive modulus, got "+e);let n=ve(t,e),r=e,o=qe,s=Te;for(;n!==qe;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==Te)throw new Error("invert: does not exist");return ve(o,e)}function Xc(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function fh(t,e){const n=(t.ORDER+Te)/ch,r=t.pow(e,n);return Xc(t,r,e),r}function fb(t,e){const n=(t.ORDER-lh)/dh,r=t.mul(e,on),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,on),o),a=t.mul(s,t.sub(i,t.ONE));return Xc(t,a,e),a}function hb(t){const e=An(t),n=hh(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+db)/uh;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),b=a.cmov(l,d,m);return Xc(a,b,c),b}}function hh(t){if(t<ah)throw new Error("sqrt is not defined for small field");let e=t-Te,n=0;for(;e%on===qe;)e/=on,n++;let r=on;const o=An(t);for(;md(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return fh;let s=o.pow(r,e);const i=(e+Te)/on;return function(c,l){if(c.is0(l))return l;if(md(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const b=Te<<BigInt(d-g-1),w=c.pow(u,b);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function pb(t){return t%ch===ah?fh:t%dh===lh?fb:t%uh===ub?hb(t):hh(t)}const gb=(t,e)=>(ve(t,e)&Te)===Te,mb=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function wb(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},n=mb.reduce((r,o)=>(r[o]="function",r),e);return ko(t,n),t}function yb(t,e,n){if(n<qe)throw new Error("invalid exponent, negatives unsupported");if(n===qe)return t.ONE;if(n===Te)return e;let r=t.ONE,o=e;for(;n>qe;)n&Te&&(r=t.mul(r,o)),o=t.sqr(o),n>>=Te;return r}function ph(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function md(t,e){const n=(t.ORDER-Te)/on,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function gh(t,e){e!==void 0&&Ua(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function An(t,e,n=!1,r={}){if(t<=qe)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(n=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),r.sqrt&&(s=r.sqrt);const{nBitLength:c,nByteLength:l}=gh(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:n,BITS:c,BYTES:l,MASK:Ao(c),ZERO:qe,ONE:Te,allowedLengths:a,create:f=>ve(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return qe<=f&&f<t},is0:f=>f===qe,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Te)===Te,neg:f=>ve(-f,t),eql:(f,h)=>f===h,sqr:f=>ve(f*f,t),add:(f,h)=>ve(f+h,t),sub:(f,h)=>ve(f-h,t),mul:(f,h)=>ve(f*h,t),pow:(f,h)=>yb(u,f,h),div:(f,h)=>ve(f*gd(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>gd(f,t),sqrt:s||(f=>(d||(d=pb(t)),d(u,f))),toBytes:f=>n?sh(f,l):Vc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,n?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=n?ao(f):Qs(f);if(i&&(g=ve(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>ph(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function mh(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function wh(t){const e=mh(t);return e+Math.ceil(e/2)}function bb(t,e,n=!1){const r=t.length,o=mh(e),s=wh(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?ao(t):Qs(t),a=ve(i,e-Te)+Te;return n?sh(a,o):Vc(a,o)}const dr=BigInt(0),sn=BigInt(1);function ys(t,e){const n=e.negate();return t?n:e}function an(t,e){const n=ph(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function yh(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Ni(t,e){yh(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=Ao(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function wd(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=sn);const l=e*r,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function vb(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function Sb(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const Li=new WeakMap,bh=new WeakMap;function Bi(t){return bh.get(t)||1}function yd(t){if(t!==dr)throw new Error("invalid wNAF")}class vh{constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>dr;)n&sn&&(r=r.add(o)),o=o.double(),n>>=sn;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=Ni(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=Ni(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=wd(r,a,i);r=c,d?s=s.add(ys(f,n[h])):o=o.add(ys(u,n[l]))}return yd(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=Ni(e,this.bits);for(let i=0;i<s.windows&&r!==dr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=wd(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return yd(r),o}getPrecomputes(e,n,r){let o=Li.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),Li.set(n,o))),o}cached(e,n,r){const o=Bi(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=Bi(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){yh(n,this.bits),bh.set(e,n),Li.delete(e)}hasCache(e){return Bi(e)!==1}}function xb(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>dr||r>dr;)n&sn&&(s=s.add(o)),r&sn&&(i=i.add(o)),o=o.double(),n>>=sn,r>>=sn;return{p1:s,p2:i}}function Sh(t,e,n,r){vb(n,t),Sb(r,e);const o=n.length,s=r.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=ih(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=Ao(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const b=r[m],w=Number(b>>BigInt(h)&l);d[w]=d[w].add(n[m])}let g=i;for(let m=d.length-1,b=i;m>0;m--)b=b.add(d[m]),g=g.add(b);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function bd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return wb(e),e}else return An(t,{isLE:n})}function xh(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>dr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=bd(e.p,n.Fp,r),s=bd(e.n,n.Fn,r),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Ht=BigInt(0),Ee=BigInt(1),_i=BigInt(2),Eb=BigInt(8);function Ab(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function kb(t,e={}){const n=xh("edwards",t,e,e.FpFnLE),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i}=s;ko(e,{},{uvRatio:"function"});const a=_i<<BigInt(o.BYTES*8)-Ee,c=b=>r.create(b),l=e.uvRatio||((b,w)=>{try{return{isValid:!0,value:r.sqrt(r.div(b,w))}}catch{return{isValid:!1,value:Ht}}});if(!Ab(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(b,w,R=!1){const y=R?Ee:Ht;return qa("coordinate "+b,w,y,a),w}function u(b){if(!(b instanceof g))throw new Error("ExtendedPoint expected")}const f=ws((b,w)=>{const{X:R,Y:y,Z:k}=b,N=b.is0();w==null&&(w=N?Eb:r.inv(k));const x=c(R*w),T=c(y*w),S=r.mul(k,w);if(N)return{x:Ht,y:Ee};if(S!==Ee)throw new Error("invZ was invalid");return{x,y:T}}),h=ws(b=>{const{a:w,d:R}=s;if(b.is0())throw new Error("bad point: ZERO");const{X:y,Y:k,Z:N,T:x}=b,T=c(y*y),S=c(k*k),v=c(N*N),A=c(v*v),_=c(T*w),B=c(v*c(_+S)),C=c(A+c(R*c(T*S)));if(B!==C)throw new Error("bad point: equation left != right (1)");const E=c(y*k),P=c(N*x);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,R,y,k){this.X=d("x",w),this.Y=d("y",R),this.Z=d("z",y,!0),this.T=d("t",k),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:R,y}=w||{};return d("x",R),d("y",y),new g(R,y,Ee,c(R*y))}static fromBytes(w,R=!1){const y=r.BYTES,{a:k,d:N}=s;w=pd(at(w,y,"point")),yn(R,"zip215");const x=pd(w),T=w[y-1];x[y-1]=T&-129;const S=ao(x),v=R?a:r.ORDER;qa("point.y",S,Ht,v);const A=c(S*S),_=c(A-Ee),B=c(N*A-k);let{isValid:C,value:E}=l(_,B);if(!C)throw new Error("bad point: invalid y coordinate");const P=(E&Ee)===Ee,I=(T&128)!==0;if(!R&&E===Ht&&I)throw new Error("bad point: x=0 and x_0=1");return I!==P&&(E=c(-E)),g.fromAffine({x:E,y:S})}static fromHex(w,R=!1){return g.fromBytes(pe("point",w),R)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,R=!0){return m.createCache(this,w),R||this.multiply(_i),this}assertValidity(){h(this)}equals(w){u(w);const{X:R,Y:y,Z:k}=this,{X:N,Y:x,Z:T}=w,S=c(R*T),v=c(N*k),A=c(y*T),_=c(x*k);return S===v&&A===_}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:R,Y:y,Z:k}=this,N=c(R*R),x=c(y*y),T=c(_i*c(k*k)),S=c(w*N),v=R+y,A=c(c(v*v)-N-x),_=S+x,B=_-T,C=S-x,E=c(A*B),P=c(_*C),I=c(A*C),D=c(B*_);return new g(E,P,D,I)}add(w){u(w);const{a:R,d:y}=s,{X:k,Y:N,Z:x,T}=this,{X:S,Y:v,Z:A,T:_}=w,B=c(k*S),C=c(N*v),E=c(T*y*_),P=c(x*A),I=c((k+N)*(S+v)-B-C),D=P-E,M=P+E,F=c(C-R*B),L=c(I*D),U=c(M*F),$=c(I*F),H=c(D*M);return new g(L,U,H,$)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:R,f:y}=m.cached(this,w,k=>an(g,k));return an(g,[R,y])[0]}multiplyUnsafe(w,R=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Ht?g.ZERO:this.is0()||w===Ee?this:m.unsafe(this,w,y=>an(g,y),R)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===Ee?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:R}=this.toAffine(),y=r.toBytes(R);return y[y.length-1]|=w&Ee?128:0,y}toHex(){return fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return an(g,w)}static msm(w,R){return Sh(g,o,w,R)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Ee,c(s.Gx*s.Gy)),g.ZERO=new g(Ht,Ee,Ee,Ht),g.Fp=r,g.Fn=o;const m=new vh(g,o.BITS);return g.BASE.precompute(8),g}function Cb(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is required');ko(n,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:r}=n,{BASE:o,Fp:s,Fn:i}=t,a=n.randomBytes||Wc,c=n.adjustScalarBytes||(v=>v),l=n.domain||((v,A,_)=>{if(yn(_,"phflag"),A.length||_)throw new Error("Contexts/pre-hash are not supported");return v});function d(v){return i.create(ao(v))}function u(v){const A=y.secretKey;v=pe("private key",v,A);const _=pe("hashed private key",e(v),2*A),B=c(_.slice(0,A)),C=_.slice(A,2*A),E=d(B);return{head:B,prefix:C,scalar:E}}function f(v){const{head:A,prefix:_,scalar:B}=u(v),C=o.multiply(B),E=C.toBytes();return{head:A,prefix:_,scalar:B,point:C,pointBytes:E}}function h(v){return f(v).pointBytes}function g(v=Uint8Array.of(),...A){const _=pt(...A);return d(e(l(_,pe("context",v),!!r)))}function m(v,A,_={}){v=pe("message",v),r&&(v=r(v));const{prefix:B,scalar:C,pointBytes:E}=f(A),P=g(_.context,B,v),I=o.multiply(P).toBytes(),D=g(_.context,I,E,v),M=i.create(P+D*C);if(!i.isValid(M))throw new Error("sign failed: invalid s");const F=pt(I,i.toBytes(M));return at(F,y.signature,"result")}const b={zip215:!0};function w(v,A,_,B=b){const{context:C,zip215:E}=B,P=y.signature;v=pe("signature",v,P),A=pe("message",A),_=pe("publicKey",_,y.publicKey),E!==void 0&&yn(E,"zip215"),r&&(A=r(A));const I=P/2,D=v.subarray(0,I),M=ao(v.subarray(I,P));let F,L,U;try{F=t.fromBytes(_,E),L=t.fromBytes(D,E),U=o.multiplyUnsafe(M)}catch{return!1}if(!E&&F.isSmallOrder())return!1;const $=g(C,L.toBytes(),F.toBytes(),A);return L.add(F.multiplyUnsafe($)).subtract(U).clearCofactor().is0()}const R=s.BYTES,y={secretKey:R,publicKey:R,signature:2*R,seed:R};function k(v=a(y.seed)){return at(v,y.seed,"seed")}function N(v){const A=S.randomSecretKey(v);return{secretKey:A,publicKey:h(A)}}function x(v){return Eo(v)&&v.length===i.BYTES}function T(v,A){try{return!!t.fromBytes(v,A)}catch{return!1}}const S={getExtendedPublicKey:f,randomSecretKey:k,isValidSecretKey:x,isValidPublicKey:T,toMontgomery(v){const{y:A}=t.fromBytes(v),_=y.publicKey,B=_===32;if(!B&&_!==57)throw new Error("only defined for 25519 and 448");const C=B?s.div(Ee+A,Ee-A):s.div(A-Ee,A+Ee);return s.toBytes(C)},toMontgomerySecret(v){const A=y.secretKey;at(v,A);const _=e(v.subarray(0,A));return c(_).subarray(0,A)},randomPrivateKey:k,precompute(v=8,A=t.BASE){return A.precompute(v,!1)}};return Object.freeze({keygen:N,getPublicKey:h,sign:m,verify:w,utils:S,Point:t,lengths:y})}function Ib(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=An(e.n,t.nBitLength,!0),o={Fp:n,Fn:r,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function Rb(t,e){const n=e.Point;return Object.assign({},e,{ExtendedPoint:n,CURVE:t,nBitLength:n.Fn.BITS,nByteLength:n.Fn.BYTES})}function Tb(t){const{CURVE:e,curveOpts:n,hash:r,eddsaOpts:o}=Ib(t),s=kb(e,n),i=Cb(s,r,o);return Rb(t,i)}const Pb=BigInt(1),vd=BigInt(2);BigInt(3);const Nb=BigInt(5),Lb=BigInt(8),Yc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Eh={p:Yc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Lb,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Bb(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Yc,a=t*t%s*t%s,c=he(a,vd,s)*a%s,l=he(c,Pb,s)*t%s,d=he(l,Nb,s)*l%s,u=he(d,e,s)*d%s,f=he(u,n,s)*u%s,h=he(f,r,s)*f%s,g=he(h,o,s)*h%s,m=he(g,o,s)*h%s,b=he(m,e,s)*d%s;return{pow_p_5_8:he(b,vd,s)*t%s,b2:a}}function _b(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Sd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Ob(t,e){const n=Yc,r=ve(e*e*e,n),o=ve(r*r*e,n),s=Bb(t*o).pow_p_5_8;let i=ve(t*r*s,n);const a=ve(e*i*i,n),c=i,l=ve(i*Sd,n),d=a===t,u=a===ve(-t,n),f=a===ve(-t*Sd,n);return d&&(i=c),(u||f)&&(i=l),gb(i,n)&&(i=ve(-i,n)),{isValid:d||u,value:i}}const Db=An(Eh.p,{isLE:!0}),Fb={...Eh,Fp:Db,hash:ab,adjustScalarBytes:_b,uvRatio:Ob},bs=Tb(Fb);class xd extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Ed extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class Mb extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Lt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new Mb("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},vs=32,Et=64,Ka=32;let Jn;const Ah=(async()=>{try{return await Lt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function jb(){const t=bs.utils.randomPrivateKey(),e=bs.getPublicKey(t);return{privateKey:Wb(t,e),publicKey:e}}async function Hb(t,e){let n;t.length===Et?n=t.subarray(0,32):n=t;const r={crv:"Ed25519",kty:"OKP",x:te(t.subarray(32),"base64url"),d:te(n,"base64url"),ext:!0,key_ops:["sign"]},o=await Lt.get().subtle.importKey("jwk",r,{name:"Ed25519"},!0,["sign"]),s=await Lt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Ub(t,e){const n=t.subarray(0,Ka);return bs.sign(e instanceof Uint8Array?e:e.subarray(),n)}async function $b(t,e){return Jn==null&&(Jn=await Ah),Jn?Hb(t,e):Ub(t,e)}async function qb(t,e,n){if(t.buffer instanceof ArrayBuffer){const r=await Lt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Lt.get().subtle.verify({name:"Ed25519"},r,e,n instanceof Uint8Array?n:n.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Kb(t,e,n){return bs.verify(e,n instanceof Uint8Array?n:n.subarray(),t)}async function zb(t,e,n){return Jn==null&&(Jn=await Ah),Jn?qb(t,e,n):Kb(t,e,n)}function Wb(t,e){const n=new Uint8Array(Et);for(let r=0;r<Ka;r++)n[r]=t[r],n[Ka+r]=e[r];return n}function ei(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class kh{type="Ed25519";raw;constructor(e){this.raw=co(e,vs)}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){r?.signal?.throwIfAborted();const o=zb(this.raw,n,e);return ei(o)?o.then(s=>(r?.signal?.throwIfAborted(),s)):o}}class za{type="Ed25519";raw;publicKey;constructor(e,n){this.raw=co(e,Et),this.publicKey=new kh(n)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){n?.signal?.throwIfAborted();const r=$b(this.raw,e);return ei(r)?r.then(o=>(n?.signal?.throwIfAborted(),o)):(n?.signal?.throwIfAborted(),r)}}function Gb(t){if(t.length>Et){t=co(t,Et+vs);const r=t.subarray(0,Et),o=t.subarray(Et,t.length);return new za(r,o)}t=co(t,Et);const e=t.subarray(0,Et),n=t.subarray(vs);return new za(e,n)}function Ch(t){return t=co(t,vs),new kh(t)}async function Vb(){const{privateKey:t,publicKey:e}=jb();return new za(t,e)}function co(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new ct(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const Xb=Math.pow(2,7),Yb=Math.pow(2,14),Zb=Math.pow(2,21),Zc=Math.pow(2,28),Jc=Math.pow(2,35),Qc=Math.pow(2,42),el=Math.pow(2,49),oe=128,Le=127;function kn(t){if(t<Xb)return 1;if(t<Yb)return 2;if(t<Zb)return 3;if(t<Zc)return 4;if(t<Jc)return 5;if(t<Qc)return 6;if(t<el)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ih(t,e,n=0){switch(kn(t)){case 8:e[n++]=t&255|oe,t/=128;case 7:e[n++]=t&255|oe,t/=128;case 6:e[n++]=t&255|oe,t/=128;case 5:e[n++]=t&255|oe,t/=128;case 4:e[n++]=t&255|oe,t>>>=7;case 3:e[n++]=t&255|oe,t>>>=7;case 2:e[n++]=t&255|oe,t>>>=7;case 1:{e[n++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function Jb(t,e,n=0){switch(kn(t)){case 8:e.set(n++,t&255|oe),t/=128;case 7:e.set(n++,t&255|oe),t/=128;case 6:e.set(n++,t&255|oe),t/=128;case 5:e.set(n++,t&255|oe),t/=128;case 4:e.set(n++,t&255|oe),t>>>=7;case 3:e.set(n++,t&255|oe),t>>>=7;case 2:e.set(n++,t&255|oe),t>>>=7;case 1:{e.set(n++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Rh(t,e){let n=t[e],r=0;if(r+=n&Le,n<oe||(n=t[e+1],r+=(n&Le)<<7,n<oe)||(n=t[e+2],r+=(n&Le)<<14,n<oe)||(n=t[e+3],r+=(n&Le)<<21,n<oe)||(n=t[e+4],r+=(n&Le)*Zc,n<oe)||(n=t[e+5],r+=(n&Le)*Jc,n<oe)||(n=t[e+6],r+=(n&Le)*Qc,n<oe)||(n=t[e+7],r+=(n&Le)*el,n<oe))return r;throw new RangeError("Could not decode varint")}function Qb(t,e){let n=t.get(e),r=0;if(r+=n&Le,n<oe||(n=t.get(e+1),r+=(n&Le)<<7,n<oe)||(n=t.get(e+2),r+=(n&Le)<<14,n<oe)||(n=t.get(e+3),r+=(n&Le)<<21,n<oe)||(n=t.get(e+4),r+=(n&Le)*Zc,n<oe)||(n=t.get(e+5),r+=(n&Le)*Jc,n<oe)||(n=t.get(e+6),r+=(n&Le)*Qc,n<oe)||(n=t.get(e+7),r+=(n&Le)*el,n<oe))return r;throw new RangeError("Could not decode varint")}function e0(t,e,n=0){return e==null&&(e=Nt(kn(t))),e instanceof Uint8Array?Ih(t,e,n):Jb(t,e,n)}function Th(t,e=0){return t instanceof Uint8Array?Rh(t,e):Qb(t,e)}const tl=new Float32Array([-0]),Xt=new Uint8Array(tl.buffer);function t0(t,e,n){tl[0]=t,e[n]=Xt[0],e[n+1]=Xt[1],e[n+2]=Xt[2],e[n+3]=Xt[3]}function n0(t,e){return Xt[0]=t[e],Xt[1]=t[e+1],Xt[2]=t[e+2],Xt[3]=t[e+3],tl[0]}const nl=new Float64Array([-0]),Be=new Uint8Array(nl.buffer);function r0(t,e,n){nl[0]=t,e[n]=Be[0],e[n+1]=Be[1],e[n+2]=Be[2],e[n+3]=Be[3],e[n+4]=Be[4],e[n+5]=Be[5],e[n+6]=Be[6],e[n+7]=Be[7]}function o0(t,e){return Be[0]=t[e],Be[1]=t[e+1],Be[2]=t[e+2],Be[3]=t[e+3],Be[4]=t[e+4],Be[5]=t[e+5],Be[6]=t[e+6],Be[7]=t[e+7],nl[0]}const s0=BigInt(Number.MAX_SAFE_INTEGER),i0=BigInt(Number.MIN_SAFE_INTEGER);class _e{lo;hi;constructor(e,n){this.lo=e|0,this.hi=n|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(n+r*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(BigInt(n)+(BigInt(r)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,n=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return r===0?n===0?e<16384?e<128?1:2:e<2097152?3:4:n<16384?n<128?5:6:n<2097152?7:8:r<128?9:10}static fromBigInt(e){if(e===0n)return hn;if(e<s0&&e>i0)return this.fromNumber(Number(e));const n=e<0n;n&&(e=-e);let r=e>>32n,o=e-(r<<32n);return n&&(r=~r|0n,o=~o|0n,++o>Ad&&(o=0n,++r>Ad&&(r=0n))),new _e(Number(o),Number(r))}static fromNumber(e){if(e===0)return hn;const n=e<0;n&&(e=-e);let r=e>>>0,o=(e-r)/4294967296>>>0;return n&&(o=~o>>>0,r=~r>>>0,++r>4294967295&&(r=0,++o>4294967295&&(o=0))),new _e(r,o)}static from(e){return typeof e=="number"?_e.fromNumber(e):typeof e=="bigint"?_e.fromBigInt(e):typeof e=="string"?_e.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new _e(e.low>>>0,e.high>>>0):hn}}const hn=new _e(0,0);hn.toBigInt=function(){return 0n};hn.zzEncode=hn.zzDecode=function(){return this};hn.length=function(){return 1};const Ad=4294967296n;function a0(t){let e=0,n=0;for(let r=0;r<t.length;++r)n=t.charCodeAt(r),n<128?e+=1:n<2048?e+=2:(n&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320?(++r,e+=4):e+=3;return e}function c0(t,e,n){if(n-e<1)return"";let o;const s=[];let i=0,a;for(;e<n;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Ph(t,e,n){const r=n;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[n++]=o:o<2048?(e[n++]=o>>6|192,e[n++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[n++]=o>>18|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128,e[n++]=o&63|128):(e[n++]=o>>12|224,e[n++]=o>>6&63|128,e[n++]=o&63|128);return n-r}function rt(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function _o(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class l0{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,rt(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw rt(this,4);return _o(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw rt(this,4);return _o(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw rt(this,4);const e=n0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw rt(this,4);const e=o0(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),n=this.pos,r=this.pos+e;if(r>this.len)throw rt(this,e);return this.pos+=e,n===r?new Uint8Array(0):this.buf.subarray(n,r)}string(){const e=this.bytes();return c0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw rt(this,e);this.pos+=e}else do if(this.pos>=this.len)throw rt(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new _e(0,0);let n=0;if(this.len-this.pos>4){for(;n<4;++n)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw rt(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,e}if(this.len-this.pos>4){for(;n<5;++n)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;n<5;++n){if(this.pos>=this.len)throw rt(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw rt(this,8);const e=_o(this.buf,this.pos+=4),n=_o(this.buf,this.pos+=4);return new _e(e,n)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Rh(this.buf,this.pos);return this.pos+=kn(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function d0(t){return new l0(t instanceof Uint8Array?t:t.subarray())}function ti(t,e,n){const r=d0(t);return e.decode(r,void 0,n)}function u0(t){let r,o=8192;return function(i){if(i<1||i>4096)return Nt(i);o+i>8192&&(r=Nt(8192),o=0);const a=r.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class zr{fn;len;next;val;constructor(e,n,r){this.fn=e,this.len=n,this.next=void 0,this.val=r}}function Oi(){}class f0{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const h0=u0();function p0(t){return globalThis.Buffer!=null?Nt(t):h0(t)}class Wa{len;head;tail;states;constructor(){this.len=0,this.head=new zr(Oi,0,0),this.tail=this.head,this.states=null}_push(e,n,r){return this.tail=this.tail.next=new zr(e,n,r),this.len+=n,this}uint32(e){return this.len+=(this.tail=this.tail.next=new m0((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Oo,10,_e.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const n=_e.fromBigInt(e);return this._push(Oo,n.length(),n)}uint64Number(e){return this._push(Ih,kn(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const n=_e.fromBigInt(e).zzEncode();return this._push(Oo,n.length(),n)}sint64Number(e){const n=_e.fromNumber(e).zzEncode();return this._push(Oo,n.length(),n)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Di,1,e?1:0)}fixed32(e){return this._push(Pr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const n=_e.fromBigInt(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64Number(e){const n=_e.fromNumber(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(t0,4,e)}double(e){return this._push(r0,8,e)}bytes(e){const n=e.length>>>0;return n===0?this._push(Di,1,0):this.uint32(n)._push(w0,n,e)}string(e){const n=a0(e);return n!==0?this.uint32(n)._push(Ph,n,e):this._push(Di,1,0)}fork(){return this.states=new f0(this),this.head=this.tail=new zr(Oi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new zr(Oi,0,0),this.len=0),this}ldelim(){const e=this.head,n=this.tail,r=this.len;return this.reset().uint32(r),r!==0&&(this.tail.next=e.next,this.tail=n,this.len+=r),this}finish(){let e=this.head.next;const n=p0(this.len);let r=0;for(;e!=null;)e.fn(e.val,n,r),r+=e.len,e=e.next;return n}}function Di(t,e,n){e[n]=t&255}function g0(t,e,n){for(;t>127;)e[n++]=t&127|128,t>>>=7;e[n]=t}class m0 extends zr{next;constructor(e,n){super(g0,e,n),this.next=void 0}}function Oo(t,e,n){for(;t.hi!==0;)e[n++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[n++]=t.lo&127|128,t.lo=t.lo>>>7;e[n++]=t.lo}function Pr(t,e,n){e[n]=t&255,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}function w0(t,e,n){e.set(t,n)}globalThis.Buffer!=null&&(Wa.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(y0,e,t),this},Wa.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(b0,e,t),this});function y0(t,e,n){e.set(t,n)}function b0(t,e,n){t.length<40?Ph(t,e,n):e.utf8Write!=null?e.utf8Write(t,n):e.set(be(t),n)}function v0(){return new Wa}function ni(t,e){const n=v0();return e.encode(t,n,{lengthDelimited:!1}),n.finish()}var Ss;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(Ss||(Ss={}));function Nh(t,e,n,r){return{name:t,type:e,encode:n,decode:r}}function S0(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const n=function(s,i){const a=e(s);i.int32(a)},r=function(s){const i=s.int32();return e(i)};return Nh("enum",Ss.VARINT,n,r)}function ri(t,e){return Nh("message",Ss.LENGTH_DELIMITED,t,e)}class kd extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var fe;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(fe||(fe={}));var Ga;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(Ga||(Ga={}));(function(t){t.codec=()=>S0(Ga)})(fe||(fe={}));var bn;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(bn||(bn={}));var xs;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(xs||(xs={}));const Lh=rh;class Bh{type="RSA";jwk;_raw;_multihash;constructor(e,n){this.jwk=e,this._multihash=n}get raw(){return this._raw==null&&(this._raw=Oh(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ue.createV1(114,this._multihash)}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){return D0(this.jwk,n,e,r)}}class x0{type="RSA";jwk;_raw;publicKey;constructor(e,n){this.jwk=e,this.publicKey=n}get raw(){return this._raw==null&&(this._raw=I0(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){return O0(this.jwk,e,n)}}const E0=8192,_h=18,A0=1062,k0=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function C0(t){return{n:te(t[1],"base64url"),e:te(t[2],"base64url"),d:te(t[3],"base64url"),p:te(t[4],"base64url"),q:te(t[5],"base64url"),dp:te(t[6],"base64url"),dq:te(t[7],"base64url"),qi:te(t[8],"base64url"),kty:"RSA"}}function I0(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new ct("JWK was missing components");return Tt([We(Uint8Array.from([0])),We(be(t.n,"base64url")),We(be(t.e,"base64url")),We(be(t.d,"base64url")),We(be(t.p,"base64url")),We(be(t.q,"base64url")),We(be(t.dp,"base64url")),We(be(t.dq,"base64url")),We(be(t.qi,"base64url"))]).subarray()}function R0(t){const e=yr(t[1],{offset:0});return{kty:"RSA",n:te(e[0],"base64url"),e:te(e[1],"base64url")}}function Oh(t){if(t.n==null||t.e==null)throw new ct("JWK was missing components");return Tt([k0,Kc(Tt([We(be(t.n,"base64url")),We(be(t.e,"base64url"))]))]).subarray()}function T0(t){const e=yr(t);return P0(e)}function P0(t){const e=C0(t);return B0(e)}function N0(t,e){if(t.byteLength>=A0)throw new _f("Key size is too large");const n=yr(t,{offset:0});return L0(n,t,e)}function L0(t,e,n){const r=R0(t);if(n==null){const o=Lh(bn.encode({Type:fe.RSA,Data:e}));n=vo(_h,o)}return new Bh(r,n)}function B0(t){if(F0(t)>E0)throw new ct("Key size is too large");const e=_0(t),n=Lh(bn.encode({Type:fe.RSA,Data:Oh(e.publicKey)})),r=vo(_h,n);return new x0(e.privateKey,new Bh(e.publicKey,r))}function _0(t){if(t==null)throw new ct("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function O0(t,e,n){const r=await Lt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);n?.signal?.throwIfAborted();const o=await Lt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},r,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function D0(t,e,n,r){const o=await Lt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);r?.signal?.throwIfAborted();const s=await Lt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,n instanceof Uint8Array?n:n.subarray());return r?.signal?.throwIfAborted(),s}function F0(t){if(t.kty!=="RSA")throw new ct("invalid key type");if(t.n==null)throw new ct("invalid key modulus");return be(t.n,"base64url").length*8}class Dh extends Qf{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,Zf(e);const r=zc(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),lr(s)}update(e){return gs(this),this.iHash.update(e),this}digestInto(e){gs(this),En(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Fh=(t,e,n)=>new Dh(t,e).update(n).digest();Fh.create=(t,e)=>new Dh(t,e);const Cd=(t,e)=>(t+(t>=0?e:-e)/Mh)/e;function M0(t,e,n){const[[r,o],[s,i]]=e,a=Cd(i*t,n),c=Cd(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Ct,f=d<Ct;u&&(l=-l),f&&(d=-d);const h=Ao(Math.ceil(ih(n)/2))+Qn;if(l<Ct||l>=h||d<Ct||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Va(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Fi(t,e){const n={};for(let r of Object.keys(e))n[r]=t[r]===void 0?e[r]:t[r];return yn(n.lowS,"lowS"),yn(n.prehash,"prehash"),n.format!==void 0&&Va(n.format),n}class j0 extends Error{constructor(e=""){super(e)}}const At={Err:j0,_tlv:{encode:(t,e)=>{const{Err:n}=At;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,o=Bo(r);if(o.length/2&128)throw new n("tlv.encode: long form length too big");const s=r>127?Bo(o.length/2|128):"";return Bo(t)+s+o+e},decode(t,e){const{Err:n}=At;let r=0;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const o=e[r++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(r+=c,i<128)throw new n("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+i);if(a.length!==i)throw new n("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=At;if(t<Ct)throw new e("integer: negative integers are not allowed");let n=Bo(t);if(Number.parseInt(n[0],16)&8&&(n="00"+n),n.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return n},decode(t){const{Err:e}=At;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Qs(t)}},toSig(t){const{Err:e,_int:n,_tlv:r}=At,o=pe("signature",t),{v:s,l:i}=r.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=r.decode(2,s),{v:l,l:d}=r.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:n.decode(a),s:n.decode(l)}},hexFromSig(t){const{_tlv:e,_int:n}=At,r=e.encode(2,n.encode(t.r)),o=e.encode(2,n.encode(t.s)),s=r+o;return e.encode(48,s)}},Ct=BigInt(0),Qn=BigInt(1),Mh=BigInt(2),Do=BigInt(3),H0=BigInt(4);function zn(t,e){const{BYTES:n}=t;let r;if(typeof e=="bigint")r=e;else{let o=pe("private key",e);try{r=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${n}, got ${typeof e}`)}}if(!t.isValidNot0(r))throw new Error("invalid private key: out of range [1..N-1]");return r}function U0(t,e={}){const n=xh("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;ko(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Hh(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,C,E){const{x:P,y:I}=C.toAffine(),D=r.toBytes(P);if(yn(E,"isCompressed"),E){d();const M=!r.isOdd(I);return pt(jh(M),D)}else return pt(Uint8Array.of(4),D,r.toBytes(I))}function f(B){at(B,void 0,"Point");const{publicKey:C,publicKeyUncompressed:E}=l,P=B.length,I=B[0],D=B.subarray(1);if(P===C&&(I===2||I===3)){const M=r.fromBytes(D);if(!r.isValid(M))throw new Error("bad point: is not on curve, wrong x");const F=m(M);let L;try{L=r.sqrt(F)}catch(H){const q=H instanceof Error?": "+H.message:"";throw new Error("bad point: is not on curve, sqrt error"+q)}d();const U=r.isOdd(L);return(I&1)===1!==U&&(L=r.neg(L)),{x:M,y:L}}else if(P===E&&I===4){const M=r.BYTES,F=r.fromBytes(D.subarray(0,M)),L=r.fromBytes(D.subarray(M,M*2));if(!b(F,L))throw new Error("bad point: is not on curve");return{x:F,y:L}}else throw new Error(`bad point: got length ${P}, expected compressed=${C} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const C=r.sqr(B),E=r.mul(C,B);return r.add(r.add(E,r.mul(B,s.a)),s.b)}function b(B,C){const E=r.sqr(C),P=m(B);return r.eql(E,P)}if(!b(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=r.mul(r.pow(s.a,Do),H0),R=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(w,R)))throw new Error("bad curve params: a or b");function y(B,C,E=!1){if(!r.isValid(C)||E&&r.is0(C))throw new Error(`bad point coordinate ${B}`);return C}function k(B){if(!(B instanceof v))throw new Error("ProjectivePoint expected")}function N(B){if(!c||!c.basises)throw new Error("no endo");return M0(B,c.basises,o.ORDER)}const x=ws((B,C)=>{const{X:E,Y:P,Z:I}=B;if(r.eql(I,r.ONE))return{x:E,y:P};const D=B.is0();C==null&&(C=D?r.ONE:r.inv(I));const M=r.mul(E,C),F=r.mul(P,C),L=r.mul(I,C);if(D)return{x:r.ZERO,y:r.ZERO};if(!r.eql(L,r.ONE))throw new Error("invZ was invalid");return{x:M,y:F}}),T=ws(B=>{if(B.is0()){if(e.allowInfinityPoint&&!r.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:C,y:E}=B.toAffine();if(!r.isValid(C)||!r.isValid(E))throw new Error("bad point: x or y not field elements");if(!b(C,E))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(B,C,E,P,I){return E=new v(r.mul(E.X,B),E.Y,E.Z),C=ys(P,C),E=ys(I,E),C.add(E)}class v{constructor(C,E,P){this.X=y("x",C),this.Y=y("y",E,!0),this.Z=y("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(C){const{x:E,y:P}=C||{};if(!C||!r.isValid(E)||!r.isValid(P))throw new Error("invalid affine point");if(C instanceof v)throw new Error("projective point not allowed");return r.is0(E)&&r.is0(P)?v.ZERO:new v(E,P,r.ONE)}static fromBytes(C){const E=v.fromAffine(g(at(C,void 0,"point")));return E.assertValidity(),E}static fromHex(C){return v.fromBytes(pe("pointHex",C))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(C=8,E=!0){return _.createCache(this,C),E||this.multiply(Do),this}assertValidity(){T(this)}hasEvenY(){const{y:C}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(C)}equals(C){k(C);const{X:E,Y:P,Z:I}=this,{X:D,Y:M,Z:F}=C,L=r.eql(r.mul(E,F),r.mul(D,I)),U=r.eql(r.mul(P,F),r.mul(M,I));return L&&U}negate(){return new v(this.X,r.neg(this.Y),this.Z)}double(){const{a:C,b:E}=s,P=r.mul(E,Do),{X:I,Y:D,Z:M}=this;let F=r.ZERO,L=r.ZERO,U=r.ZERO,$=r.mul(I,I),H=r.mul(D,D),q=r.mul(M,M),K=r.mul(I,D);return K=r.add(K,K),U=r.mul(I,M),U=r.add(U,U),F=r.mul(C,U),L=r.mul(P,q),L=r.add(F,L),F=r.sub(H,L),L=r.add(H,L),L=r.mul(F,L),F=r.mul(K,F),U=r.mul(P,U),q=r.mul(C,q),K=r.sub($,q),K=r.mul(C,K),K=r.add(K,U),U=r.add($,$),$=r.add(U,$),$=r.add($,q),$=r.mul($,K),L=r.add(L,$),q=r.mul(D,M),q=r.add(q,q),$=r.mul(q,K),F=r.sub(F,$),U=r.mul(q,H),U=r.add(U,U),U=r.add(U,U),new v(F,L,U)}add(C){k(C);const{X:E,Y:P,Z:I}=this,{X:D,Y:M,Z:F}=C;let L=r.ZERO,U=r.ZERO,$=r.ZERO;const H=s.a,q=r.mul(s.b,Do);let K=r.mul(E,D),X=r.mul(P,M),z=r.mul(I,F),W=r.add(E,P),G=r.add(D,M);W=r.mul(W,G),G=r.add(K,X),W=r.sub(W,G),G=r.add(E,I);let Y=r.add(D,F);return G=r.mul(G,Y),Y=r.add(K,z),G=r.sub(G,Y),Y=r.add(P,I),L=r.add(M,F),Y=r.mul(Y,L),L=r.add(X,z),Y=r.sub(Y,L),$=r.mul(H,G),L=r.mul(q,z),$=r.add(L,$),L=r.sub(X,$),$=r.add(X,$),U=r.mul(L,$),X=r.add(K,K),X=r.add(X,K),z=r.mul(H,z),G=r.mul(q,G),X=r.add(X,z),z=r.sub(K,z),z=r.mul(H,z),G=r.add(G,z),K=r.mul(X,G),U=r.add(U,K),K=r.mul(Y,G),L=r.mul(W,L),L=r.sub(L,K),K=r.mul(W,X),$=r.mul(Y,$),$=r.add($,K),new v(L,U,$)}subtract(C){return this.add(C.negate())}is0(){return this.equals(v.ZERO)}multiply(C){const{endo:E}=e;if(!o.isValidNot0(C))throw new Error("invalid scalar: out of range");let P,I;const D=M=>_.cached(this,M,F=>an(v,F));if(E){const{k1neg:M,k1:F,k2neg:L,k2:U}=N(C),{p:$,f:H}=D(F),{p:q,f:K}=D(U);I=H.add(K),P=S(E.beta,$,q,M,L)}else{const{p:M,f:F}=D(C);P=M,I=F}return an(v,[P,I])[0]}multiplyUnsafe(C){const{endo:E}=e,P=this;if(!o.isValid(C))throw new Error("invalid scalar: out of range");if(C===Ct||P.is0())return v.ZERO;if(C===Qn)return P;if(_.hasCache(this))return this.multiply(C);if(E){const{k1neg:I,k1:D,k2neg:M,k2:F}=N(C),{p1:L,p2:U}=xb(v,P,D,F);return S(E.beta,L,U,I,M)}else return _.unsafe(P,C)}multiplyAndAddUnsafe(C,E,P){const I=this.multiplyUnsafe(E).add(C.multiplyUnsafe(P));return I.is0()?void 0:I}toAffine(C){return x(this,C)}isTorsionFree(){const{isTorsionFree:C}=e;return i===Qn?!0:C?C(v,this):_.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:C}=e;return i===Qn?this:C?C(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(C=!0){return yn(C,"isCompressed"),this.assertValidity(),h(v,this,C)}toHex(C=!0){return fn(this.toBytes(C))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(C=!0){return this.toBytes(C)}_setWindowSize(C){this.precompute(C)}static normalizeZ(C){return an(v,C)}static msm(C,E){return Sh(v,o,C,E)}static fromPrivateKey(C){return v.BASE.multiply(zn(o,C))}}v.BASE=new v(s.Gx,s.Gy,r.ONE),v.ZERO=new v(r.ZERO,r.ONE,r.ZERO),v.Fp=r,v.Fn=o;const A=o.BITS,_=new vh(v,e.endo?Math.ceil(A/2):A);return v.BASE.precompute(8),v}function jh(t){return Uint8Array.of(t?2:3)}function Hh(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function $0(t,e={}){const{Fn:n}=t,r=e.randomBytes||Wc,o=Object.assign(Hh(t.Fp,n),{seed:wh(n.ORDER)});function s(h){try{return!!zn(n,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:b}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==b?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=r(o.seed)){return bb(at(h,o.seed,"seed"),n.ORDER)}function c(h,g=!0){return t.BASE.multiply(zn(n,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:b}=o;if(n.allowedLengths||g===m)return;const w=pe("key",h).length;return w===m||w===b}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const b=zn(n,h);return t.fromHex(g).multiply(b).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>zn(n,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function q0(t,e,n={}){Zf(e),ko(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=n.randomBytes||Wc,o=n.hmac||((E,...P)=>Fh(e,E,pt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=$0(t,n),g={prehash:!1,lowS:typeof n.lowS=="boolean"?n.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function b(E){const P=a>>Qn;return E>P}function w(E,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function R(E,P){Va(P);const I=h.signature,D=P==="compact"?I:P==="recovered"?I+1:void 0;return at(E,D,`${P} signature`)}class y{constructor(P,I,D){this.r=w("r",P),this.s=w("s",I),D!=null&&(this.recovery=D),Object.freeze(this)}static fromBytes(P,I=m){R(P,I);let D;if(I==="der"){const{r:U,s:$}=At.toSig(at(P));return new y(U,$)}I==="recovered"&&(D=P[0],I="compact",P=P.subarray(1));const M=i.BYTES,F=P.subarray(0,M),L=P.subarray(M,M*2);return new y(i.fromBytes(F),i.fromBytes(L),D)}static fromHex(P,I){return this.fromBytes(ms(P),I)}addRecoveryBit(P){return new y(this.r,this.s,P)}recoverPublicKey(P){const I=s.ORDER,{r:D,s:M,recovery:F}=this;if(F==null||![0,1,2,3].includes(F))throw new Error("recovery id invalid");if(a*Mh<I&&F>1)throw new Error("recovery id is ambiguous for h>1 curve");const U=F===2||F===3?D+a:D;if(!s.isValid(U))throw new Error("recovery id 2 or 3 invalid");const $=s.toBytes(U),H=t.fromBytes(pt(jh((F&1)===0),$)),q=i.inv(U),K=N(pe("msgHash",P)),X=i.create(-K*q),z=i.create(M*q),W=t.BASE.multiplyUnsafe(X).add(H.multiplyUnsafe(z));if(W.is0())throw new Error("point at infinify");return W.assertValidity(),W}hasHighS(){return b(this.s)}toBytes(P=m){if(Va(P),P==="der")return ms(At.hexFromSig(this));const I=i.toBytes(this.r),D=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return pt(Uint8Array.of(this.recovery),I,D)}return pt(I,D)}toHex(P){return fn(this.toBytes(P))}assertValidity(){}static fromCompact(P){return y.fromBytes(pe("sig",P),"compact")}static fromDER(P){return y.fromBytes(pe("sig",P),"der")}normalizeS(){return this.hasHighS()?new y(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return fn(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return fn(this.toBytes("compact"))}}const k=n.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const I=Qs(P),D=P.length*8-c;return D>0?I>>BigInt(D):I},N=n.bits2int_modN||function(P){return i.create(k(P))},x=Ao(c);function T(E){return qa("num < 2^"+c,E,Ct,x),i.toBytes(E)}function S(E,P){return at(E,void 0,"message"),P?at(e(E),void 0,"prehashed message"):E}function v(E,P,I){if(["recovered","canonical"].some(X=>X in I))throw new Error("sign() legacy options not supported");const{lowS:D,prehash:M,extraEntropy:F}=Fi(I,g);E=S(E,M);const L=N(E),U=zn(i,P),$=[T(U),T(L)];if(F!=null&&F!==!1){const X=F===!0?r(h.secretKey):F;$.push(pe("extraEntropy",X))}const H=pt(...$),q=L;function K(X){const z=k(X);if(!i.isValidNot0(z))return;const W=i.inv(z),G=t.BASE.multiply(z).toAffine(),Y=i.create(G.x);if(Y===Ct)return;const ee=i.create(W*i.create(q+Y*U));if(ee===Ct)return;let ae=(G.x===Y?0:2)|Number(G.y&Qn),ce=ee;return D&&b(ee)&&(ce=i.neg(ee),ae^=1),new y(Y,ce,ae)}return{seed:H,k2sig:K}}function A(E,P,I={}){E=pe("message",E);const{seed:D,k2sig:M}=v(E,P,I);return lb(e.outputLen,i.BYTES,o)(D,M)}function _(E){let P;const I=typeof E=="string"||Eo(E),D=!I&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!I&&!D)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(D)P=new y(E.r,E.s);else if(I){try{P=y.fromBytes(pe("sig",E),"der")}catch(M){if(!(M instanceof At.Err))throw M}if(!P)try{P=y.fromBytes(pe("sig",E),"compact")}catch{return!1}}return P||!1}function B(E,P,I,D={}){const{lowS:M,prehash:F,format:L}=Fi(D,g);if(I=pe("publicKey",I),P=S(pe("message",P),F),"strict"in D)throw new Error("options.strict was renamed to lowS");const U=L===void 0?_(E):y.fromBytes(pe("sig",E),L);if(U===!1)return!1;try{const $=t.fromBytes(I);if(M&&U.hasHighS())return!1;const{r:H,s:q}=U,K=N(P),X=i.inv(q),z=i.create(K*X),W=i.create(H*X),G=t.BASE.multiplyUnsafe(z).add($.multiplyUnsafe(W));return G.is0()?!1:i.create(G.x)===H}catch{return!1}}function C(E,P,I={}){const{prehash:D}=Fi(I,g);return P=S(P,D),y.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:A,verify:B,recoverPublicKey:C,Signature:y,hash:e})}function K0(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp;let r=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=An(e.n,{BITS:t.nBitLength,allowedLengths:r,modFromBytes:t.wrapPrivateKey}),s={Fp:n,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function z0(t){const{CURVE:e,curveOpts:n}=K0(t),r={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,hash:t.hash,ecdsaOpts:r}}function W0(t,e){const n=e.Point;return Object.assign({},e,{ProjectivePoint:n,CURVE:Object.assign({},t,gh(n.Fn.ORDER,n.Fn.BITS))})}function G0(t){const{CURVE:e,curveOpts:n,hash:r,ecdsaOpts:o}=z0(t),s=U0(e,n),i=q0(s,r,o);return W0(t,i)}function V0(t,e){const n=r=>G0({...t,hash:r});return{...n(e),create:n}}const rl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},X0={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Id=BigInt(2);function Y0(t){const e=rl.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=he(d,n,e)*d%e,f=he(u,n,e)*d%e,h=he(f,Id,e)*l%e,g=he(h,o,e)*h%e,m=he(g,s,e)*g%e,b=he(m,a,e)*m%e,w=he(b,c,e)*b%e,R=he(w,a,e)*m%e,y=he(R,n,e)*d%e,k=he(y,i,e)*g%e,N=he(k,r,e)*l%e,x=he(N,Id,e);if(!Xa.eql(Xa.sqr(x),t))throw new Error("Cannot find square root");return x}const Xa=An(rl.p,{sqrt:Y0}),Zt=V0({...rl,Fp:Xa,lowS:!0,endo:X0},rh);function Z0(t,e,n){const r=qc.digest(e instanceof Uint8Array?e:e.subarray());if(ei(r))return r.then(({digest:o})=>(n?.signal?.throwIfAborted(),Zt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new xd(String(o))});try{return Zt.sign(r.digest,t).toDERRawBytes()}catch(o){throw new xd(String(o))}}function J0(t,e,n,r){const o=qc.digest(n instanceof Uint8Array?n:n.subarray());if(ei(o))return o.then(({digest:s})=>(r?.signal?.throwIfAborted(),Zt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Ed(String(s))});try{return r?.signal?.throwIfAborted(),Zt.verify(e,o.digest,t)}catch(s){throw new Ed(String(s))}}class Uh{type="secp256k1";raw;_key;constructor(e){this._key=rv(e),this.raw=tv(this._key)}toMultihash(){return So.digest(oi(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return Fe.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}verify(e,n,r){return J0(this._key,n,e,r)}}class Q0{type="secp256k1";raw;publicKey;constructor(e,n){this.raw=nv(e),this.publicKey=new Uh(n??ov(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:lt(this.raw,e.raw)}sign(e,n){return Z0(this.raw,e,n)}}function ev(t){return new Q0(t)}function $h(t){return new Uh(t)}function tv(t){return Zt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function nv(t){try{return Zt.getPublicKey(t,!0),t}catch(e){throw new Of(String(e))}}function rv(t){try{return Zt.ProjectivePoint.fromHex(t),t}catch(e){throw new _f(String(e))}}function ov(t){try{return Zt.getPublicKey(t,!0)}catch(e){throw new Of(String(e))}}async function sv(t,e){return Vb()}function Ya(t,e){const{Type:n,Data:r}=bn.decode(t),o=r??new Uint8Array;switch(n){case fe.RSA:return N0(o,e);case fe.Ed25519:return Ch(o);case fe.secp256k1:return $h(o);case fe.ECDSA:return Xf(o);default:throw new Xs}}function iv(t){const{Type:e,Data:n}=bn.decode(t.digest),r=n??new Uint8Array;switch(e){case fe.Ed25519:return Ch(r);case fe.secp256k1:return $h(r);case fe.ECDSA:return Xf(r);default:throw new Xs}}function oi(t){return bn.encode({Type:fe[t.type],Data:t.raw})}function av(t){const e=xs.decode(t),n=e.Data??new Uint8Array;switch(e.Type){case fe.RSA:return T0(n);case fe.Ed25519:return Gb(n);case fe.secp256k1:return ev(n);case fe.ECDSA:return Fy(n);default:throw new Xs}}function cv(t){return xs.encode({Type:fe[t.type],Data:t.raw})}const qh=Symbol.for("nodejs.util.inspect.custom"),lv=114;class ol{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Df]=!0;toString(){return this.string==null&&(this.string=Fe.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ue.createV1(lv,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return lt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return lt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[qh](){return`PeerId(${this.toString()})`}}class Kh extends ol{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class zh extends ol{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Wh extends ol{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const dv=2336;class Gh{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=So.digest(be(this.url))}[qh](){return`PeerId(${this.url})`}[Df]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ue.createV1(dv,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=te(e)),e.toString()===this.toString())}}const uv=114,Rd=2336;function fv(t,e){let n;if(t.charAt(0)==="1"||t.charAt(0)==="Q")n=jf(Fe.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return hv(ue.parse(t));throw new ct('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return Vh(n)}function ur(t){if(t.type==="Ed25519")return new zh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Wh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Kh({multihash:t.toCID().multihash,publicKey:t});throw new Xs}function Vh(t){if(gv(t))return new Kh({multihash:t});if(pv(t))try{const e=iv(t);if(e.type==="Ed25519")return new zh({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Wh({multihash:t,publicKey:e})}catch{const n=te(t.digest);return new Gh(new URL(n))}throw new Xm("Supplied PeerID Multihash is invalid")}function hv(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==uv&&t.code!==Rd)throw new Vm("Supplied PeerID CID is invalid");if(t.code===Rd){const e=te(t.multihash.digest);return new Gh(new URL(e))}return Vh(t.multihash)}function pv(t){return t.code===So.code}function gv(t){return t.code===qc.code}class Xh extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class mv extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class Nr extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Td extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class wv extends Event{data;constructor(e,n){super("message",n),this.data=e}}class sl extends Event{error;local;constructor(e,n,r){super("close",r),this.error=n,this.local=e}}class yv extends sl{constructor(e,n){super(!0,e,n)}}class bv extends sl{constructor(e,n){super(!1,e,n)}}const vv=t=>t/2**32|0,Sv=t=>t>>>0;function xv(t,e,n,r){const o=vv(n),s=Sv(n);t.setUint32(e,r?s:o,r),t.setUint32(e+4,r?o:s,r)}function Za(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ja=t=>t?`"${t}" `:"";function Bt(t,e=""){if(typeof t!="number")throw new TypeError(Ja(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ja(e)+"expected integer >= 0, got "+t);return t}function _t(t,e,n=""){if(Za(t)&&(e===void 0||t.length===e))return t;e!==void 0&&Bt(e,"length");const r=Za(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ja(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}function il(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(Bt(t.outputLen),Bt(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Ev=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Pd=(t,e)=>{Ev(t,e);const n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function Es(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Yh(t,e){_t(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function hR(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function pn(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Mi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ft(t,e){return t<<32-e|t>>>e}function pR(t,e){return t<<e|t>>>32-e>>>0}const Av=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function kv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Cv(t){for(let e=0;e<t.length;e++)t[e]=kv(t[e]);return t}const gR=Av?t=>t:Cv,Zh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Iv=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function al(t){if(_t(t),Zh)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Iv[t[n]];return e}function Nd(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function Jh(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Zh)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=Nd(t.charCodeAt(s)),a=Nd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Rv(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const n=e.scheduler.yield();return t&&n.catch(t),n}return new Promise(n=>e.setTimeout(n,0))}async function mR(t,e,n,r){if(Bt(t,"iters"),Bt(e,"tick"),typeof n!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){n(s);const i=Date.now()-o;i>=0&&i<e||(await Rv(r),o=Date.now())}}function Tv(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{pn(e)}}function wR(t,e=""){return typeof t=="string"?Tv(t):_t(t,void 0,e)}function Pv(t,e,n="opts"){return Pd(t,"defaults"),e!==void 0&&Pd(e,n),Object.assign(Object.create(null),t,e)}function Nv(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Pv({},e,"info");const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Lv(t=32){Bt(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Bv=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function _v(t,e,n){return t&e^~t&n}function Ov(t,e,n){return t&e^t&n^e&n}class Dv{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Mi(this.buffer)}update(e){Es(this),_t(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=Mi(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}r.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(n,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){Es(this),Yh(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,n.fill(0,i),this.padOffset>o-i&&(this.process(r,0),n.fill(0)),xv(r,o-8,this.length*8,s),this.process(r,0),this.roundClean();const a=e===n?r:Mi(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneIntoMeta(e){const{buffer:n,length:r,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=r,e.pos=i,i&&e.buffer.set(n),e}clone(){return this._cloneInto()}}const Fv=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Mv=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array(64);class jv extends Dv{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,n){super(64,e,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,n){for(let u=0;u<16;u++,n+=4)Ut[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Ut[u-15],h=Ut[u-2],g=ft(f,7)^ft(f,18)^f>>>3,m=ft(h,17)^ft(h,19)^h>>>10;Ut[u]=m+Ut[u-7]+g+Ut[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ft(a,6)^ft(a,11)^ft(a,25),h=d+f+_v(a,c,l)+Mv[u]+Ut[u]|0,m=(ft(r,2)^ft(r,13)^ft(r,22))+Ov(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){pn(Ut)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),pn(this.buffer)}}class Hv extends jv{constructor(){super(32,Fv)}}const ji=Nv(()=>new Hv,Bv(1));function Qh(t,e,n=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let r=0;r<t.length;r++)n(t[r],`${e}[${r}]`);return t}const er=(t,e,n)=>_t(t,e,n),ep=Bt;function tr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function Jr(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const Uv=al,$v=t=>Jh(t),tp=Za,np=t=>Lv(t),As=BigInt(0),Ld=BigInt(1),qv=t=>t?`"${t}" `:"";function si(t,e=""){if(typeof t!="boolean")throw new TypeError(qv(e)+"expected boolean, got type="+typeof t);return t}function Kv(t){if(typeof t=="bigint"){if(!gn(t))throw new RangeError("positive bigint expected, got "+t)}else ep(t);return t}function Qa(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function rp(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?As:BigInt("0x"+t)}function op(t){return rp(al(t))}function ks(t){return rp(al(lo(_t(t)).reverse()))}function sp(t,e){if(Bt(e),e===0)throw new Error("zero output length is invalid");t=Kv(t);const n=e*2,r=t.toString(16);if(r.length>n)throw new RangeError("number is too large");return Jh(r.padStart(n,"0"))}function ip(t,e){return sp(t,e).reverse()}function lo(t){return Uint8Array.from(er(t))}function gn(t){return typeof t=="bigint"&&As<=t}function ap(t,e,n){return gn(t)&&gn(e)&&gn(n)&&e<=t&&t<n}function Qr(t,e,n,r){if(!ap(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function zv(t){if(t<As)throw new Error("expected non-negative bigint, got "+t);return t===As?0:t.toString(2).length}const Wv=t=>(Qa(t,"n"),(Ld<<BigInt(t))-Ld);function Cs(t,e={},n={},r="object"){tr(t,r),tr(e,"fields"),tr(n,"optFields");function o(i,a,c){const l=r==="object"?`param "${String(i)}"`:`"${r}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(n,!0)}const ke=BigInt(0),de=BigInt(1),cn=BigInt(2),cp=BigInt(3),cl=BigInt(4),lp=BigInt(5),Gv=BigInt(7),dp=BigInt(8),Vv=BigInt(9),Xv=BigInt(15),up=BigInt(16),Yv=BigInt("0x10000000000000000");function le(t,e){if(e<=ke)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=ke?n:e+n}function Zv(t,e,n){if(n<=de)throw new Error("pow: expected modulus > 1, got "+n);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<ke)throw new Error("invalid exponent, negatives unsupported");if(e===ke)return de;if(e===de)return t;let r=t%n;if(r<ke&&(r+=n),e<Yv){let a=de;for(;e>ke;)e&de&&(a=a*r%n),r=r*r%n,e>>=de;return a}const o=[];for(;e>ke;)o.push(Number(e&Xv)),e>>=cl;const s=new Array(16);s[0]=de,s[1]=r;for(let a=2;a<16;a++)s[a]=s[a-1]*r%n;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%n,i=i*i%n,i=i*i%n,i=i*i%n;const c=o[a];c!==0&&(i=i*s[c]%n)}return i}function ot(t,e,n){if(n<=de)throw new Error("pow2: expected modulus > 1, got "+n);if(e<ke)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >ke;)r*=r,r%=n;return r}function Bd(t,e){if(t===ke)throw new Error("invert: expected non-zero number");if(e<=de)throw new Error("invert: expected modulus > 1, got "+e);let n=le(t,e),r=e,o=ke,s=de;for(;n!==ke;){const a=r/n,c=r-n*a,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==de)throw new Error("invert: does not exist");return le(o,e)}function ll(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function dl(t,e){if((t&de)===ke)throw new Error(e+": expected odd modulus, got "+t)}function fp(t,e){const n=t,r=(n.ORDER+de)/cl,o=n.pow(e,r);return ll(n,o,e),o}function Jv(t,e){const n=t,r=(n.ORDER-lp)/dp,o=n.mul(e,cn),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,cn),s),c=n.mul(i,n.sub(a,n.ONE));return ll(n,c,e),c}function Qv(t){const e=ul(t),n=hp(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+Gv)/up;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,r);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const b=l.eql(l.sqr(u),c),w=l.cmov(d,u,b);return ll(l,w,c),w})}function hp(t){if(t<cp)throw new Error("sqrt is not defined for small field");dl(t,"tonelliShanks");let e=t-de,n=0;for(;e%cn===ke;)e/=cn,n++;let r=cn;const o=ul(t);for(;Is(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return fp;let s=o.pow(r,e);const i=(e+de)/cn;return function(c,l){const d=c;if(d.is0(l))return l;if(Is(d,l)!==1)throw new Error("Cannot find square root");let u=n,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,b=d.sqr(h);for(;!d.eql(b,d.ONE);)if(m++,b=d.sqr(b),m===u)throw new Error("Cannot find square root");const w=de<<BigInt(u-m-1),R=d.pow(f,w);u=m,f=d.sqr(R),h=d.mul(h,f),g=d.mul(g,R)}return g}}function eS(t){return dl(t,"Fp.sqrt"),t%cl===cp?fp:t%dp===lp?Jv:t%up===Vv?Qv(t):hp(t)}const tS=(t,e)=>(le(t,e)&de)===de,nS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function uo(t){if(tr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);Qa(t.BYTES,"BYTES"),Qa(t.BITS,"BITS");for(const e of nS)Jr(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=de)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function pp(t,e,n=!1){uo(t),Qh(e,"nums"),si(n,"passZero");const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,c,l)=>r.is0(c)?a:(o[l]=a,r.mul(a,c)),r.ONE),i=r.inv(s);return e.reduceRight((a,c,l)=>r.is0(c)?a:(o[l]=r.mul(a,o[l]),r.mul(a,c)),i),o}function Is(t,e){uo(t);const n=t;dl(n.ORDER,"FpLegendre");const r=(n.ORDER-de)/cn,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function rS(t,e){if(e!==void 0&&ep(e),t<=ke)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=zv(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${n})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const _d=new WeakMap;class Od{ORDER;BITS;BYTES;isLE;ZERO=ke;ONE=de;_lengths;_mod;constructor(e,n={}){if(e<=de)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=rS(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return le(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return ke<=e&&e<this.ORDER}is0(e){return e===ke}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&de)===de}neg(e){return le(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return le(e*e,this.ORDER)}add(e,n){return le(e+n,this.ORDER)}sub(e,n){return le(e-n,this.ORDER)}mul(e,n){return le(e*n,this.ORDER)}pow(e,n){return Zv(e,n,this.ORDER)}div(e,n){return le(e*Bd(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return Bd(e,this.ORDER)}sqrt(e){let n=_d.get(this);return n||_d.set(this,n=eS(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?ip(e,this.BYTES):sp(e,this.BYTES)}fromBytes(e,n=!1){er(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?ks(e):op(e);if(a&&(c=le(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return pp(this,e,!0)}cmov(e,n,r){return si(r,"condition"),r?n:e}}function ul(t,e={}){return Object.freeze(Od.prototype),new Od(t,e)}const fl=BigInt(0),fo=BigInt(1),oS=BigInt(4),Hi=16,Dd=128,sS=5,Fd=2**31;function hl(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Jr(e.fromAffine,"Point.fromAffine"),Jr(e.fromBytes,"Point.fromBytes"),Jr(e.fromHex,"Point.fromHex"),tr(e.BASE,"Point.BASE"),tr(e.ZERO,"Point.ZERO"),uo(e.Fp),uo(e.Fn)}function iS(t,e){hl(t),gp(e,t);const n=pp(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function aS(t,e,n=1){if(!Number.isSafeInteger(t)||t<n||t>e)throw new Error("invalid window size, expected ["+n+".."+e+"], got W="+t)}function cS(t,e){const n=t*(4*e+128);if(n>Fd)throw new Error("invalid window size: table would need ~"+Math.ceil(n/2**20)+" MiB, max "+Fd/2**20+" MiB")}function lS(t,e){if(t!==void 0){Jr(t,"randomBytes");try{const n=t(e);if(!tp(n)||n.length!==e)return}catch{return}return t}}function gp(t,e){Qh(t,"points"),t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function dS(t,e,n){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,o)=>{if(!(n===void 0?e.isValid(r):gn(r)&&r<n))throw new Error("invalid scalar at index "+o)})}const mp=new WeakMap;function Ui(t){return mp.get(t)||1}function uS(t,e){const n=t.double(),r=[t];for(let o=1;o<e;o++)r.push(r[o-1].add(n));return r}function fS(t,e){const n=2**e,r=n/2,o=BigInt(n-1),s=[];for(;t>fl;){let i=0;t&fo&&(i=Number(t&o),i>=r&&(i-=n),t-=BigInt(i)),s.push(i),t>>=fo}return s}function hS(t,e,n){const r=2**e,o=r/2,s=BigInt(r-1),i=BigInt(e),a=[];for(let c=0;c<n;c++){let l=Number(t&s);t>>=i,l>o&&(l-=r,t+=fo),a.push(l)}if(t!==fl)throw new Error("invalid wnaf");return a}function pS(t,e,n){let r=0;for(const s of n)r=Math.max(r,s.length);let o=t;for(let s=r-1;s>=0;s--){s!==r-1&&(o=o.double());for(let i=0;i<n.length;i++){const a=n[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class gS{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,n){hl(e),this.randomBytes=lS(n,Hi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,n,r){const o=Math.ceil(r/n)+1,s=2**(n-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:n,bits:r,windows:o,comp:i}}wnafCachedCT(e,n){const{W:r,windows:o,comp:s}=e,i=2**(r-1),a=hS(n,r,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let b=1;b<i;b++)g=b===h?s[f+b]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,n,r,o){let s=this.wnafPrecomputes.get(n),i=s?.find(a=>a.W===e&&a.bits===r);return i||(i=this.buildWnafTable(n,e,r),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(n,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,n){if(this.assertPoint(e),!ap(n,fo,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,n,r,o){const s=Ui(e);return s===1?this.fixedWindowCT(e,n,r):this.wnafCachedCT(this.getWnafPrecomputes(s,e,r,o),n)}mulCT(e,n,r){return this.validateMulInput(e,n),this.runCT(e,n,this.bits,r)}mulCTBlinded(e,n,r){if(this.validateMulInput(e,n),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Dd,s=this.randomBytes(Hi);if(!tp(s)||s.length!==Hi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=n+op(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,r)}fixedWindowCT(e,n,r){const o=sS,s=1<<o,i=Wv(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(r/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(n>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,n){return this.randomBytes===void 0?!1:n===fo?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,n,r,o){return this.shouldBlind(e,r)?this.mulCTBlinded(e,n,o):this.mulCT(e,n,o)}mulUnsafe(e,n,r){if(this.assertPoint(e),!gn(n))throw new Error("invalid scalar");const o=Ui(e);if(o===1||n>=this.Point.Fn.ORDER)return mS(this.Point,[e],[n],!0);const s=this.getWnafPrecomputes(o,e,this.bits,r);return this.wnafCachedCT(s,n).p}setWindowSize(e,n){this.assertPoint(e),aS(n,this.bits);const r=Math.ceil((this.bits+Dd)/n)+1;cS(r*2**(n-1),this.Point.Fp.BYTES),mp.set(e,n),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return Ui(e)!==1}}function mS(t,e,n,r=!1){if(hl(t),gp(e,t),si(r,"allowOversized"),dS(n,t.Fn,r?t.Fn.ORDER**oS:void 0),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>uS(i,4)),s=n.map(i=>fS(i,4));return pS(t.ZERO,o,s)}function Md(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return uo(e),e}else return ul(t,{isLE:n})}function wS(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);Cs(n);for(const c of["p","n","h"]){const l=e[c];if(!(gn(l)&&l!==fl))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Md(e.p,n.Fp,r),s=Md(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function yS(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const Fo=BigInt(0),Mo=BigInt(1),jo=BigInt(2),bS=BigInt(4),jd=BigInt(8);function vS(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function SS(t,e={}){Cs(e,{},{},"extraOpts");const n=e,r=wS("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;if(Is(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(Is(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");Cs(n,{},{uvRatio:"function",randomBytes:"function"});const c=n.randomBytes===void 0?np:n.randomBytes,l=jo<<BigInt(o.BYTES*8)-Mo;function d(R){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(R)}const u=n.uvRatio===void 0?(R,y)=>{try{return{isValid:!0,value:o.sqrt(o.div(R,y))}}catch{return{isValid:!1,value:Fo}}}:n.uvRatio;if(!vS(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?R=>o.neg(R):o.eql(i.a,o.ONE)?R=>R:R=>o.mul(i.a,R);function h(R,y,k=!1){const N=k?Mo:Fo;return Qr("coordinate "+R,y,N,l),y}function g(R){if(!(R instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(y,k,N,x){this.X=h("x",y),this.Y=h("y",k),this.Z=h("z",N,!0),this.T=h("t",x),Object.freeze(this)}static CURVE(){return i}static fromAffine(y){if(y instanceof m)throw new Error("extended point not allowed");const{x:k,y:N}=y||{};return h("x",k),h("y",N),new m(k,N,o.ONE,o.mul(k,N))}static fromBytes(y,k=!1){const N=o.BYTES,{a:x,d:T}=i;y=lo(er(y,N,"point")),si(k,"zip215");const S=lo(y),v=y[N-1];S[N-1]=v&-129;const A=ks(S),_=k?l:o.ORDER;Qr("point.y",A,Fo,_);const B=o.sqr(A),C=o.sub(B,o.ONE),E=o.sub(o.mulN(T,B),x);let{isValid:P,value:I}=u(C,E);if(!P)throw new Error("bad point: invalid y coordinate");const D=d(I),M=(v&128)!==0;if(!k&&o.is0(I)&&M)throw new Error("bad point: x=0 and x_0=1");return M!==D&&(I=o.neg(I)),m.fromAffine({x:I,y:A})}static fromHex(y,k=!1){return m.fromBytes($v(y),k)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=6,k=!0){return w.setWindowSize(this,y),k||this.multiply(jo),this}assertValidity(){const y=this,{a:k,d:N}=i;if(y.is0())throw new Error("bad point: ZERO");const{X:x,Y:T,Z:S,T:v}=y,A=o.sqr(x),_=o.sqr(T),B=o.sqr(S),C=o.sqr(B),E=o.mul(A,k),P=o.mul(o.add(E,_),B),I=o.add(C,o.mul(N,o.mul(A,_)));if(!o.eql(P,I))throw new Error("bad point: equation left != right (1)");const D=o.mul(x,T),M=o.mul(S,v);if(!o.eql(D,M))throw new Error("bad point: equation left != right (2)")}equals(y){g(y);const{X:k,Y:N,Z:x}=this,{X:T,Y:S,Z:v}=y,A=o.mul(k,v),_=o.mul(T,x),B=o.mul(N,v),C=o.mul(S,x);return o.eql(A,_)&&o.eql(B,C)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:y,Y:k,Z:N}=this,x=o.sqr(y),T=o.sqr(k),S=o.mul(o.sqr(N),jo),v=f(x),A=o.addN(y,k),_=o.sub(o.subN(o.sqr(A),x),T),B=o.addN(v,T),C=o.subN(B,S),E=o.subN(v,T),P=o.mul(_,C),I=o.mul(B,E),D=o.mul(_,E),M=o.mul(C,B);return new m(P,I,M,D)}add(y){g(y);const{d:k}=i,{X:N,Y:x,Z:T,T:S}=this,{X:v,Y:A,Z:_,T:B}=y,C=o.mul(N,v),E=o.mul(x,A),P=o.mul(o.mulN(S,k),B),I=o.mul(T,_),D=o.sub(o.subN(o.mulN(o.addN(N,x),o.addN(v,A)),C),E),M=o.subN(I,P),F=o.addN(I,P),L=o.sub(E,f(C)),U=o.mul(D,M),$=o.mul(F,L),H=o.mul(D,L),q=o.mul(M,F);return new m(U,$,q,H)}subtract(y){return g(y),this.add(y.negate())}multiply(y){if(!s.isValidNot0(y))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:k,f:N}=w.mulSecret(this,y,a,b);return b([k,N])[0]}multiplyUnsafe(y){if(!s.isValid(y))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return y===Fo?m.ZERO:this.is0()||y===Mo?this:w.mulUnsafe(this,y,b)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(y){const k=this;let N=y;if(N!=null&&typeof N!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof N);const{X:x,Y:T,Z:S}=k,v=k.is0();N==null&&(N=v?o.create(jd):o.inv(S));const A=o.mul(x,N),_=o.mul(T,N),B=o.mul(S,N);if(v)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}clearCofactor(){return a===Mo?this:a===jo?this.double():a===bS?this.double().double():a===jd?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:y,y:k}=this.toAffine(),N=o.toBytes(k);return N[N.length-1]|=d(y)?128:0,N}toHex(){return Uv(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const b=R=>iS(m,R),w=new gS(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const nn=BigInt(0),Ze=BigInt(1),Ho=BigInt(2);function Hd(t,e){return t+e-(e>>Ze<<Ze)}function xS(t){const e=BigInt(6)*t;return(n,r,o)=>{const s=r+o,a=((e+o-r)*n+r)%t;return{x_2:a,x_3:s-a}}}function ES(t){return Cs(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function AS(t){const e=ES(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=r==="x25519";if(!c&&r!=="x448")throw new Error("invalid type");const l=i===void 0?np:i,d=c?255:448,u=xS(n),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Ho**BigInt(254):Ho**BigInt(447),b=c?BigInt(8)*(Ho**BigInt(251)-Ze):BigInt(4)*(Ho**BigInt(445)-Ze),w=m+b+Ze,R=I=>le(I,n),y=k(h);function k(I){return ip(R(I),f)}function N(I){const D=lo(er(I,f,"uCoordinate"));return c&&(D[31]&=127),R(ks(D))}function x(I){return ks(o(lo(er(I,f,"scalar"))))}const T=new Set(c?[nn,Ze,n-Ze,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[nn,Ze,n-Ze]);function S(I,D){const M=N(D);if(T.has(M))throw new Error("invalid private or public key received");const F=B(M,x(I));if(F===nn)throw new Error("invalid private or public key received");return k(F)}function v(I){if(a===void 0)return S(I,y);const D=x(I);Qr("scalar",D,m,w);const M=R(a(D));if(M===nn)throw new Error("invalid private or public key received");return k(M)}const A=v,_=S;function B(I,D){Qr("u",I,nn,n),Qr("scalar",D,m,w);const M=D,F=I;let L=Ze,U=nn,$=I,H=Ze;const q=M^M>>Ze;for(let z=BigInt(d-1);z>=nn;z--){const W=Hd(n,q>>z);({x_2:L,x_3:$}=u(W,L,$)),{x_2:U,x_3:H}=u(W,U,H);const G=L+U,Y=R(G*G),ee=L-U,ae=R(ee*ee),ce=Y-ae,ie=$+H,Ue=$-H,Ie=R(Ue*G),Ve=R(ie*ee),tn=Ie+Ve,De=Ie-Ve;$=R(tn*tn),H=R(F*R(De*De)),L=R(Y*ae),U=R(ce*(Y+R(g*ce)))}const K=Hd(n,M);({x_2:L,x_3:$}=u(K,L,$)),{x_2:U,x_3:H}=u(K,U,H);const X=s(U);return R(L*X)}const C={secretKey:f,publicKey:f,seed:f},E=I=>(I=I===void 0?l(f):I,er(I,C.seed,"seed"),I),P={randomSecretKey:E};return Object.freeze(C),Object.freeze(P),Object.freeze({keygen:yS(E,A),getSharedSecret:_,getPublicKey:A,scalarMult:S,scalarMultBase:v,utils:P,GuBytes:y.slice(),lengths:C})}const Ud=BigInt(0),kS=BigInt(1),$d=BigInt(2),CS=BigInt(3),IS=BigInt(5),RS=BigInt(8),ii=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),TS={p:ii,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:RS,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function wp(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=ii,a=t*t%s*t%s,c=ot(a,$d,s)*a%s,l=ot(c,kS,s)*t%s,d=ot(l,IS,s)*l%s,u=ot(d,e,s)*d%s,f=ot(u,n,s)*u%s,h=ot(f,r,s)*f%s,g=ot(h,o,s)*h%s,m=ot(g,o,s)*h%s,b=ot(m,e,s)*d%s;return{pow_p_5_8:ot(b,$d,s)*t%s,b2:a}}function PS(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const qd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function NS(t,e){const n=ii,r=le(e*e*e,n),o=le(r*r*e,n),s=wp(t*o).pow_p_5_8;let i=le(t*r*s,n);const a=le(e*i*i,n),c=i,l=le(i*qd,n),d=a===t,u=a===le(-t,n),f=a===le(-t*qd,n);return d&&(i=c),(u||f)&&(i=l),tS(i,n)&&(i=le(-i,n)),{isValid:d||u,value:i}}const Kd=SS(TS,{uvRatio:NS}),Uo=(()=>{const t=ii,e=n=>{const{pow_p_5_8:r,b2:o}=wp(n);return le(ot(r,CS,t)*o,t)};return AS({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:PS,scalarMultBase:n=>{const r=le(n,Kd.Fn.ORDER);if(r===Ud)return Ud;const o=Kd.BASE.multiply(r);return le((o.Z+o.Y)*e(le(o.Z-o.Y,t)),t)}})})();class zd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(il(e),_t(n,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,o=new Uint8Array(r);o.set(n.length>r?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),pn(o)}update(e){return Es(this),this.iHash.update(e),this}digestInto(e){Es(this),Yh(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const yp=(()=>{const t=((e,n,r)=>new zd(e,n).update(r).digest());return t.create=(e,n)=>new zd(e,n),t})();function Wd(){const t={};return t.promise=new Promise((e,n)=>{t.resolve=e,t.reject=n}),t}class Gd{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class $i{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const n=this.head;this.head=n.next=new Gd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const n=this.tail.next;this.tail.next=null,this.tail=n,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class LS extends Error{type;code;constructor(e,n){super(e??"The operation was aborted"),this.type="aborted",this.code=n??"ABORT_ERR"}}function BS(t={}){return _S(n=>{const r=n.shift();if(r==null)return{done:!0};if(r.error!=null)throw r.error;return{done:r.done===!0,value:r.value}},t)}function _S(t,e){e=e??{};let n=e.onEnd,r=new $i,o,s,i,a=Wd();const c=async()=>{try{return r.isEmpty()?i?{done:!0}:await new Promise((b,w)=>{s=R=>{s=null,r.push(R);try{b(t(r))}catch(y){w(y)}return o}}):t(r)}finally{r.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Wd()})}},l=b=>s!=null?s(b):(r.push(b),o),d=b=>(r=new $i,s!=null?s({error:b}):(r.push({error:b}),o)),u=b=>{if(i)return o;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:b})},f=b=>i?o:(i=!0,b!=null?d(b):l({done:!0})),h=()=>(r=new $i,f(),{done:!0}),g=b=>(f(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return r.size},onEmpty:async b=>{const w=b?.signal;if(w?.throwIfAborted(),r.isEmpty())return;let R,y;w!=null&&(R=new Promise((k,N)=>{y=()=>{N(new LS)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,R])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},n==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(b){return m.throw(b),n!=null&&(n(b),n=void 0),{done:!0}},return(){return m.return(),n!=null&&(n(),n=void 0),{done:!0}},push:u,end(b){return m.end(b),n!=null&&(n(b),n=void 0),o},get readableLength(){return m.readableLength},onEmpty:b=>m.onEmpty(b)},o}class pl extends Error{name="TimeoutError";constructor(e,n){super(e,n),Error.captureStackTrace?.(this,pl)}}const Vd=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function OS(t,e){const{milliseconds:n,fallback:r,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);if(i?.aborted){f(Vd(i));return}if(i&&(c=()=>{f(Vd(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),n===Number.POSITIVE_INFINITY)return;const h=new pl;a=s.setTimeout.call(void 0,()=>{if(r){try{u(r())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${n} milliseconds`,f(h))},n)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const DS=t=>{const e=t.addEventListener||t.on||t.addListener,n=t.removeEventListener||t.off||t.removeListener;if(!e||!n)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:n.bind(t)}};function FS(t,e,n){let r;const o=new Promise((s,i)=>{if(n={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...n},!(n.count>=0&&(n.count===Number.POSITIVE_INFINITY||Number.isInteger(n.count))))throw new TypeError("The `count` option should be at least 0 or more");n.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=DS(t),u=async(...h)=>{const g=n.multiArgs?h:h[0];if(n.filter)try{if(!await n.filter(g))return}catch(m){r(),i(m);return}c.push(g),n.count===c.length&&(r(),s(c))},f=(...h)=>{r(),i(n.rejectionMultiArgs?h:h[0])};r=()=>{for(const h of a)d(h,u);for(const h of n.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of n.rejectionEvents)a.includes(h)||l(h,f);n.signal&&n.signal.addEventListener("abort",()=>{f(n.signal.reason)},{once:!0}),n.resolveImmediately&&s(c)});if(o.cancel=r,typeof n.timeout=="number"){const s=OS(o,{milliseconds:n.timeout});return s.cancel=()=>{r(),s.clear()},s}return o}function MS(t,e,n){typeof n=="function"&&(n={filter:n}),n={...n,count:1,resolveImmediately:!1};const r=FS(t,e,n),o=r.then(s=>s[0]);return o.cancel=r.cancel,o}class Rs extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class jS extends Error{static name="StreamClosedError";name="StreamClosedError"}function HS(t){return t.reason}function bp(t,e,n){if(e==null||t==null)return t;const r=HS;if(e.aborted)return t.catch(()=>{}),Promise.reject(r(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(r(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const US=Math.pow(2,20)*4;class vp extends Qm{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??US,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new se,this.writeBuffer=new se,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const n=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",n);const r=o=>{this.onDrainPromise?.reject(o.error??new jS)};this.addEventListener("close",r)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),bp(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=BS(),n=s=>{e.push(s.data)};this.addEventListener("message",n);const r=s=>{e.end(s.error)};this.addEventListener("close",r);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",n),this.removeEventListener("close",r),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Nr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(n){this.log("failed to send reset to remote - %e",n)}this.dispatchEvent(new yv(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new mv;this.dispatchEvent(new bv(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new sl))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const n=this.writeBuffer.byteLength;let r=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new se(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,r+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",r,n,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new wv(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Td(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Td(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const $S=4194304;class Xd extends Error{static name="UnwrappedError";name="UnwrappedError"}class Sp extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class qS extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class KS extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function zS(t){return typeof t?.closeRead=="function"}function WS(t){return typeof t?.close=="function"}function qi(t){return zS(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:WS(t)?t.status!=="open":!1}function GS(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function VS(t,e){const n=e?.maxBufferSize??$S,r=new se;let o,s=!1;if(!GS(t))throw new Xh("Argument should be a Stream or a Multiaddr");const i=d=>{if(r.append(d.data),r.byteLength>n){const u=r.byteLength;r.consume(r.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${n}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:r,async read(d){if(s===!0)throw new Xd("Stream was unwrapped");if(qi(t)){if(d?.bytes==null)return null;if(r.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",r.byteLength,d.bytes),new Rs(`Unexpected EOF - stream closed after reading ${r.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(r.byteLength>=u){o.resolve();break}if(await bp(o.promise,d?.signal),qi(t)){if(r.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??r.byteLength;if(r.byteLength<f){if(qi(t))throw t.log.error("closed while reading %d/%d bytes",r.byteLength,f),new Rs(`Unexpected EOF - stream closed while reading ${r.byteLength}/${f} bytes`);return l.read(d)}const h=r.sublist(0,f);return r.consume(f),h},async write(d,u){if(s===!0)throw new Xd("Stream was unwrapped");t.send(d)||await MS(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),r.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",r.byteLength),t.push(r))),t}};return l}function Yd(t,e={}){const n=VS(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=kn(e.maxDataLength));const r=e?.lengthDecoder??Th,o=e?.lengthEncoder??e0;return{async read(i){let a=-1;const c=new se;for(;;){const d=await n.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=r(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Sp("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new KS(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new qS(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await n.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new Rs(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Rs(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await n.write(new se(o(i.byteLength),i),a)},async writeV(i,a){const c=new se(...i.flatMap(l=>[o(l.byteLength),l]));await n.write(c,a)},unwrap(){return n.unwrap()}}}const XS=1024*1024*4,YS=1024*1024*4;class ZS{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new se,this.maxBufferSize=e.maxBufferSize??XS,this.maxDataLength=e.maxDataLength??YS,this.lengthDecoder=e.lengthDecoder??Th,this.encodingLength=e.encodingLength??kn}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new Xh(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let n;try{n=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(n<0||n>this.maxDataLength)throw new Sp("Invalid message length");const r=this.encodingLength(n),o=r+n;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(r,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var JS={};const ho=65535,Zd=ho-16,Co=!!JS?.DUMP_SESSION_KEYS,Jd=16;function ec(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ts=t=>t?`"${t}" `:"";function tc(t,e=""){if(typeof t!="boolean")throw new TypeError(Ts(e)+"expected boolean, got type="+typeof t);return t}function nr(t,e=""){if(typeof t!="number")throw new TypeError(Ts(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ts(e)+"expected integer >= 0, got "+t);return t}function Ae(t,e,n=""){if(ec(t)&&(e===void 0||t.length===e))return t;e!==void 0&&nr(e,"length");const r=ec(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ts(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}const Qd=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function eu(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function QS(t,e){Ae(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function It(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Yt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ex(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const rr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function tx(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function nx(t){for(let e=0;e<t.length;e++)t[e]=tx(t[e]);return t}const ln=rr?t=>t:nx;function rx(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function ox(t,e){if(rx(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function sx(t,e){return Qd(t,"defaults"),Qd(e,"opts"),Object.assign(t,e)}function ix(t,e){if(t=Ae(t),e=Ae(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function ax(t,e,n){const r=e,o=(()=>[]),s=(a,c)=>r(c,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>r(a,...c),s}const cx=(t,e)=>{function n(r,...o){if(Ae(r,void 0,"key"),t.nonceLength!==void 0){const u=o[0];Ae(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(ec(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&Ae(o[i],void 0,"AAD");const a=e(r,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ae(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,Ae(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(Ae(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(n,t),n};function nc(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(Ae(e,t,"output"),n&&!Ps(e))throw new Error("invalid output, must be aligned");return e}function lx(t,e,n){nr(t),nr(e),tc(n);const r=new Uint8Array(16),o=ex(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function Ps(t){return t.byteOffset%4===0}function Ns(t){return Uint8Array.from(Ae(t))}const xp=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),dx=ln(It(xp("expand 16-byte k"))),ux=ln(It(xp("expand 32-byte k")));function ne(t,e){return t<<e|t>>>32-e}const Lr=64,fx=16,rc=2**32-1,tu=Uint32Array.of();function hx(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Lr),d=It(l),u=rr&&Ps(o)&&Ps(s),f=u?It(o):tu,h=u?It(s):tu;if(!rr){for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),ln(d),i>=rc)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}return}for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),i>=rc)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);if(u&&m===Lr){const b=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,R;w<fx;w++)R=b+w,h[R]=f[R]^d[w];g+=Lr;continue}for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}}function px(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=sx({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return nr(o),nr(i),tc(s),tc(n),(a,c,l,d,u=0)=>{Ae(a,void 0,"key"),Ae(c,void 0,"nonce"),Ae(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=nc(f,d,!1),h&&ox(l,d),nr(u),u<0||u>=rc)throw new Error("arx: counter overflow");const g=[];let m=a.length,b,w;if(m===32)g.push(b=Ns(a)),w=ux;else if(m===16&&n)b=new Uint8Array(32),b.set(a),b.set(a,16),w=dx,g.push(b);else throw Ae(a,32,"arx key"),new Error("invalid key size");(!rr||!Ps(c))&&g.push(c=Ns(c));let R=It(b);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const N=c.subarray(0,16);if(rr)r(w,R,It(N),R);else{const x=ln(Uint32Array.from(w));r(x,R,It(N),R),Yt(x),ln(R)}c=c.subarray(16)}else rr||ln(R);const y=16-o;if(y!==c.length)throw new Error(`arx: nonce must be ${y} or 16 bytes`);if(y!==12){const N=new Uint8Array(12);N.set(c,s?0:12-c.length),c=N,g.push(c)}const k=ln(It(c));try{return hx(t,w,R,k,l,d,u,i),d}finally{Yt(...g)}}}function Re(t,e){return t[e++]&255|(t[e++]&255)<<8}class gx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=Ns(Ae(e,32,"key"));const n=Re(e,0),r=Re(e,2),o=Re(e,4),s=Re(e,6),i=Re(e,8),a=Re(e,10),c=Re(e,12),l=Re(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Re(e,16+2*d)}process(e,n,r=!1){const o=r?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],b=i[9],w=Re(e,n+0),R=Re(e,n+2),y=Re(e,n+4),k=Re(e,n+6),N=Re(e,n+8),x=Re(e,n+10),T=Re(e,n+12),S=Re(e,n+14);let v=s[0]+(w&8191),A=s[1]+((w>>>13|R<<3)&8191),_=s[2]+((R>>>10|y<<6)&8191),B=s[3]+((y>>>7|k<<9)&8191),C=s[4]+((k>>>4|N<<12)&8191),E=s[5]+(N>>>1&8191),P=s[6]+((N>>>14|x<<2)&8191),I=s[7]+((x>>>11|T<<5)&8191),D=s[8]+((T>>>8|S<<8)&8191),M=s[9]+(S>>>5|o),F=0,L=F+v*a+A*(5*b)+_*(5*m)+B*(5*g)+C*(5*h);F=L>>>13,L&=8191,L+=E*(5*f)+P*(5*u)+I*(5*d)+D*(5*l)+M*(5*c),F+=L>>>13,L&=8191;let U=F+v*c+A*a+_*(5*b)+B*(5*m)+C*(5*g);F=U>>>13,U&=8191,U+=E*(5*h)+P*(5*f)+I*(5*u)+D*(5*d)+M*(5*l),F+=U>>>13,U&=8191;let $=F+v*l+A*c+_*a+B*(5*b)+C*(5*m);F=$>>>13,$&=8191,$+=E*(5*g)+P*(5*h)+I*(5*f)+D*(5*u)+M*(5*d),F+=$>>>13,$&=8191;let H=F+v*d+A*l+_*c+B*a+C*(5*b);F=H>>>13,H&=8191,H+=E*(5*m)+P*(5*g)+I*(5*h)+D*(5*f)+M*(5*u),F+=H>>>13,H&=8191;let q=F+v*u+A*d+_*l+B*c+C*a;F=q>>>13,q&=8191,q+=E*(5*b)+P*(5*m)+I*(5*g)+D*(5*h)+M*(5*f),F+=q>>>13,q&=8191;let K=F+v*f+A*u+_*d+B*l+C*c;F=K>>>13,K&=8191,K+=E*a+P*(5*b)+I*(5*m)+D*(5*g)+M*(5*h),F+=K>>>13,K&=8191;let X=F+v*h+A*f+_*u+B*d+C*l;F=X>>>13,X&=8191,X+=E*c+P*a+I*(5*b)+D*(5*m)+M*(5*g),F+=X>>>13,X&=8191;let z=F+v*g+A*h+_*f+B*u+C*d;F=z>>>13,z&=8191,z+=E*l+P*c+I*a+D*(5*b)+M*(5*m),F+=z>>>13,z&=8191;let W=F+v*m+A*g+_*h+B*f+C*u;F=W>>>13,W&=8191,W+=E*d+P*l+I*c+D*a+M*(5*b),F+=W>>>13,W&=8191;let G=F+v*b+A*m+_*g+B*h+C*f;F=G>>>13,G&=8191,G+=E*u+P*d+I*l+D*c+M*a,F+=G>>>13,G&=8191,F=(F<<2)+F|0,F=F+L|0,L=F&8191,F=F>>>13,U+=F,s[0]=L,s[1]=U,s[2]=$,s[3]=H,s[4]=q,s[5]=K,s[6]=X,s[7]=z,s[8]=W,s[9]=G}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,r[0]=e[0]+5,o=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+o,o=r[a]>>>13,r[a]&=8191;r[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)r[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+n[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+n[a]|0)+(i>>>16)|0,e[a]=i&65535;Yt(r)}update(e){eu(this),Ae(e),e=Ns(e);const{buffer:n,blockLen:r}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(e,s);continue}n.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Yt(this.h,this.r,this.buffer,this.pad)}digestInto(e){eu(this),QS(e,this),this.finished=!0;const{buffer:n,h:r}=this;let{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=r[i]>>>0,e[s++]=r[i]>>>8}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}const mx=ax(32,t=>new gx(t));function wx(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],b=e[6],w=e[7],R=o,y=n[0],k=n[1],N=n[2],x=i,T=a,S=c,v=l,A=d,_=u,B=f,C=h,E=g,P=m,I=b,D=w,M=R,F=y,L=k,U=N;for(let H=0;H<s;H+=2)x=x+A|0,M=ne(M^x,16),E=E+M|0,A=ne(A^E,12),x=x+A|0,M=ne(M^x,8),E=E+M|0,A=ne(A^E,7),T=T+_|0,F=ne(F^T,16),P=P+F|0,_=ne(_^P,12),T=T+_|0,F=ne(F^T,8),P=P+F|0,_=ne(_^P,7),S=S+B|0,L=ne(L^S,16),I=I+L|0,B=ne(B^I,12),S=S+B|0,L=ne(L^S,8),I=I+L|0,B=ne(B^I,7),v=v+C|0,U=ne(U^v,16),D=D+U|0,C=ne(C^D,12),v=v+C|0,U=ne(U^v,8),D=D+U|0,C=ne(C^D,7),x=x+_|0,U=ne(U^x,16),I=I+U|0,_=ne(_^I,12),x=x+_|0,U=ne(U^x,8),I=I+U|0,_=ne(_^I,7),T=T+B|0,M=ne(M^T,16),D=D+M|0,B=ne(B^D,12),T=T+B|0,M=ne(M^T,8),D=D+M|0,B=ne(B^D,7),S=S+C|0,F=ne(F^S,16),E=E+F|0,C=ne(C^E,12),S=S+C|0,F=ne(F^S,8),E=E+F|0,C=ne(C^E,7),v=v+A|0,L=ne(L^v,16),P=P+L|0,A=ne(A^P,12),v=v+A|0,L=ne(L^v,8),P=P+L|0,A=ne(A^P,7);let $=0;r[$++]=i+x|0,r[$++]=a+T|0,r[$++]=c+S|0,r[$++]=l+v|0,r[$++]=d+A|0,r[$++]=u+_|0,r[$++]=f+B|0,r[$++]=h+C|0,r[$++]=g+E|0,r[$++]=m+P|0,r[$++]=b+I|0,r[$++]=w+D|0,r[$++]=R+M|0,r[$++]=y+F|0,r[$++]=k+L|0,r[$++]=N+U|0}const yx=px(wx,{counterRight:!1,counterLength:4,allowShortKeys:!1}),bx=new Uint8Array(16),nu=(t,e)=>{t.update(e);const n=e.length%16;n&&t.update(bx.subarray(n))},vx=new Uint8Array(32);function ru(t,e,n,r,o){o!==void 0&&Ae(o,void 0,"AAD");const s=t(e,n,vx),i=lx(r.length,o?o.length:0,!0),a=mx.create(s);o&&nu(a,o),nu(a,r),a.update(i);const c=a.digest();return Yt(s,i),c}const Sx=t=>(e,n,r)=>({encrypt(s,i){const a=s.length;i=nc(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,n,c,c,1);const l=ru(t,e,n,c,r);return i.set(l,a),Yt(l),i},decrypt(s,i){i=nc(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=ru(t,e,n,a,r);if(!ix(c,l))throw Yt(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,n,i,i,1),Yt(l),i}}),ou=cx({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Sx(yx));function xx(t,e,n){return il(t),n===void 0&&(n=new Uint8Array(t.outputLen)),yp(t,n,e)}const Br=Uint8Array.of(0),Ex=Uint8Array.of();function Ax(t,e,n,r=32,o){il(t),Bt(r,"length"),_t(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(r>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(r/s);if(n===void 0?n=Ex:_t(n,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=yp.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Br[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(n).update(Br).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Br[0]=i,i>1&&c.update(d),c.update(n).update(Br).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&pn(d),pn(Br),r===a.length)return a;const f=a.slice(0,r);return pn(a),f}const Ep={hashSHA256(t){return ji(t.subarray())},getHKDF(t,e){const n=xx(ji,e,t),o=Ax(ji,n,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=Uo.utils.randomSecretKey();return{publicKey:Uo.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:Uo.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return Uo.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,n,r){return ou(r,e,n).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,n,r,o){return ou(r,e,n).decrypt(t.subarray(),o)}},kx=Ep;function Cx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,n)=>t.generateX25519SharedKey(e.privateKey,n).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const Ls=t=>{const e=Nt(2);return e[0]=t>>8,e[1]=t,e};Ls.bytes=2;const Bs=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};Bs.bytes=2;function Ix(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Ap(t,e){!e.enabled||!Co||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${te(t.privateKey,"hex")}`)):e("Missing local static keys."))}function kp(t,e){!e.enabled||!Co||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${te(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Rx(t,e){!e.enabled||!Co||e(t?`REMOTE_STATIC_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote static public key.")}function Cp(t,e){!e.enabled||!Co||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Ip(t,e,n){!n.enabled||!Co||(n(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&te(t.k,"hex")}`),n(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&te(e.k,"hex")}`))}class eo extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=eo.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Tx=0,Px=4294967295,Nx="Cipherstate has reached maximum n, a new handshake must be performed";class Lx{n;bytes;view;constructor(e=Tx){this.n=e,this.bytes=$e(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Px)throw new Error(Nx)}}const or=$e(0);class $o{k;n;crypto;constructor(e,n=void 0,r=0){this.crypto=e,this.k=n,this.n=new Lx(r)}hasKey(){return!!this.k}encryptWithAd(e,n){if(!this.hasKey())return n;this.n.assertValue();const r=this.crypto.encrypt(n,this.n.getBytes(),e,this.k);return this.n.increment(),r}decryptWithAd(e,n,r){if(!this.hasKey())return n;this.n.assertValue();const o=this.crypto.decrypt(n,this.n.getBytes(),e,this.k,r);return this.n.increment(),o}}class Bx{cs;ck;h;crypto;constructor(e,n){this.crypto=e;const r=be(n,"utf-8");this.h=Ox(e,r),this.ck=this.h,this.cs=new $o(e)}mixKey(e){const[n,r]=this.crypto.hkdf(this.ck,e);this.ck=n,this.cs=new $o(this.crypto,r)}mixHash(e){this.h=this.crypto.hash(new se(this.h,e))}encryptAndHash(e){const n=this.cs.encryptWithAd(this.h,e);return this.mixHash(n),n}decryptAndHash(e){const n=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),n}split(){const[e,n]=this.crypto.hkdf(this.ck,or);return[new $o(this.crypto,e),new $o(this.crypto,n)]}}class _x{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:n,protocolName:r,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=n,this.ss=new Bx(n,r),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,n=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<n+32)throw new Error("message is not long enough");this.re=e.sublist(n,n+32),this.ss.mixHash(this.re)}readS(e,n=0){if(this.rs)throw new Error("remote static public key is already set");const r=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<n+r)throw new Error("message is not long enough");const o=e.sublist(n,n+r);return this.rs=this.ss.decryptAndHash(o),r}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Rp extends _x{writeMessageA(e){return new se(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const n=this.writeE();this.writeEE();const r=this.writeS();return this.writeES(),new se(n,r,this.ss.encryptAndHash(e))}writeMessageC(e){const n=this.writeS();return this.writeSE(),new se(n,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(n){throw new eo(`handshake stage 0 validation fail: ${n.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const n=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+n))}catch(n){throw new eo(`handshake stage 1 validation fail: ${n.message}`)}}readMessageC(e){try{const n=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(n))}catch(n){throw new eo(`handshake stage 2 validation fail: ${n.message}`)}}}function Ox(t,e){if(e.length<=32){const n=$e(32);return n.set(e),n}else return t.hash(e)}var _s;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{if(o.lengthDelimited!==!1&&r.fork(),n.webtransportCerthashes!=null)for(const s of n.webtransportCerthashes)r.uint32(10),r.bytes(s);if(n.streamMuxers!=null)for(const s of n.streamMuxers)r.uint32(18),r.string(s);o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new kd('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(n.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new kd('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(n.string());break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(_s||(_s={}));var Os;(function(t){let e;t.codec=()=>(e==null&&(e=ri((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.identityKey!=null&&n.identityKey.byteLength>0&&(r.uint32(10),r.bytes(n.identityKey)),n.identitySig!=null&&n.identitySig.byteLength>0&&(r.uint32(18),r.bytes(n.identitySig)),n.extensions!=null&&(r.uint32(34),_s.codec().encode(n.extensions,r)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={identityKey:$e(0),identitySig:$e(0)},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.identityKey=n.bytes();break}case 2:{s.identitySig=n.bytes();break}case 4:{s.extensions=_s.codec().decode(n,n.uint32(),{limits:o.limits?.extensions});break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>ni(n,t.codec()),t.decode=(n,r)=>ti(n,t.codec(),r)})(Os||(Os={}));async function Tp(t,e,n){const r=await t.sign(Np(e));return Os.encode({identityKey:oi(t.publicKey),identitySig:r,extensions:n})}async function Pp(t,e,n){try{const r=Os.decode(t),o=Ya(r.identityKey);if(n?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${n}`);if(!e)throw new Error("Remote static does not exist");const s=Np(e);if(!await o.verify(s,r.identitySig))throw new Error("Invalid payload signature");return r}catch(r){throw new Wm(r.message)}}function Np(t){const e=be("noise-libp2p-static-key:");return t instanceof Uint8Array?ja([e,t],e.length+t.length):(t.prepend(e),t)}class Dx extends vp{stream;handshake;metrics;decoder;constructor(e,n,r){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=n,this.metrics=r,this.decoder=new ZS({lengthDecoder:Bs,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const n=new se;for(let r=0;r<e.byteLength;r+=Zd){let o=r+Zd;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(r,o)):s=this.handshake.encrypt(e.sublist(r,o)),this.metrics?.encryptedPackets.increment(),n.append(Ls(s.byteLength)),n.append(s)}return n}decrypt(e){const n=new se;for(let r=0;r<e.byteLength;r+=ho){let o=r+ho;if(o>e.byteLength&&(o=e.byteLength),o-Jd<r)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(r,o):s=e.sublist(r,o);const i=e.subarray(r,o-Jd);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),n.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return n}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function su(t,e,n){return new Dx(t,e,n)}async function Fx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Tp(s,a.publicKey,l),u=new Rp({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Ap(u.s,n),n.trace("Stage 0 - Initiator starting to send first message."),await r.write(u.writeMessageA(or),e),n.trace("Stage 0 - Initiator finished sending first message."),kp(u.e,n),n.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await r.read(e));n.trace("Stage 1 - Initiator received the message."),Cp(u.re,n),Rx(u.rs,n),n.trace("Initiator going to check remote's signature...");const h=await Pp(f,u.rs,c);n.trace("All good with the signature!"),n.trace("Stage 2 - Initiator sending third handshake message."),await r.write(u.writeMessageC(d),e),n.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Ip(g,m,n),{payload:h,encrypt:b=>g.encryptWithAd(or,b),decrypt:(b,w)=>m.decryptWithAd(or,b,w)}}async function Mx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Tp(s,a.publicKey,l),u=new Rp({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Ap(u.s,n),n.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await r.read(e)),n.trace("Stage 0 - Responder received first message."),Cp(u.re,n),n.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await r.write(u.writeMessageB(d),e),n.trace("Stage 1 - Responder sent the second handshake message with signed payload."),kp(u.e,n),n.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await r.read(e));n.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Pp(f,u.rs,c),[g,m]=u.ss.split();return Ip(g,m,n),{payload:h,encrypt:b=>m.encryptWithAd(or,b),decrypt:(b,w)=>g.decryptWithAd(or,b,w)}}class jx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,n={}){const{staticNoiseKey:r,extensions:o,crypto:s,prologueBytes:i}=n,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??kx;this.crypto=Cx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?Ix(a):void 0,r?this.staticKey=c.generateX25519KeyPairFromSeed(r):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??$e(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[ew]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,n){const r=e.log?.newScope("noise")??this.log,o=Yd(e,{lengthEncoder:Ls,lengthDecoder:Bs,maxDataLength:ho}),s=await this.performHandshakeInitiator(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=Ya(s.payload.identityKey);return{connection:su(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const n=this.components.upgrader.getStreamMuxers();if(n!=null)for(const r of e){const o=n.get(r);if(o!=null)return o}if(e.length)throw new Gm("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,n){const r=e.log?.newScope("noise")??this.log,o=Yd(e,{lengthEncoder:Ls,lengthDecoder:Bs,maxDataLength:ho}),s=await this.performHandshakeResponder(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=Ya(s.payload.identityKey);return{connection:su(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Fx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Mx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Hx(t={}){return e=>new jx(e,t)}const Ux="termdock-e2ee-v1",oc=3600*1e3,iu=512*1024*1024,sc=4*1024*1024,es=()=>{},ai=Object.assign(es,{enabled:!1,error:es,trace:es,newScope:()=>ai});Object.freeze(ai);async function Lp(){const t=await sv();return{privateKey:t,peerId:ur(t.publicKey).toString()}}function $x(t){return btoa(String.fromCharCode(...cv(t.privateKey)))}function au(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=av(Uint8Array.from(atob(t),n=>n.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:ur(e.publicKey).toString()}}class Bp{constructor(e=es){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>sc)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(n=>{this.wake=n})}}}}class qx extends vp{constructor(e,n){super({log:ai,direction:n?"outbound":"inbound",maxReadBufferLength:sc,maxWriteBufferLength:sc}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(r=>{this.abort(fr(r))}),this.readTransport()}duplex;outgoing=new Bp(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(fr(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function fr(t){return t instanceof Error?t:new Error("Secure transport failed")}class Kx extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function zx(t){const e=t?.maxAgeMs??oc,n=t?.maxBytesPerDirection??iu;if(!Number.isSafeInteger(e)||e<=0||e>oc||!Number.isSafeInteger(n)||n<=0||n>iu)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:n}}async function Wx(t){const{identity:e,duplex:n,initiator:r,targetPinnedPeerId:o,signal:s}=t,i=zx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(r&&!o)throw new Error("A pinned target identity is required");const a=o?fv(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==ur(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new qx(n,r),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(fr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Hx({crypto:Ep,prologueBytes:new TextEncoder().encode(Ux)})({privateKey:e.privateKey,peerId:ur(e.privateKey.publicKey),logger:{forComponent:()=>ai},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(r?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:Gx(h.connection,i)}}catch(h){throw c.abort(fr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function Gx(t,e){const n=new Bp,r=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Kx,n.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-r,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,n.push(f.data.subarray())}catch(h){t.abort(fr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),n.end(f.error)},{once:!0});let u=!1;return{source:n,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(fr(h)),h}},close(f){f?t.abort(f):t.close()}}}const _p=1012,Op="Encrypted transport renewed";class gl{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(n=>{this.wake=n}),this.wake=void 0}}}const Ki=2*1024*1024,Vx=new TextEncoder,Xx=new TextDecoder("utf-8",{fatal:!0});class Yx{constructor(e){this.duplex=e;const n=this;this.done=e.sink((async function*(){for await(const r of n.outgoing)try{yield r}finally{n.outgoingBytes-=r.byteLength}})()),this.done.catch(r=>this.close(r instanceof Error?r:new Error("Transport failed")))}duplex;outgoing=new gl(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const n=Vx.encode(JSON.stringify(e));if(n.length>Ki)throw new Error("Record too large");const r=new Uint8Array(n.length+4);if(new DataView(r.buffer).setUint32(0,n.length),r.set(n,4),this.outgoingBytes+r.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=r.byteLength;try{this.outgoing.push(r)}catch(o){throw this.outgoingBytes-=r.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const n of this.duplex.source){if(e.length+n.length>Ki*2+8)throw new Error("Record buffer exceeded");const r=new Uint8Array(e.length+n.length);for(r.set(e),r.set(n,e.length),e=r;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>Ki||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(Xx.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function Dp(t){let e="";for(let n=0;n<t.length;n+=8192)e+=String.fromCharCode(...t.subarray(n,n+8192));return btoa(e)}function Fp(t){const e=atob(t);return Uint8Array.from(e,n=>n.charCodeAt(0))}function Zx(t){const e=new gl(64);t.binaryType="arraybuffer";const n=r=>{e.end(r),t.close(1e3)};return t.addEventListener("message",r=>{try{if(!(r.data instanceof ArrayBuffer)||r.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(r.data))}catch{n(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:n,async sink(r){try{for await(const o of r)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw n(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Mp=8,jp=128,Jx=5*1024*1024,Qx=jp+Mp+8,eE=256,qo=3e4,_r=64*1024;function zt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function cu(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Hp extends EventTarget{constructor(e,n,r){super(),this.url=e,this.transmit=n,this.disconnect=r}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,n=""){this.readyState!==3&&(this.disconnect(),this.finish(e,n))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const n=new Event("open");this.dispatchEvent(n),this.onopen?.(n)}else if(e.type==="ws-data"&&typeof e.data=="string"){const n=new MessageEvent("message",{data:e.data});this.dispatchEvent(n),this.onmessage?.(n)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(zt(e.error))}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e.message)}finish(e,n){if(this.readyState===3)return;this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}class tE{constructor(e,n,r){this.channel=e,this.identity=n,this.targetPeerId=r,this.read().catch(o=>this.close(zt(o))),e.done.catch(o=>this.close(zt(o)))}channel;identity;targetPeerId;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=oc-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=Qx)return!1;const n=[...this.pending.values()].filter(r=>r.kind===e).length;return e==="http"?n<Mp:e==="socket"?n<jp:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const n=crypto.randomUUID(),r=new gl(4);return this.pending.set(n,{queue:r,kind:e}),{id:n,queue:r}}reserve(e,n){return n?.aborted?Promise.reject(n.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=eE?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((r,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(n?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),qo),c={kind:e,resolve:r,reject:o,cleanup:()=>{clearTimeout(a),n?.removeEventListener("abort",i)}};this.waiting.push(c),n?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const n=this.waiting[e];if(!this.hasCapacity(n.kind)){e++;continue}this.waiting.splice(e,1),n.cleanup(),n.resolve(this.allocate(n.kind))}}async read(){try{for await(const e of this.channel.read()){const n=this.pending.get(e.id);n&&(n.socket?(n.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(n.queue.push(e),(e.type==="end"||e.type==="error")&&(n.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,n){const{id:r,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(qo,n?.timeoutMs??qo)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:r});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw zt(i.error);return i}finally{clearTimeout(s),this.release(r)}}openSocket(e){cu(e);let n;const r=new AbortController,o=new Hp(e,s=>{if(n){try{JSON.parse(s)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:n,type:"ws-data",data:s})}},()=>{if(r.abort(),n)try{this.channel.send({id:n,type:"ws-close"})}finally{this.release(n)}});return this.reserve("socket",r.signal).then(s=>{if(n=s.id,o.readyState===3){this.release(n);return}const i=this.pending.get(n);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:n,type:"ws-open",path:e})}).catch(s=>{n&&this.release(n),o.fail(zt(s))}),o}async fetch(e,n){const r=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),r);if(s.origin!==r)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,n):n),a=i.method.toUpperCase(),c=cu(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:Jx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((k,N)=>{["cookie","authorization","host","connection","content-length"].includes(N)||(d[N]=k)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},b=this.pending.get(u);if(!b)throw new Error("Secure connection closed");b.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(zt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const R=()=>{i.signal.removeEventListener("abort",w),this.release(u)},y=async()=>{let k;try{const N=(await Promise.race([h.next(),new Promise((x,T)=>{k=setTimeout(()=>T(new Error("服务响应超时,请重试。")),qo)})])).value;if(!N)throw new Error("Secure response ended unexpectedly");if(N.type==="error")throw zt(N.error);return N}finally{clearTimeout(k)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const S=i.body.getReader();g=S;let v=0,A=0;try{for(;;){const{done:_,value:B}=await S.read();if(_)break;if(v+=B.byteLength,v>l)throw new Error("Request body exceeds upload limit");for(let C=0;C<B.byteLength;C+=_r){if(this.channel.send({id:u,type:"upload",data:Dp(B.subarray(C,C+_r))}),(await y()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");A+=Math.min(_r,B.byteLength-C),n?.onUploadProgress?.(A)}}}catch(_){throw await S.cancel(_).catch(()=>{}),_}finally{g=void 0,S.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const k=await y();if(k.type!=="head"||typeof k.status!="number")throw new Error("Invalid response header");const N=new Headers(k.headers);if(a==="HEAD"||[204,205,304].includes(k.status)){if((await y()).type!=="end")throw new Error("Unexpected response body");return R(),new Response(null,{status:k.status,headers:N})}let x=!1;const T=new ReadableStream({pull:async S=>{try{x&&(this.channel.send({id:u,type:"ack"}),x=!1);const v=await y();if(v.type==="end"){S.close(),R();return}if(v.type!=="chunk"||typeof v.data!="string")throw new Error("Invalid response chunk");const A=Fp(v.data);if(A.length>_r)throw new Error("Response chunk exceeds budget");S.enqueue(A),x=!0}catch(v){S.error(v),w(),R()}},cancel:()=>{w(),R()}},{highWaterMark:_r,size:S=>S.byteLength});return new Response(T,{status:k.status,headers:N})}catch(k){throw w(),R(),k}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:_p,reason:Op});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const n of this.waiting.splice(0))n.cleanup(),n.reject(e);for(const n of this.pending.values())n.queue.end(e),n.cancelUpload?.(),n.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function vn(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const n=t.identity??await Lp(),r=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=Zx(r),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),r.removeEventListener("open",h),r.removeEventListener("error",g),r.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),r.addEventListener("open",h),r.addEventListener("error",g),r.addEventListener("close",g),r.readyState===1&&h()});const c=await Wx({identity:n,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new tE(new Yx(c.duplex),n,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(zt(d)),d}return l}catch(c){throw r.close(),c}finally{clearTimeout(i)}}const lu=256*1024,nE=1024*1024;class rE extends EventTarget{constructor(e,n,r=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(n))throw new Error("Invalid target identity");this.upstream=r(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>lu)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:n});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=Fp(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const n=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+n.length>nE||n.length>lu)throw new Error("Relay unavailable or congested");this.upstream.send(n)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let n;if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Dp(n)})}catch(r){throw this.fail("Relay transport congested"),r}}close(e=1e3,n=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,n),this.upstream.close()}}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e),this.upstream.close()}finish(e,n){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}function Up(t){return e=>new rE(e,t)}function oE(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const r=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return r.endsWith("/")&&!r.startsWith("/api/terminal/fs/preview/")?null:r}catch{return null}}function sE(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,n=r=>{if(r.source!==navigator.serviceWorker.controller||r.data?.type!=="termdock-secure-fetch"||r.ports.length!==1)return;const o=r.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=r.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!oE(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,b=!1;const w=()=>{b||(b=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=R=>{if(R.data?.type==="cancel"){w();return}R.data?.type!=="pull"||m||b||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const k=await h.read();if(k.done){o.postMessage({type:"end"}),w();return}g=k.value}const y=g.slice(0,64*1024);g=g.subarray(y.length),o.postMessage({type:"chunk",data:y.buffer},[y.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const R=await t();if(b)return;if(l&&l!==R.targetPeerId)throw new Error("Preview target changed");const y=await R.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(b){await y.body?.cancel();return}h=y.body?.getReader();const k={};y.headers.forEach((N,x)=>{k[x]=N}),o.postMessage({type:"head",status:y.status,headers:k,bodyless:!h,targetPeerId:R.targetPeerId})})().catch(()=>{b||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",n),()=>{navigator.serviceWorker.removeEventListener("message",n);for(const r of[...e])r()}}class et extends Error{constructor(){super("Device authorization expired or revoked")}}const Ko=new WeakMap;function br(t,e={}){const n=Ko.get(t);if(!t.closed&&n&&(!n.settled||Date.now()-n.at<(e.maxAgeMs??1e3)))return n.pending;const r={at:Date.now(),settled:!1,pending:void 0},o=iE(t,e.timeoutMs??5e3).then(s=>(r.at=Date.now(),r.settled=!0,s),s=>{throw Ko.get(t)===r&&Ko.delete(t),s});return r.pending=o,Ko.set(t,r),o}async function iE(t,e){const n=await t.request({type:"permissions"},{timeoutMs:e});if(n.type!=="result"||typeof n.fullService!="boolean"||!Array.isArray(n.grants))throw new Error("Invalid permission response");const r=n.grants,o=n.fullService===!0;if(!o&&r.length===0)throw new et;return{fullService:o,grants:r,canManage:o&&r.length>0||r.some(s=>s.actions.includes("authorization.manage"))}}const $p="termdock-secure-last-path:",aE=10*6e4;function qp(t){try{const e=JSON.parse(sessionStorage.getItem($p+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<aE?e.key:void 0}catch{return}}function ic(t,e){try{sessionStorage.setItem($p+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Kp(t,e,n=!1){return new Promise((r,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(n?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},b=new AbortController;d.add(b),i++,h.run(b.signal).then(w=>{if(m(!0),d.delete(b),a){e(w);return}a=!0,u(),r({value:w,key:h.key})},w=>{if(m(!1),d.delete(b),i--,!a){if(c=w,w instanceof et){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!n&&s<t.length&&(l=setTimeout(f,400))};f()})}const cE=3,lE=1/0,dE=10,zp="termdock-secure-workspace-limit";function Wp(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=dE}function uE(){try{const t=localStorage.getItem(zp),e=t==="unlimited"?1/0:Number(t);if(Wp(e))return e}catch{}return navigator.maxTouchPoints>0?cE:lE}function fE(t,e,n,r){if(t.length<=r)return t;const o=new Set(["root",e,...n?[n]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=r)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const Gp="termdock-workspace",po="termdock:workspace-visibility",ac="termdock:workspace-activate";function ci(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Gp)||"root"}let du,uu;function gt(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==du&&(du=t,uu={...t,subscribe(e){const n=t.subscribe(e,ci()),r=o=>{o.persisted||n()};return window.addEventListener("pagehide",r),()=>{n(),window.removeEventListener("pagehide",r)}}}),t?uu:void 0}catch{return}}function ts(){const t=gt();return!t||t.snapshot().activeKey===ci()}function Ds(t,e=!0){return gt()?.activate(t,e)??!1}function $n(t){gt()?.report(ci(),t)}const cc="termdock-secure-workspace-session:",Vp="termdock-secure-last-workspace";function hE(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(Vp);if(e)return e}catch{}return null}function pE(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(Vp,t)}catch{}}function yR(t){if(t)try{const e=JSON.parse(localStorage.getItem(cc+t)||"null");return localStorage.removeItem(cc+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function gE(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=hE(),f=t&&u!==t.targetPeerId?wn().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let n=uE(),r=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=fE(e.items,e.activeKey,r,n),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(po,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(ac,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){r=u},retentionLimit:()=>n,setRetentionLimit(u){if(Wp(u)){n=u;try{localStorage.setItem(zp,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Gs(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,b=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?b:w):[...e.items,b]},c(),pE(h.targetPeerId),f&&i.add(m),a();for(const[w,R]of s)l(w,R);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=wn().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(cc+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let zi;async function tt(){return zi||(zi=(async()=>{const t=await new Promise((e,n)=>{const r=indexedDB.open("termdock-device-identity",1);r.onupgradeneeded=()=>r.result.createObjectStore("keys"),r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return au(e);const n=await Lp();let r=n;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?r=au(c.result):a.put($x(n),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),r}finally{t.close()}})()),zi}const Je="termdock:secure-state";let J,qn,Me,hr="direct",ns=!1,fu=0,rs=!1,hu=-1/0;const pr=globalThis.fetch.bind(globalThis);function re(){return io()}function Gt(){return J}function mE(){return Me}function Xp(){J?.close(),Me?.close(),J=void 0,Me=void 0}async function Yp(){const t=await pr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function wE(){if(re()){await it();return}if((await Yp()).enabled)return;const t=await pr("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await Qe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function yE(t,e){const{startPasswordBootstrap:n,finishPasswordBootstrap:r}=await Qt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-B5ZngKXH.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await pr(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await tt(),c=await n(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await r(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function ml(t,e){const n=re();if(n&&(n.serviceOrigin||n.url)===t)return await lc(n,e),n;try{return await yE(t,e)}catch(r){if(!(r instanceof TypeError)&&!(r instanceof DOMException))throw r;const o=(await ze()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await lc(s,e),s}}async function lc(t,e){const n=await wl(t),{startPasswordBootstrap:r,finishPasswordBootstrap:o}=await Qt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-B5ZngKXH.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await n.request({type:"password-parameters"},{timeoutMs:5e3});s=await r(e,String(i.saltHex));const a=await n.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await tt()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await n.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),n.close()}}async function bE(t){try{const e=re(),n=e?.serviceOrigin||location.origin,r=await ml(n,t);return await Qe({...r,routes:e?.routes,serviceName:e?.serviceName||r.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function pu(t,e){const n=Oe(t),r=(await ze()).find(i=>(i.serviceOrigin||i.url)===n&&i.targetPeerId);if(e===void 0&&r?.targetPeerId)try{return await Qe({...r,targetPeerId:r.targetPeerId,serviceName:r.label}),{}}catch(i){if(!(i instanceof et))throw i}if(e!==void 0){const i=await ml(n,e);if(r?.targetPeerId&&r.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({...i,routes:r?.routes,serviceName:r?.label||i.serviceName}),{}}const o=await pr(new URL("/api/auth/open/parameters",n).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(r?.targetPeerId&&r.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({url:n,targetPeerId:s,serviceName:r?.label||new URL(n).host,serviceOrigin:n}),{}}function Jt(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const n=JSON.parse(localStorage.getItem(jc)||"null");n&&n.targetPeerId!==t.targetPeerId&&new URL(n.url).host===new URL(t.url).host&&e.push(n)}catch{}return e.flatMap((n,r)=>{try{return n.targetPeerId&&n.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===n.targetPeerId)===r?[{url:Oe(n.url),targetPeerId:n.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function vr(t){const e=Jt(t),n=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],r=new Set;for(const o of n)try{const s=Oe(o);e.some(i=>i.url===s)||r.add(s)}catch{}return[...r]}function Sn(t){const e=new URL("/api/federation/secure",Oe(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function en(t,e){return vn({url:Sn(t.url),targetPeerId:t.targetPeerId,identity:await tt(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function wl(t,e){const n=await tt(),r=vr(t).map(i=>({key:`direct:${i}`,run:a=>vn({url:Sn(i),targetPeerId:t.targetPeerId,identity:n,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of Jt(t))r.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[J,Me].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await en(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(Sn(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await vn({url:u.href,targetPeerId:t.targetPeerId,identity:n,socketFactory:Up(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=qp(t.targetPeerId);r.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Kp(r,i=>i.close());return ic(t.targetPeerId,s.key),s.value}async function vE(t,e){const n=await wl(t,e);try{const o=(await n.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node;if(o?.serviceId!==t.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");return{...o,serviceId:t.targetPeerId}}finally{n.close()}}async function SE(t,e){const n=await wl(t,e),r=()=>n.close();e.addEventListener("abort",r,{once:!0});try{if(e.aborted||(await br(n,{timeoutMs:3e3}),e.aborted))throw e.reason;return n}catch(o){throw n.close(),o}finally{e.removeEventListener("abort",r)}}async function Qe(t,e={}){const n=J,r=Me,o=await tt(),s=Oe(t.serviceOrigin||t.url),i=(await ze()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=Jt(a),l=vr(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,b=async(w,R)=>{if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;const y=m.get(w.targetPeerId);if(y&&!y.closed)return y;const k=await en(w,R);return g.add(k),m.set(w.targetPeerId,k),k};try{if(t.routeCode&&t.entryServiceId){const S=c.find(_=>_.targetPeerId===t.entryServiceId);if(!S)throw new Error("邀请缺少入口信息。");if((await(await b(S)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Pt({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],R=async(S,v)=>{const A=()=>S.close();v.addEventListener("abort",A,{once:!0});try{if(v.aborted||(await br(S),v.aborted))throw v.reason}catch(_){throw S.close(),_}finally{v.removeEventListener("abort",A)}};for(const S of l)w.push({key:`direct:${S}`,run:async v=>{const A=await vn({url:Sn(S),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])});return f=void 0,await R(A,v),{client:A,path:"direct"}}});for(const S of c)w.push({key:`relay:${S.targetPeerId}:${S.url}`,run:async v=>{let A,_;try{if(A=await b(S,v),v.aborted)throw v.reason;const B=await A.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(v.aborted)throw v.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const C=new URL(Sn(S.url));return C.pathname="/api/federation/relay",C.searchParams.set("routeToken",B.routeToken),_=await vn({url:C.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Up(t.targetPeerId),signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])}),f=void 0,await R(_,v),{client:_,entry:A,path:"relay"}}catch(B){throw _?.close(),A&&A!==r&&A!==n&&A.close(),B}}});const y=qp(t.targetPeerId);w.sort((S,v)=>+(v.key===y)-+(S.key===y));const k=await Kp(w,S=>{S.client.close(),S.entry&&S.entry!==n&&S.entry!==r&&S.entry.close()},!!f);if(d=k.value.client,u=k.value.entry,h=k.value.path,e.renewIfCurrent){if(J!==e.renewIfCurrent||n!==e.renewIfCurrent||n.closed||!n.canSwitchTransport||re()?.targetPeerId!==t.targetPeerId){d.close();for(const S of g)S!==Me&&S!==J&&S.close();return J??n}J=d,hr=h,Me=u,ic(t.targetPeerId,k.key),n.retire();for(const S of new Set([r,...g]))S&&S!==n&&S!==d&&S!==u&&S.close();return window.dispatchEvent(new Event(Je)),d}if(ic(t.targetPeerId,k.key),J!==n&&J&&!J.closed&&J.targetPeerId===t.targetPeerId){d.close();for(const S of g)S!==Me&&S.close();return J}h==="direct"&&new URL(s).host===location.host&&$m(t.targetPeerId);const N=(await ze()).find(S=>S.targetPeerId===t.targetPeerId||!S.targetPeerId&&(S.serviceOrigin||S.url)===s),x=N?.label||t.serviceName||new URL(s).host,T={url:s,targetPeerId:t.targetPeerId,serviceName:x,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Km:Pt)({id:N?.id||t.targetPeerId,...T,label:x}),Vn!=="unpaired"&&Vn!==t.targetPeerId&>()&&Ds({id:N?.id||t.targetPeerId,...T,label:x})){d.close();for(const S of g)S!==n&&S!==r&&S.close();return n||d}Nf(T),J=d,hr=h,Me=u;for(const S of new Set([n,r,...g]))S&&S!==d&&S!==u&&S.close();return Vn!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(Je)),d)}catch(w){d?.close();for(const R of g)R!==r&&R.close();throw w}}async function xE(){const t=J,e=re();if(!(rs||ns||qn||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-hu<3e4)){hu=performance.now(),rs=!0;try{await Qe(e,{renewIfCurrent:t})}catch(n){console.debug("[connection] renewal deferred",{reason:n instanceof Error?n.message:"unknown"})}finally{rs=!1}}}async function EE(){const t=J,e=re();if(Date.now()-fu<6e4||rs||ns||hr!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;ns=!0,fu=Date.now();let n;try{for(const o of vr(e))try{n=await vn({url:Sn(o),targetPeerId:e.targetPeerId,identity:await tt(),signal:AbortSignal.timeout(3e3)}),await br(n);break}catch(s){if(n?.close(),n=void 0,s instanceof et)throw s}if(!n||J!==t||!t.canSwitchTransport)return;const r=Me;J=n,n=void 0,Me=void 0,hr="direct",t.close(),r?.close(),window.dispatchEvent(new Event(Je))}catch(r){r instanceof et&&J===t&&(Xp(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{n?.close(),ns=!1}}function AE(){return hr}async function kE(t){return t?(t.throwIfAborted(),new Promise((e,n)=>{const r=()=>n(t.reason);t.addEventListener("abort",r,{once:!0}),it().then(o=>{t.removeEventListener("abort",r),t.aborted?n(t.reason):e(o)},o=>{t.removeEventListener("abort",r),n(o)})})):it()}async function it(){if(J&&!J.closed){const e=J;return xE(),e}if(J=void 0,qn)return qn;const t=re();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return qn=Qe(t,{rememberOnly:!0}).catch(e=>{if(J&&!J.closed&&J.targetPeerId===t.targetPeerId)return J;throw e}).finally(()=>{qn=void 0}),qn}function Zp(t){const e=new URL(t,location.href);if(J&&!J.closed)return J.openSocket(e.pathname+e.search);let n;const r=new Hp(t,o=>n?.send(o),()=>n?.close());return it().then(o=>{r.readyState!==3&&(n=o.openSocket(e.pathname+e.search),n.onopen=()=>r.accept({type:"ws-ready",id:""}),n.onmessage=s=>r.accept({type:"ws-data",id:"",data:s.data}),n.onclose=s=>r.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),n.onerror=()=>r.fail(new Error("Encrypted connection unavailable")))}).catch(o=>r.fail(o)),r}function CE(){sE(it),window.fetch=async(t,e)=>{const n=new URL(t instanceof Request?t.url:String(t),location.href);if(!n.pathname.startsWith("/api/"))return pr(t,e);if(n.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(n.pathname==="/api/meta")return pr(t,e);if(n.pathname==="/api/auth/status"){if(!re()){const s=await Yp();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await br(await it());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof et)return Response.json({enabled:!0,authenticated:!1});throw s}}if(n.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:n.href,e).json();return bE(typeof i.password=="string"?i.password:"")}if(n.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(n.pathname==="/api/auth/logout")return J&&!J.closed&&await J.request({type:"logout"}),J?.close(),Me?.close(),J=void 0,Me=void 0,Um(),location.reload(),Response.json({ok:!0});const r=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await kE(r);return t instanceof Request?o.fetch(t,e):o.fetch(n.pathname+n.search,e)}}async function IE(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of vr({...t,targetPeerId:t.targetPeerId})){let n;const r={url:e,targetPeerId:t.targetPeerId};try{n=await en(r)}catch{continue}try{const o=await n.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:r,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{n.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function RE(t,e){const n=await en(t);try{const r=await n.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(r.items)?r.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await ze()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!r.canManage)throw new Error("请先让入口管理员授权此设备。");await n.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await tt()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{n.close()}}async function TE(t,e){const n=await en(t);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await tt()).peerId;return{canManage:r.canManage===!0,grants:(Array.isArray(r.grants)?r.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{n.close()}}async function PE(t,e,n){if(n!==void 0&&(await ml(Oe(e.url),n)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const r=await en(e);try{await r.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await tt()).peerId,url:Oe(t.serviceOrigin||t.url)})}finally{r.close()}}async function NE(t,e){const n=await en(e);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await tt()).peerId,s=(Array.isArray(r.grants)?r.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await n.request({type:"route-revoke",grantId:i.id})}finally{n.close()}}async function Jp(t,e){const n=await en(e);try{const r=await n.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof r.routeCode!="string"||typeof r.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:r.routeCode,expiresAt:r.expiresAt}}finally{n.close()}}async function os(t,e){const n=(await ze()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Pt({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e});const r=re();r&&r.targetPeerId===t.targetPeerId&&Nf({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e})}async function LE(t,e){const n=t.targetPeerId;if(!n)throw new Error("请先连接这台服务,再添加备用地址。");let r;try{r=Oe(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await ze()).find(a=>a.targetPeerId===n)||t,s=a=>{const c=a.routes??Jt({...a,targetPeerId:n});if(Oe(a.serviceOrigin||a.url)===r||c.some(l=>Oe(l.url)===r))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:r,targetPeerId:n}]};s(await o());let i;try{try{i=await vn({url:Sn(r),targetPeerId:n,identity:await tt(),signal:AbortSignal.timeout(5e3)}),await br(i)}catch(l){throw l instanceof et?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await os(a,c),re()?.targetPeerId===n&&Vn===n&&(!J||J.closed)){const l=J,d=Me;J=i,i=void 0,Me=void 0,hr="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(Je))}return c}finally{i?.close()}}async function gu(t,e){await lc(t,e),await Qe({...t,pairingCode:void 0,routeCode:void 0})}function BE(){let t=!1,e=!1,n=!1,r;const o=new Map,s=new Set,i=new Map,a=async(f,h,g)=>{const m=JSON.stringify(g);if(o.get(h.serviceId)===m)return;const b=AbortSignal.timeout(1e4),w=await f.fetch("/api/csrf-token",{signal:b});if(!w.ok)throw new Error("CONNECTION_AUTHORIZATION_REQUIRED");const R=await w.json();if(typeof R.csrfToken!="string")throw new Error("INVALID_CSRF_TOKEN");const y=await f.fetch("/api/terminal/operations/collaboration-connections",{method:"POST",signal:b,headers:{"Content-Type":"application/json","X-XSRF-TOKEN":R.csrfToken},body:JSON.stringify({origin:h.origin,nodes:g})});if(!y.ok){const k=await y.json().catch(()=>({}));throw new Error(k.error||`HTTP_${y.status}`)}o.set(h.serviceId,m)},c=async()=>{if(t){n=!0;return}const f=re(),h=Gt();if(!(e||!f||!h||h.closed)){t=!0,n=!1;try{let g;const m=await Promise.race([ze(),new Promise((N,x)=>{g=setTimeout(()=>x(new Error("SERVICE_DIRECTORY_TIMEOUT")),8e3)})]).finally(()=>clearTimeout(g));m.some(N=>N.targetPeerId===f.targetPeerId)||m.push({...f,id:f.targetPeerId,label:f.serviceName||f.url});const b=[...new Map(m.filter(N=>!!N.targetPeerId).map(N=>[N.targetPeerId,N])).values()].slice(0,64);if(b.length<2)return;const w=[];for(const N of b)try{const x=`${N.targetPeerId}:${N.serviceOrigin||N.url}`;let T=i.get(x);if(!T){const S=N.targetPeerId===f.targetPeerId?(await h.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node:await vE({...N,targetPeerId:N.targetPeerId},AbortSignal.timeout(8e3));if(S?.serviceId!==N.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");const v=S.origin||N.serviceOrigin||N.url,A=new URL(v);if(A.protocol!=="https:"||A.origin!==v)throw new Error("INVALID_SERVICE_ORIGIN");T={serviceId:S.serviceId,origin:v,...S.caFingerprint256?{caFingerprint256:S.caFingerprint256}:{}},i.set(x,T)}w.push({service:N,node:T})}catch{}if(e||Gt()!==h||re()?.targetPeerId!==f.targetPeerId)return;const R=w.find(N=>N.node.serviceId===f.targetPeerId);if(!R||w.length<2){l(3e4);return}const y=w.map(N=>N.node).sort((N,x)=>N.serviceId.localeCompare(x.serviceId));await a(h,R.node,y);let k=w.length<b.length;for(const N of w){if(N===R||o.get(N.node.serviceId)===JSON.stringify(y))continue;let x;try{x=await SE({...N.service,targetPeerId:N.node.serviceId},AbortSignal.timeout(8e3)),await a(x,N.node,y)}catch{let T=s.has(N.node.serviceId);if(!T&&x)try{(await x.request({type:"collaboration-scoped-peer",origin:N.node.origin,node:R.node},{timeoutMs:8e3})).type==="result"&&(s.add(N.node.serviceId),T=!0)}catch{}T||(k=!0)}finally{x?.close()}}window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!0}})),k&&l(3e4)}catch(g){window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!1,error:g instanceof Error?g.message:"CONNECTION_ENROLLMENT_FAILED"}})),l(3e4)}finally{t=!1,n&&l(100)}}};function l(f=100){e||(clearTimeout(r),r=setTimeout(()=>{c()},f))}const d=()=>{l()},u=Vs(d);window.addEventListener(Je,d),window.addEventListener("termdock:collaboration-enroll",d),window.addEventListener("online",d),window.addEventListener("pageshow",d),window.addEventListener("pagehide",f=>{f.persisted||(e=!0,clearTimeout(r),u(),window.removeEventListener("termdock:collaboration-enroll",d),window.removeEventListener(Je,d),window.removeEventListener("online",d),window.removeEventListener("pageshow",d))}),l()}var zo={},mu;function _E(){if(mu)return zo;mu=1;var t=Lm();return zo.createRoot=t.createRoot,zo.hydrateRoot=t.hydrateRoot,zo}var OE=_E();const DE=Pf(OE);const Qp=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const FE=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const ME=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const wu=t=>{const e=ME(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Wi={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const jE=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},HE=O.createContext({}),UE=()=>O.useContext(HE),$E=O.forwardRef(({color:t,size:e,strokeWidth:n,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=UE()??{},g=r??u?Number(n??d)*24/Number(e??l):n??d;return O.createElement("svg",{ref:c,...Wi,width:e??l??Wi.width,height:e??l??Wi.height,stroke:t??f,strokeWidth:g,className:Qp("lucide",h,o),...!s&&!jE(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,b])=>O.createElement(m,b)),...Array.isArray(s)?s:[s]])});const Ce=(t,e)=>{const n=O.forwardRef(({className:r,...o},s)=>O.createElement($E,{ref:s,iconNode:e,className:Qp(`lucide-${FE(wu(t))}`,`lucide-${t}`,r),...o}));return n.displayName=wu(t),n};const qE=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],eg=Ce("arrow-left",qE);const KE=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],zE=Ce("arrow-right",KE);const WE=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],GE=Ce("arrow-up-right",WE);const VE=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],tg=Ce("bell-dot",VE);const XE=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Fs=Ce("check",XE);const YE=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],ng=Ce("chevron-down",YE);const ZE=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],xn=Ce("chevron-right",ZE);const JE=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],QE=Ce("chevron-up",JE);const e1=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],rg=Ce("copy",e1);const t1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],og=Ce("ellipsis",t1);const n1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],je=Ce("loader-circle",n1);const r1=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],o1=Ce("monitor",r1);const s1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],i1=Ce("pencil",s1);const a1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],sg=Ce("plus",a1);const c1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],li=Ce("server",c1);const l1=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],ig=Ce("smartphone",l1);const d1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],u1=Ce("terminal",d1);const f1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ag=Ce("x",f1),h1={},yu=t=>{let e;const n=new Set,r=(d,u)=>{const f=typeof d=="function"?d(e):d;if(!Object.is(f,e)){const h=e;e=u??(typeof f!="object"||f===null)?f:Object.assign({},e,f),n.forEach(g=>g(e,h))}},o=()=>e,c={setState:r,getState:o,getInitialState:()=>l,subscribe:d=>(n.add(d),()=>n.delete(d)),destroy:()=>{(h1?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=e=t(r,o,c);return c},p1=t=>t?yu(t):yu;var Gi={exports:{}},Vi={},Xi={exports:{}},Yi={};var bu;function g1(){if(bu)return Yi;bu=1;var t=Fc();function e(u,f){return u===f&&(u!==0||1/u===1/f)||u!==u&&f!==f}var n=typeof Object.is=="function"?Object.is:e,r=t.useState,o=t.useEffect,s=t.useLayoutEffect,i=t.useDebugValue;function a(u,f){var h=f(),g=r({inst:{value:h,getSnapshot:f}}),m=g[0].inst,b=g[1];return s(function(){m.value=h,m.getSnapshot=f,c(m)&&b({inst:m})},[u,h,f]),o(function(){return c(m)&&b({inst:m}),u(function(){c(m)&&b({inst:m})})},[u]),i(h),h}function c(u){var f=u.getSnapshot;u=u.value;try{var h=f();return!n(u,h)}catch{return!0}}function l(u,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return Yi.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:d,Yi}var vu;function m1(){return vu||(vu=1,Xi.exports=g1()),Xi.exports}var Su;function w1(){if(Su)return Vi;Su=1;var t=Fc(),e=m1();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=e.useSyncExternalStore,s=t.useRef,i=t.useEffect,a=t.useMemo,c=t.useDebugValue;return Vi.useSyncExternalStoreWithSelector=function(l,d,u,f,h){var g=s(null);if(g.current===null){var m={hasValue:!1,value:null};g.current=m}else m=g.current;g=a(function(){function w(x){if(!R){if(R=!0,y=x,x=f(x),h!==void 0&&m.hasValue){var T=m.value;if(h(T,x))return k=T}return k=x}if(T=k,r(y,x))return T;var S=f(x);return h!==void 0&&h(T,S)?(y=x,T):(y=x,k=S)}var R=!1,y,k,N=u===void 0?null:u;return[function(){return w(d())},N===null?void 0:function(){return w(N())}]},[d,u,f,h]);var b=o(l,g[0],g[1]);return i(function(){m.hasValue=!0,m.value=b},[b]),c(b),b},Vi}var xu;function y1(){return xu||(xu=1,Gi.exports=w1()),Gi.exports}var b1=y1();const v1=Pf(b1),cg={},{useDebugValue:S1}=Ge,{useSyncExternalStoreWithSelector:x1}=v1;let Eu=!1;const E1=t=>t;function A1(t,e=E1,n){(cg?"production":void 0)!=="production"&&n&&!Eu&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Eu=!0);const r=x1(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return S1(r),r}const Au=t=>{(cg?"production":void 0)!=="production"&&typeof t!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const e=typeof t=="function"?p1(t):t,n=(r,o)=>A1(e,r,o);return Object.assign(n,e),n},di=t=>t?Au(t):Au,yl=t=>`@collaboration:${t}`,lg=di(t=>({activePaneId:null,setActivePane:e=>t({activePaneId:e}),docks:{},hosts:{},setDock:(e,n)=>t(r=>{const o={...r.docks};return n?o[e]=n:delete o[e],{docks:o,...!n&&r.activePaneId===yl(e)?{activePaneId:r.docks[e]?.sessionId??null}:{}}}),setHost:(e,n)=>t(r=>{const o={...r.hosts};return n?o[e]=n:delete o[e],{hosts:o}})})),dn=new Map;let to;function dg(){const t=lg.getState().activePaneId;for(const[n,r]of dn)if(r.requiresFocus&&t===yl(n))return r.receive;const e=dn.get(to??"");return e&&!e.requiresFocus?e.receive:void 0}function bR(t){const e=dn.get(t);e&&(e.requiresFocus?lg.getState().setActivePane(yl(t)):to=t)}function k1(t){const e=dg();return!e||!t?!1:(e(t),!0)}function vR(t,e="default",n=!1){dn.set(e,{receive:t,requiresFocus:n}),n||(to=e);const r=o=>{const{text:s,nonce:i}=o.detail??{};!s||dg()!==t||(t(s),o.stopImmediatePropagation(),i&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:i,ok:!0}})))};return window.addEventListener("termdock-insert-reference",r,!0),()=>{dn.get(e)?.receive===t&&(dn.delete(e),to===e&&(to=[...dn.keys()].at(-1))),window.removeEventListener("termdock-insert-reference",r,!0)}}const C1=/^[A-Za-z0-9_@%+=:,./-]$/;function I1(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||C1.test(e)?e:`\\${e}`).join("")}function R1(t,e){if(!e)return!1;try{const n=new URL(e.serviceOrigin||e.url);return n.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(n.hostname)&&!(e.routes??[]).some(r=>r.targetPeerId!==e.targetPeerId)}catch{return!1}}function T1(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,n=()=>!R1(location.origin,io()),r=s=>{const i=e(s);!i||!n()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!n())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Qt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>qC);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",r,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",r,!0),window.removeEventListener("drop",o,!0)}}function nt(){return typeof window>"u"?null:window.termdockDesktop??null}const Zi=new Set;let ku=!1;function SR(t){const e=nt();if(!e)return()=>{};if(Zi.add(t),!ku){const n=r=>{if(!k1(r.paths.map(I1).join(" ")+" "))for(const o of Zi)o(r)};T1(n),e.onNativeFileDrop(n),ku=!0}return()=>{Zi.delete(t)}}function ug(t=navigator.userAgent,e=navigator.maxTouchPoints){const n=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",r=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${n} · ${r}`}let P1;function N1(){return P1??=(async()=>{const t=navigator.userAgent,[e,n]=ug().split(" · "),r=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(r)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${n}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=nt();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function L1({service:t,onBusyChange:e,onConnect:n,onConnectWithPassword:r}){const[o,s]=O.useState(),[i,a]=O.useState(!0),[c,l]=O.useState(!1),[d,u]=O.useState(""),[f,h]=O.useState(0),[g,m]=O.useState(),[b,w]=O.useState("");O.useEffect(()=>{let k=!1,N=!1,x;a(!0),u(""),s(void 0);const T=async S=>{try{const v=await IE(t);if(k)return;N=!0,s(v),u("")}catch(v){!k&&(!N||S)&&u(v instanceof Error?v.message:"暂时无法读取中转列表,请重试。")}finally{k||(a(!1),x=setTimeout(()=>{T(!1)},2e3))}};return T(!0),()=>{k=!0,clearTimeout(x)}},[t.id,t.url,f]);const R=async k=>{if(!c){l(!0),e(!0),u("");try{await k()}catch(N){u(N instanceof Error?N.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},y=async k=>{const N=await RE(o.route,k.serviceId);try{await n(N)}catch(x){if(!(x instanceof et))throw x;m(N)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:k=>{k.preventDefault(),R(async()=>{try{await r?.(g,b)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),r?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:b,disabled:c,onChange:k=>w(k.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!b,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(k=>k+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(k=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!k.available,onClick:()=>{R(()=>y(k))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:k.label||(k.url?new URL(k.url).host:`中转服务 ${k.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:k.available?k.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(xn,{size:16})]},k.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(k=>k+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const dc="#termdock-invite=";function fg(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const n=new TextEncoder().encode(JSON.stringify(t));return e.hash=dc.slice(1)+btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Ms(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(dc))throw new Error("这不是有效的 Termdock 邀请链接");const n=e.hash.slice(dc.length);if(n.length>8192)throw new Error("邀请链接过长");let r;try{const i=n.replace(/-/g,"+").replace(/_/g,"/");r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(r.v!==1||typeof r.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.serviceId)||r.routeOnly!==!0&&(typeof r.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(r.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(r.entryServiceId!==void 0&&(typeof r.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.entryServiceId)))throw new Error("邀请入口身份无效");if(r.routeCode!==void 0&&(typeof r.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.routeCode)||!r.entryServiceId))throw new Error("邀请入口权限无效");if(r.routeOnly===!0&&(!r.entryServiceId||!r.routeCode||r.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(r.serviceUrl!==void 0){const i=new URL(r.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=r.entryServiceId&&r.entryServiceId!==r.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:r.serviceId,pairingCode:r.code,...r.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof r.name=="string"?r.name.slice(0,120):void 0,entryServiceId:r.entryServiceId,routeCode:r.routeCode}}function B1({service:t,onBusyChange:e}){const n={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[r,o]=O.useState(()=>t.routes??Jt(n)),[s,i]=O.useState([]),[a,c]=O.useState(!0),[l,d]=O.useState(!1),[u,f]=O.useState(""),h=L=>{d(L),e(L)},[g,m]=O.useState(),[b,w]=O.useState(""),[R,y]=O.useState(""),[k,N]=O.useState(""),[x,T]=O.useState(!1),[S,v]=O.useState(),[A,_]=O.useState(),[B,C]=O.useState(!1);O.useEffect(()=>{let L=!1;return ze().then(U=>{L||i(U.filter($=>$.targetPeerId&&$.targetPeerId!==t.targetPeerId))}).catch(()=>{L||f("暂时无法读取可用服务。")}).finally(()=>{L||c(!1)}),()=>{L=!0}},[t.targetPeerId]);const E=L=>s.find(U=>U.targetPeerId===L.targetPeerId)?.label||new URL(L.url).host,P=async L=>{h(!0),f(""),N("");try{await L()}catch(U){const $=U instanceof Error?U.message:"";f(/AUTHORIZATION|DENIED/.test($)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},I=async(L,U)=>{const $={url:L.serviceOrigin||L.url,targetPeerId:L.targetPeerId};await P(async()=>{const H=await TE($,n.targetPeerId);if(!H.grants.some(K=>K.active)){if(!H.canManage&&U===void 0){m(L);return}await PE(n,$,U)}const q=[...r.filter(K=>K.targetPeerId!==$.targetPeerId),$];await os(t,q),o(q),m(void 0),w("")})};if(A)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:A,onFocus:L=>L.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(A).then(()=>C(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(rg,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{_(void 0),C(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),I(g,b).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:b,onChange:L=>w(L.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!b,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const D=r.filter(L=>L.targetPeerId===n.targetPeerId),M=r.filter(L=>L.targetPeerId!==n.targetPeerId),F=async()=>{if(!l){h(!0),T(!0),f(""),N("");try{o(await LE({...t,routes:r},R)),y(""),N("备用地址已验证并保存。")}catch(L){f(L instanceof Error?L.message:"暂时无法添加地址,请重试。")}finally{h(!1),T(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),F()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:R,onChange:L=>{y(L.target.value),f(""),N("")},required:!0,disabled:l||r.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||r.length>=4||!R.trim(),children:x?p.jsxs(p.Fragment,{children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),k&&p.jsx("p",{role:"status",className:"service-help",children:k}),r.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),D.length>0&&p.jsx("div",{className:"service-list",children:D.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:L.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${L.url}`,disabled:l,onClick:()=>v(L),children:"移除"})]}),S?.targetPeerId===L.targetPeerId&&S.url===L.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const U=r.filter($=>$.targetPeerId!==L.targetPeerId||$.url!==L.url);await os(t,U),o(U),v(void 0)})},children:"确认移除"})]})]})]},L.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",M.length?`(${M.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:18})}),p.jsx("span",{className:"service-name",children:E(L)}),p.jsx(Fs,{size:16,className:"service-selected"})]}),S?.targetPeerId===L.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(L),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await NE(n.targetPeerId,L);const U=r.filter($=>$.targetPeerId!==L.targetPeerId);await os(t,U),o(U),v(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const U=await Jp(n,L);_(fg({v:1,routeOnly:!0,serviceId:n.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:L.url,entryServiceId:L.targetPeerId,routeCode:U.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>v(L),children:"撤销授权"})]})]},L.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(L=>!r.some(U=>U.targetPeerId===L.targetPeerId)).map(L=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||r.length>=4,onClick:()=>{I(L)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:L.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(xn,{size:16})]},L.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!x&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function _1({current:t,renderRoutes:e,renderRelayServices:n,onOpen:r,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=O.useState([]),[f,h]=O.useState(!0),[g,m]=O.useState(l?{kind:"add"}:{kind:"list"}),[b,w]=O.useState(!1),R=O.useCallback(C=>{w(C),c?.(C)},[c]),[y,k]=O.useState(""),N=O.useCallback(()=>{m(C=>C.kind==="routes"||C.kind==="relay-services"?{kind:"edit",service:C.service}:{kind:"list"}),k("")},[]),x=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;O.useEffect(()=>{a?.({title:x,...x?{back:N}:{}})},[x,N,a]),O.useEffect(()=>{let C=!1,E=0;const P=async()=>{const D=++E;try{const M=await ze();!C&&E===D&&(u(M),k(""))}catch{!C&&E===D&&k("暂时无法读取服务列表,请重试。")}finally{!C&&E===D&&h(!1)}};P();const I=Vs(()=>{P()});return()=>{C=!0,I()}},[]);const T=async C=>{if(!b){R(!0),k("");try{await C()}catch(E){k(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{R(!1)}}},S=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(C=>kt(C,g.service))||g.service:void 0,v=t?d.find(C=>kt(C,t))||t:void 0,A=d.filter(C=>!t||!kt(C,t)),_=v?[v,...A]:A,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[_.map(C=>{const E=!!t&&kt(C,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:b||E,onClick:()=>{T(async()=>{(await r(C))?.passwordRequired&&m({kind:"add",input:C.serviceOrigin||C.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${C.label}`:`打开 ${C.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(li,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:C.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(C.serviceOrigin||C.url).host})]}),E?p.jsx(Fs,{size:17,className:"service-selected"}):p.jsx(xn,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${C.label}`,disabled:b,onClick:()=>{m({kind:"edit",service:C}),k("")},children:p.jsx(og,{size:19})})]},C.id)}),_.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:()=>{m({kind:"add"}),k("")},children:[p.jsx(sg,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:s,children:[p.jsx(ig,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[x&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:b,onClick:N,children:p.jsx(eg,{size:20})}),p.jsx("h2",{children:x||"服务"})]}),g.kind==="relay-services"?n?.(S,R):g.kind==="routes"?e?.(S,R):g.kind==="list"?B:g.kind==="add"?p.jsx(O1,{onSave:C=>T(async()=>{const E=Oe(C);u(await Pt({id:E,url:E,label:new URL(E).host})),N()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:b,onSubmit:async(C,E)=>{let P;return await T(async()=>{P=await o(C,E),P?.passwordRequired||N()}),P}}):p.jsx(D1,{onRelayServices:n&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:S,busy:b,canRemove:!t||!kt(g.service,t),onSave:C=>{T(async()=>{u(await Pt({...S,label:C})),N()})},onRemove:()=>{T(async()=>{u(await zm(g.service.id)),N()})}}),y&&p.jsx("p",{className:"service-error",role:"alert",children:y})]})}function O1({busy:t,onSubmit:e,onSave:n,initialInput:r="",passwordRequired:o=!1}){const[s,i]=O.useState(r),[a,c]=O.useState(""),[l,d]=O.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{n(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(je,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function D1({service:t,busy:e,canRemove:n,onSave:r,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=O.useState(t.label),[l,d]=O.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),r(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(xn,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(xn,{size:16})]}),n&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Fn={},Ji,Cu;function F1(){return Cu||(Cu=1,Ji=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ji}var Qi={},$t={},Iu;function Cn(){if(Iu)return $t;Iu=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return $t.getSymbolSize=function(r){if(!r)throw new Error('"version" cannot be null or undefined');if(r<1||r>40)throw new Error('"version" should be in range from 1 to 40');return r*4+17},$t.getSymbolTotalCodewords=function(r){return e[r]},$t.getBCHDigit=function(n){let r=0;for(;n!==0;)r++,n>>>=1;return r},$t.setToSJISFunction=function(r){if(typeof r!="function")throw new Error('"toSJISFunc" is not a valid function.');t=r},$t.isKanjiModeEnabled=function(){return typeof t<"u"},$t.toSJIS=function(r){return t(r)},$t}var ea={},Ru;function bl(){return Ru||(Ru=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}t.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},t.from=function(r,o){if(t.isValid(r))return r;try{return e(r)}catch{return o}}})(ea)),ea}var ta,Tu;function M1(){if(Tu)return ta;Tu=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let r=0;r<n;r++)this.putBit((e>>>n-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},ta=t,ta}var na,Pu;function j1(){if(Pu)return na;Pu=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,n,r,o){const s=e*this.size+n;this.data[s]=r,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,n){return this.data[e*this.size+n]},t.prototype.xor=function(e,n,r){this.data[e*this.size+n]^=r},t.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},na=t,na}var ra={},Nu;function H1(){return Nu||(Nu=1,(function(t){const e=Cn().getSymbolSize;t.getRowColCoords=function(r){if(r===1)return[];const o=Math.floor(r/7)+2,s=e(r),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(r){const o=[],s=t.getRowColCoords(r),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(ra)),ra}var oa={},Lu;function U1(){if(Lu)return oa;Lu=1;const t=Cn().getSymbolSize,e=7;return oa.getPositions=function(r){const o=t(r);return[[0,0],[o-e,0],[0,o-e]]},oa}var sa={},Bu;function $1(){return Bu||(Bu=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function n(r,o,s){switch(r){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,n(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(sa)),sa}var Wo={},_u;function hg(){if(_u)return Wo;_u=1;const t=bl(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],n=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return Wo.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},Wo.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return n[(o-1)*4+0];case t.M:return n[(o-1)*4+1];case t.Q:return n[(o-1)*4+2];case t.H:return n[(o-1)*4+3];default:return}},Wo}var ia={},Or={},Ou;function q1(){if(Ou)return Or;Ou=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let r=1;for(let o=0;o<255;o++)t[o]=r,e[r]=o,r<<=1,r&256&&(r^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),Or.log=function(r){if(r<1)throw new Error("log("+r+")");return e[r]},Or.exp=function(r){return t[r]},Or.mul=function(r,o){return r===0||o===0?0:t[e[r]+e[o]]},Or}var Du;function K1(){return Du||(Du=1,(function(t){const e=q1();t.mul=function(r,o){const s=new Uint8Array(r.length+o.length-1);for(let i=0;i<r.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(r[i],o[a]);return s},t.mod=function(r,o){let s=new Uint8Array(r);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(r){let o=new Uint8Array([1]);for(let s=0;s<r;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(ia)),ia}var aa,Fu;function z1(){if(Fu)return aa;Fu=1;const t=K1();function e(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(r){this.degree=r,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(r){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(r.length+this.degree);o.set(r);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},aa=e,aa}var ca={},la={},da={},Mu;function pg(){return Mu||(Mu=1,da.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),da}var ht={},ju;function gg(){if(ju)return ht;ju=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r
|
|
3
3
|
]))+`;ht.KANJI=new RegExp(n,"g"),ht.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),ht.BYTE=new RegExp(r,"g"),ht.NUMERIC=new RegExp(t,"g"),ht.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+n+"$"),s=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return ht.testKanji=function(c){return o.test(c)},ht.testNumeric=function(c){return s.test(c)},ht.testAlphanumeric=function(c){return i.test(c)},ht}var Hu;function In(){return Hu||(Hu=1,(function(t){const e=pg(),n=gg();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(s,i){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!e.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?s.ccBits[0]:i<27?s.ccBits[1]:s.ccBits[2]},t.getBestModeForData=function(s){return n.testNumeric(s)?t.NUMERIC:n.testAlphanumeric(s)?t.ALPHANUMERIC:n.testKanji(s)?t.KANJI:t.BYTE},t.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},t.isValid=function(s){return s&&s.bit&&s.ccBits};function r(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+o)}}t.from=function(s,i){if(t.isValid(s))return s;try{return r(s)}catch{return i}}})(la)),la}var Uu;function W1(){return Uu||(Uu=1,(function(t){const e=Cn(),n=hg(),r=bl(),o=In(),s=pg(),i=7973,a=e.getBCHDigit(i);function c(f,h,g){for(let m=1;m<=40;m++)if(h<=t.getCapacity(m,g,f))return m}function l(f,h){return o.getCharCountIndicator(f,h)+4}function d(f,h){let g=0;return f.forEach(function(m){const b=l(m.mode,h);g+=b+m.getBitsLength()}),g}function u(f,h){for(let g=1;g<=40;g++)if(d(f,g)<=t.getCapacity(g,h,o.MIXED))return g}t.from=function(h,g){return s.isValid(h)?parseInt(h,10):g},t.getCapacity=function(h,g,m){if(!s.isValid(h))throw new Error("Invalid QR Code version");typeof m>"u"&&(m=o.BYTE);const b=e.getSymbolTotalCodewords(h),w=n.getTotalCodewordsCount(h,g),R=(b-w)*8;if(m===o.MIXED)return R;const y=R-l(m,h);switch(m){case o.NUMERIC:return Math.floor(y/10*3);case o.ALPHANUMERIC:return Math.floor(y/11*2);case o.KANJI:return Math.floor(y/13);case o.BYTE:default:return Math.floor(y/8)}},t.getBestVersionForData=function(h,g){let m;const b=r.from(g,r.M);if(Array.isArray(h)){if(h.length>1)return u(h,b);if(h.length===0)return 1;m=h[0]}else m=h;return c(m.mode,m.getLength(),b)},t.getEncodedBits=function(h){if(!s.isValid(h)||h<7)throw new Error("Invalid QR Code version");let g=h<<12;for(;e.getBCHDigit(g)-a>=0;)g^=i<<e.getBCHDigit(g)-a;return h<<12|g}})(ca)),ca}var ua={},$u;function G1(){if($u)return ua;$u=1;const t=Cn(),e=1335,n=21522,r=t.getBCHDigit(e);return ua.getEncodedBits=function(s,i){const a=s.bit<<3|i;let c=a<<10;for(;t.getBCHDigit(c)-r>=0;)c^=e<<t.getBCHDigit(c)-r;return(a<<10|c)^n},ua}var fa={},ha,qu;function V1(){if(qu)return ha;qu=1;const t=In();function e(n){this.mode=t.NUMERIC,this.data=n.toString()}return e.getBitsLength=function(r){return 10*Math.floor(r/3)+(r%3?r%3*3+1:0)},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(r){let o,s,i;for(o=0;o+3<=this.data.length;o+=3)s=this.data.substr(o,3),i=parseInt(s,10),r.put(i,10);const a=this.data.length-o;a>0&&(s=this.data.substr(o),i=parseInt(s,10),r.put(i,a*3+1))},ha=e,ha}var pa,Ku;function X1(){if(Ku)return pa;Ku=1;const t=In(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(r){this.mode=t.ALPHANUMERIC,this.data=r}return n.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(o){let s;for(s=0;s+2<=this.data.length;s+=2){let i=e.indexOf(this.data[s])*45;i+=e.indexOf(this.data[s+1]),o.put(i,11)}this.data.length%2&&o.put(e.indexOf(this.data[s]),6)},pa=n,pa}var ga,zu;function Y1(){if(zu)return ga;zu=1;const t=In();function e(n){this.mode=t.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}return e.getBitsLength=function(r){return r*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(n){for(let r=0,o=this.data.length;r<o;r++)n.put(this.data[r],8)},ga=e,ga}var ma,Wu;function Z1(){if(Wu)return ma;Wu=1;const t=In(),e=Cn();function n(r){this.mode=t.KANJI,this.data=r}return n.getBitsLength=function(o){return o*13},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(r){let o;for(o=0;o<this.data.length;o++){let s=e.toSJIS(this.data[o]);if(s>=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[o]+`
|
|
4
4
|
Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),r.put(s,13)}},ma=n,ma}var wa={exports:{}},Gu;function J1(){return Gu||(Gu=1,(function(t){var e={single_source_shortest_paths:function(n,r,o){var s={},i={};i[r]=0;var a=e.PriorityQueue.make();a.push(r,0);for(var c,l,d,u,f,h,g,m,b;!a.empty();){c=a.pop(),l=c.value,u=c.cost,f=n[l]||{};for(d in f)f.hasOwnProperty(d)&&(h=f[d],g=u+h,m=i[d],b=typeof i[d]>"u",(b||m>g)&&(i[d]=g,a.push(d,g),s[d]=l))}if(typeof o<"u"&&typeof i[o]>"u"){var w=["Could not find a path from ",r," to ",o,"."].join("");throw new Error(w)}return s},extract_shortest_path_from_predecessor_list:function(n,r){for(var o=[],s=r;s;)o.push(s),n[s],s=n[s];return o.reverse(),o},find_path:function(n,r,o){var s=e.single_source_shortest_paths(n,r,o);return e.extract_shortest_path_from_predecessor_list(s,o)},PriorityQueue:{make:function(n){var r=e.PriorityQueue,o={},s;n=n||{};for(s in r)r.hasOwnProperty(s)&&(o[s]=r[s]);return o.queue=[],o.sorter=n.sorter||r.default_sorter,o},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var o={value:n,cost:r};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e})(wa)),wa.exports}var Vu;function Q1(){return Vu||(Vu=1,(function(t){const e=In(),n=V1(),r=X1(),o=Y1(),s=Z1(),i=gg(),a=Cn(),c=J1();function l(w){return unescape(encodeURIComponent(w)).length}function d(w,R,y){const k=[];let N;for(;(N=w.exec(y))!==null;)k.push({data:N[0],index:N.index,mode:R,length:N[0].length});return k}function u(w){const R=d(i.NUMERIC,e.NUMERIC,w),y=d(i.ALPHANUMERIC,e.ALPHANUMERIC,w);let k,N;return a.isKanjiModeEnabled()?(k=d(i.BYTE,e.BYTE,w),N=d(i.KANJI,e.KANJI,w)):(k=d(i.BYTE_KANJI,e.BYTE,w),N=[]),R.concat(y,k,N).sort(function(T,S){return T.index-S.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function f(w,R){switch(R){case e.NUMERIC:return n.getBitsLength(w);case e.ALPHANUMERIC:return r.getBitsLength(w);case e.KANJI:return s.getBitsLength(w);case e.BYTE:return o.getBitsLength(w)}}function h(w){return w.reduce(function(R,y){const k=R.length-1>=0?R[R.length-1]:null;return k&&k.mode===y.mode?(R[R.length-1].data+=y.data,R):(R.push(y),R)},[])}function g(w){const R=[];for(let y=0;y<w.length;y++){const k=w[y];switch(k.mode){case e.NUMERIC:R.push([k,{data:k.data,mode:e.ALPHANUMERIC,length:k.length},{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.ALPHANUMERIC:R.push([k,{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.KANJI:R.push([k,{data:k.data,mode:e.BYTE,length:l(k.data)}]);break;case e.BYTE:R.push([{data:k.data,mode:e.BYTE,length:l(k.data)}])}}return R}function m(w,R){const y={},k={start:{}};let N=["start"];for(let x=0;x<w.length;x++){const T=w[x],S=[];for(let v=0;v<T.length;v++){const A=T[v],_=""+x+v;S.push(_),y[_]={node:A,lastCount:0},k[_]={};for(let B=0;B<N.length;B++){const C=N[B];y[C]&&y[C].node.mode===A.mode?(k[C][_]=f(y[C].lastCount+A.length,A.mode)-f(y[C].lastCount,A.mode),y[C].lastCount+=A.length):(y[C]&&(y[C].lastCount=A.length),k[C][_]=f(A.length,A.mode)+4+e.getCharCountIndicator(A.mode,R))}}N=S}for(let x=0;x<N.length;x++)k[N[x]].end=0;return{map:k,table:y}}function b(w,R){let y;const k=e.getBestModeForData(w);if(y=e.from(R,k),y!==e.BYTE&&y.bit<k.bit)throw new Error('"'+w+'" cannot be encoded with mode '+e.toString(y)+`.
|
|
5
5
|
Suggested mode is: `+e.toString(k));switch(y===e.KANJI&&!a.isKanjiModeEnabled()&&(y=e.BYTE),y){case e.NUMERIC:return new n(w);case e.ALPHANUMERIC:return new r(w);case e.KANJI:return new s(w);case e.BYTE:return new o(w)}}t.fromArray=function(R){return R.reduce(function(y,k){return typeof k=="string"?y.push(b(k,null)):k.data&&y.push(b(k.data,k.mode)),y},[])},t.fromString=function(R,y){const k=u(R,a.isKanjiModeEnabled()),N=g(k),x=m(N,y),T=c.find_path(x.map,"start","end"),S=[];for(let v=1;v<T.length-1;v++)S.push(x.table[T[v]].node);return t.fromArray(h(S))},t.rawSplit=function(R){return t.fromArray(u(R,a.isKanjiModeEnabled()))}})(fa)),fa}var Xu;function eA(){if(Xu)return Qi;Xu=1;const t=Cn(),e=bl(),n=M1(),r=j1(),o=H1(),s=U1(),i=$1(),a=hg(),c=z1(),l=W1(),d=G1(),u=In(),f=Q1();function h(x,T){const S=x.size,v=s.getPositions(T);for(let A=0;A<v.length;A++){const _=v[A][0],B=v[A][1];for(let C=-1;C<=7;C++)if(!(_+C<=-1||S<=_+C))for(let E=-1;E<=7;E++)B+E<=-1||S<=B+E||(C>=0&&C<=6&&(E===0||E===6)||E>=0&&E<=6&&(C===0||C===6)||C>=2&&C<=4&&E>=2&&E<=4?x.set(_+C,B+E,!0,!0):x.set(_+C,B+E,!1,!0))}}function g(x){const T=x.size;for(let S=8;S<T-8;S++){const v=S%2===0;x.set(S,6,v,!0),x.set(6,S,v,!0)}}function m(x,T){const S=o.getPositions(T);for(let v=0;v<S.length;v++){const A=S[v][0],_=S[v][1];for(let B=-2;B<=2;B++)for(let C=-2;C<=2;C++)B===-2||B===2||C===-2||C===2||B===0&&C===0?x.set(A+B,_+C,!0,!0):x.set(A+B,_+C,!1,!0)}}function b(x,T){const S=x.size,v=l.getEncodedBits(T);let A,_,B;for(let C=0;C<18;C++)A=Math.floor(C/3),_=C%3+S-8-3,B=(v>>C&1)===1,x.set(A,_,B,!0),x.set(_,A,B,!0)}function w(x,T,S){const v=x.size,A=d.getEncodedBits(T,S);let _,B;for(_=0;_<15;_++)B=(A>>_&1)===1,_<6?x.set(_,8,B,!0):_<8?x.set(_+1,8,B,!0):x.set(v-15+_,8,B,!0),_<8?x.set(8,v-_-1,B,!0):_<9?x.set(8,15-_-1+1,B,!0):x.set(8,15-_-1,B,!0);x.set(v-8,8,1,!0)}function R(x,T){const S=x.size;let v=-1,A=S-1,_=7,B=0;for(let C=S-1;C>0;C-=2)for(C===6&&C--;;){for(let E=0;E<2;E++)if(!x.isReserved(A,C-E)){let P=!1;B<T.length&&(P=(T[B]>>>_&1)===1),x.set(A,C-E,P),_--,_===-1&&(B++,_=7)}if(A+=v,A<0||S<=A){A-=v,v=-v;break}}}function y(x,T,S){const v=new n;S.forEach(function(E){v.put(E.mode.bit,4),v.put(E.getLength(),u.getCharCountIndicator(E.mode,x)),E.write(v)});const A=t.getSymbolTotalCodewords(x),_=a.getTotalCodewordsCount(x,T),B=(A-_)*8;for(v.getLengthInBits()+4<=B&&v.put(0,4);v.getLengthInBits()%8!==0;)v.putBit(0);const C=(B-v.getLengthInBits())/8;for(let E=0;E<C;E++)v.put(E%2?17:236,8);return k(v,x,T)}function k(x,T,S){const v=t.getSymbolTotalCodewords(T),A=a.getTotalCodewordsCount(T,S),_=v-A,B=a.getBlocksCount(T,S),C=v%B,E=B-C,P=Math.floor(v/B),I=Math.floor(_/B),D=I+1,M=P-I,F=new c(M);let L=0;const U=new Array(B),$=new Array(B);let H=0;const q=new Uint8Array(x.buffer);for(let G=0;G<B;G++){const Y=G<E?I:D;U[G]=q.slice(L,L+Y),$[G]=F.encode(U[G]),L+=Y,H=Math.max(H,Y)}const K=new Uint8Array(v);let X=0,z,W;for(z=0;z<H;z++)for(W=0;W<B;W++)z<U[W].length&&(K[X++]=U[W][z]);for(z=0;z<M;z++)for(W=0;W<B;W++)K[X++]=$[W][z];return K}function N(x,T,S,v){let A;if(Array.isArray(x))A=f.fromArray(x);else if(typeof x=="string"){let P=T;if(!P){const I=f.rawSplit(x);P=l.getBestVersionForData(I,S)}A=f.fromString(x,P||40)}else throw new Error("Invalid data");const _=l.getBestVersionForData(A,S);if(!_)throw new Error("The amount of data is too big to be stored in a QR Code");if(!T)T=_;else if(T<_)throw new Error(`
|
|
@@ -32,4 +32,4 @@ ${t.stack}`:"",e?`
|
|
|
32
32
|
React component stack:
|
|
33
33
|
${e.trim()}`:""].filter(Boolean).join(`
|
|
34
34
|
`)}async function UI(t){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();try{return document.execCommand("copy")}catch{return!1}finally{e.remove()}}function $I({error:t,componentStack:e}){const{t:n}=fi(),[r,o]=Ge.useState("idle"),s=async()=>{const i=HI(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await UI(i)?"copied":"failed")};return p.jsx("div",{className:"flex h-full items-center justify-center p-4",children:p.jsxs("div",{className:"flex flex-col items-center gap-3 text-center max-w-md",children:[p.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center",children:p.jsx("svg",{className:"w-6 h-6 text-destructive",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:p.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),p.jsxs("div",{className:"space-y-1",children:[p.jsx("h3",{className:"font-medium text-foreground",children:n("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||n("errorBoundary.unexpected")})]}),p.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:[p.jsx("button",{type:"button",onClick:()=>{s()},className:"rounded-full bg-surface-2 px-5 py-2.5 text-sm font-medium text-foreground ring-1 ring-border/15 transition hover:bg-surface-elevated active:scale-[0.97]",children:n(r==="copied"?"errorBoundary.copied":r==="failed"?"errorBoundary.copyFailed":"errorBoundary.copyDetails")}),p.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"rounded-full bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-sm transition-all hover:bg-primary/90 active:scale-[0.97]",children:n("errorBoundary.retry")})]})]})})}class qI extends Ge.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,n){console.error("Terminal error caught by boundary:",e,n),this.setState({componentStack:n.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx($I,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function we(){try{if(window.parent!==window&&location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin&&window.parent.__termdockWorkspaceHost)return window.parent}catch{}return window}const KI="debug",zI="termdock:debug";function gf(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function WI(){if(typeof window>"u")return new Set;const t=gf(new URLSearchParams(window.location.search).get(KI));let e=new Set;try{e=gf(window.localStorage.getItem(zI))}catch{e=new Set}const n=new Set([...t,...e]);return n.has("1")||n.has("true")||n.has("*")||n.has("all")?new Set(["*"]):n}function GI(t){const e=WI();return e.has("*")||e.has(t)}function VI(t){const e=GI(t);return(...n)=>{e&&console.log(`[debug:${t}]`,...n)}}const mf=80,XI=60,YI="termdock:viewport-keyboard-change",ZI="termdock:viewport-layout-change",Rt=240,wf=640,yf=360,JI=1500;function QI({measuredHeight:t,documentVisible:e,editableFocused:n}){return e&&n&&t>0}function Ta(){if(typeof document>"u")return!1;const t=document.activeElement;return t instanceof HTMLElement&&t.matches('input:not([type="hidden"]), textarea, select, [contenteditable]:not([contenteditable="false"])')}const $s=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},nm=(t,e)=>{const n=t.map($s).filter(r=>r>0);return n.find(r=>r>=Rt)??n[0]??e},oo=()=>typeof window>"u"?wf:nm([we().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,we().visualViewport?.height,window.screen?.availHeight,window.screen?.height],wf),rm=()=>typeof window>"u"?yf:nm([we().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,we().visualViewport?.width,window.screen?.availWidth,window.screen?.width],yf),qt=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},om=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,e2=()=>typeof window>"u"?!1:we().navigator.standalone===!0||we().matchMedia?.("(display-mode: standalone)").matches===!0,sm=()=>{if(typeof window>"u"||!om()||!e2())return{top:0,right:0,bottom:0,left:0};if(!(oo()>=rm()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,n=window.screen?.height||window.innerHeight,r=Math.min(e,n),o=Math.max(e,n);return r>=700?{top:20,right:0,bottom:20,left:0}:o<780?{top:20,right:0,bottom:0,left:0}:{top:o>=852?59:o>=844?47:44,right:0,bottom:34,left:0}};function t2(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=$s(we().visualViewport?.height),n=Math.max(0,Math.round(we().visualViewport?.offsetTop??0)),r=oo(),s=e>=Rt?Math.min(r,e+n):r,i=Math.max(r,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,Rt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,Rt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,Rt)}px`),a.setProperty("--app-vv-offset-top",`${n}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=sm();c.top>0&&a.setProperty("--safe-top-inset",`${c.top}px`),c.right>0&&a.setProperty("--safe-right-inset",`${c.right}px`),c.bottom>0&&a.setProperty("--safe-bottom-inset",`${c.bottom}px`),c.left>0&&a.setProperty("--safe-left-inset",`${c.left}px`)}function NR(t={}){const{cssVarName:e="--app-vh"}=t,n=Ge.useMemo(()=>VI("viewport"),[]),r=Ge.useCallback(()=>{if(typeof window>"u")return 0;const d=we().visualViewport,u=oo();if(!d)return u;const f=$s(d.height);if(f<Rt&&u>=Rt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,b=Math.max(0,Math.min(u,m));return b>0?Math.round(b):u},[]),[o,s]=Ge.useState(r),i=Ge.useRef(0),a=Ge.useRef(0),c=Ge.useRef(0),l=Ge.useRef(!1);return Ge.useEffect(()=>{if(typeof window>"u")return;let d=null,u=0,f=null,h="",g=null;const m=()=>{if(g?.isConnected)return g;try{return g=document.createElement("div"),g.setAttribute("aria-hidden","true"),g.style.cssText=["position:fixed","top:0","left:0","width:0","height:0","visibility:hidden","pointer-events:none","padding-top:constant(safe-area-inset-top)","padding-top:env(safe-area-inset-top,0px)","padding-right:constant(safe-area-inset-right)","padding-right:env(safe-area-inset-right,0px)","padding-bottom:constant(safe-area-inset-bottom)","padding-bottom:env(safe-area-inset-bottom,0px)","padding-left:constant(safe-area-inset-left)","padding-left:env(safe-area-inset-left,0px)"].join(";"),(document.body||document.documentElement).appendChild(g),g}catch{}return null},b=()=>{let I={top:0,right:0,bottom:0,left:0};try{const L=m();if(L){const U=getComputedStyle(L);I={top:qt(U.paddingTop),right:qt(U.paddingRight),bottom:qt(U.paddingBottom),left:qt(U.paddingLeft)}}}catch{}const D=we();if(D!==window){const L=D.getComputedStyle(D.document.documentElement);I={top:Math.max(I.top,qt(L.getPropertyValue("--safe-top-inset"))),right:Math.max(I.right,qt(L.getPropertyValue("--safe-right-inset"))),bottom:Math.max(I.bottom,qt(L.getPropertyValue("--safe-bottom-inset"))),left:Math.max(I.left,qt(L.getPropertyValue("--safe-left-inset")))}}const M=sm(),F={top:Math.max(I.top,M.top),right:Math.max(I.right,M.right),bottom:Math.max(I.bottom,M.bottom),left:Math.max(I.left,M.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${F.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${F.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${F.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${F.left}px`),F},w=(I,D,M,F)=>{const L=Math.max(D,M);if(i.current===0){i.current=L,a.current=I,document.documentElement.style.setProperty("--app-base-vh",`${L}px`);return}const U=Math.abs(I-a.current),$=F<=mf;(U>XI||$)&&(i.current=L,a.current=I,document.documentElement.style.setProperty("--app-base-vh",`${L}px`))},R=(I="event")=>{d=null;const D=r(),M=Math.round(we().visualViewport?.offsetTop??0),F=$s(we().visualViewport?.height),L=F>=Rt?F:D,U=oo(),$=rm(),H=Math.max(0,L+M),q=b(),K=q.bottom,X=Math.max(0,i.current-H-K);w($,U,H,X),s(Sr=>Sr===D?Sr:D);const z=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${D}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${M}px`);const W=i.current,G=Math.min(D,L),Y=Math.max(0,Math.min(W,H)),ee=Math.max(0,Math.round(W-G-K)),ae=Ta(),ce=QI({measuredHeight:ee,documentVisible:document.visibilityState==="visible",editableFocused:ae}),ie=ce?ee:0,Ue=ie>=mf,Ie=-ie,Ve=ie;document.documentElement.style.setProperty("--kb-translate-y",`${Ie}px`),document.documentElement.style.setProperty("--kb-margin-top",`${Ve}px`),document.documentElement.style.setProperty("--kb-height",`${ie}px`),document.documentElement.style.setProperty("--app-visible-vh",`${Y}px`);const tn=Math.abs(ie-c.current)>1,De=Ue!==l.current;(tn||De)&&(c.current=ie,l.current=Ue,document.dispatchEvent(new CustomEvent(YI,{detail:{baseHeight:W,visibleHeight:Y,visualViewportHeight:L,offsetTop:M,keyboardHeight:ie,isOpen:Ue,source:I}}))),(z!==D||M>0||tn||De)&&n("sync",{cssVarName:e,innerHeight:U,baseHeight:W,rawViewportHeight:L,offsetTop:M,visibleHeight:Y,rawHeight:D,appliedHeight:D,keyboardViewportHeight:G,measuredKeyboardHeight:ee,editableFocused:ae,applyKeyboardInset:ce,keyboardHeight:ie,isKeyboardOpen:Ue,safeAreaInsets:q,source:I}),document.dispatchEvent(new CustomEvent(ZI,{detail:{height:D,baseHeight:W,visibleHeight:Y,offsetTop:M,source:I}}))},y=()=>{d===null&&(d=window.requestAnimationFrame(()=>{d=null;const I=we(),D=I.visualViewport,M=[I.innerWidth,I.innerHeight,D?.width,D?.height,D?.offsetTop,D?.offsetLeft,document.visibilityState,Ta()].join(":"),F=f;f=null,(F||M!==h)&&(h=M,R(F||"viewport.settle")),performance.now()<u&&y()}))},k=(I="event")=>{(I.includes("visibilitychange")||I.includes("pageshow"))&&n("schedule",{source:I}),f=I,om()&&document.visibilityState==="visible"&&(u=performance.now()+JI),y()};k("mount");const N=()=>k("resize"),x=()=>k("orientationchange"),T=()=>k("visualViewport.resize"),S=()=>k("visualViewport.scroll"),v=()=>k("focusin"),A=()=>k("focusout"),_=I=>{u=0;const D=document.activeElement;D instanceof HTMLElement&&Ta()&&D.blur(),c.current=0,l.current=!1;const M=Math.max(i.current,oo(),Rt),F=document.documentElement.style;F.setProperty(e,`${M}px`),F.setProperty("--app-visible-vh",`${M}px`),F.setProperty("--app-vv-offset-top","0px"),F.setProperty("--kb-translate-y","0px"),F.setProperty("--kb-margin-top","0px"),F.setProperty("--kb-height","0px"),s(L=>L===M?L:M),n("keyboard session reset",{source:I,baseHeight:M})};window.addEventListener("resize",N),window.addEventListener("orientationchange",x),we().visualViewport?.addEventListener("resize",T),we().visualViewport?.addEventListener("scroll",S),document.addEventListener("focusin",v),document.addEventListener("focusout",A);const B=I=>{n("resume",{source:I,innerHeight:Math.round(window.innerHeight),visualViewport:we().visualViewport?{width:Math.round(we().visualViewport.width),height:Math.round(we().visualViewport.height),offsetTop:Math.round(we().visualViewport.offsetTop)}:null,hidden:document.hidden}),k(I)},C=()=>{document.hidden?_("visibilitychange:hidden"):B("visibilitychange")},E=()=>B("pageshow"),P=()=>_("pagehide");return document.addEventListener("visibilitychange",C),window.addEventListener("pageshow",E),window.addEventListener("pagehide",P),()=>{window.removeEventListener("resize",N),window.removeEventListener("orientationchange",x),we().visualViewport?.removeEventListener("resize",T),we().visualViewport?.removeEventListener("scroll",S),document.removeEventListener("focusin",v),document.removeEventListener("focusout",A),document.removeEventListener("visibilitychange",C),window.removeEventListener("pageshow",E),window.removeEventListener("pagehide",P),d!==null&&window.cancelAnimationFrame(d),g?.remove()}},[e,n,r]),o}const n2=1e3,r2=2e4,o2=9e4,s2=5e3,Q={ws:null,listeners:new Set,reconnectAttempt:0,reconnectTimer:null,idleCloseTimer:null,closing:!1};let Zo=0,cr=null;function i2(){return typeof window>"u"?null:`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}/api/control/ws`}function im(){Q.idleCloseTimer&&(clearTimeout(Q.idleCloseTimer),Q.idleCloseTimer=null)}function a2(){im(),!(Q.ws&&Q.ws.readyState===WebSocket.OPEN)&&(Q.idleCloseTimer=setTimeout(()=>{Q.idleCloseTimer=null,Q.listeners.size===0&&c2()},s2))}function c2(){if(Q.ws){try{Q.ws.close()}catch{}Q.ws=null}cr&&(clearInterval(cr),cr=null)}function bf(){if(Q.reconnectTimer)return;const t=Math.min(n2*Math.pow(2,Q.reconnectAttempt),r2);Q.reconnectAttempt+=1,Q.reconnectTimer=setTimeout(()=>{Q.reconnectTimer=null,am()},t)}function am(){const t=i2();if(!t||Q.ws&&Q.ws.readyState===WebSocket.OPEN)return;let e;try{e=Zp(t)}catch{bf();return}Q.ws=e,e.onopen=()=>{Q.reconnectAttempt=0,Zo=Date.now(),cr||(cr=setInterval(()=>{if(!(!Q.ws||Q.ws.readyState!==WebSocket.OPEN)&&Zo>0&&Date.now()-Zo>o2)try{Q.ws.close()}catch{}},3e4),cr.unref?.())},e.onmessage=n=>{Zo=Date.now();let r=null;try{r=JSON.parse(n.data)}catch{return}if(!r)return;if(r.type==="session-notice"){if(typeof r.id!="string"||typeof r.sessionId!="string"||typeof r.sessionName!="string"||typeof r.message!="string"||!r.message.trim()||r.message.length>4e3||r.title!==void 0&&(typeof r.title!="string"||r.title.length>120)||typeof r.createdAt!="number")return;const i=r;for(const a of Q.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="update-state"){const i=r.state;if(!i||typeof i.status!="string"||typeof i.currentVersion!="string")return;const a={type:"update-state",state:i};for(const c of Q.listeners)try{c(a)}catch(l){console.error("[clientStateSync] listener threw:",l)}return}if(r.type==="server-health"){const i=r.state;if(!i||typeof i.attention!="boolean"||typeof i.supervised!="boolean")return;const a={type:"server-health",state:i};for(const c of Q.listeners)try{c(a)}catch(l){console.error("[clientStateSync] listener threw:",l)}return}if(r.type==="context-draft"){if(typeof r.text!="string")return;const i={type:"context-draft",text:r.text,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:Date.now(),origin:typeof r.origin=="string"?r.origin:null};for(const a of Q.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="pinned-explorer-roots"){if(!r.pinnedExplorerRoots||typeof r.pinnedExplorerRoots!="object"||Array.isArray(r.pinnedExplorerRoots))return;const i={type:"pinned-explorer-roots",pinnedExplorerRoots:r.pinnedExplorerRoots,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:Date.now(),origin:typeof r.origin=="string"?r.origin:null};for(const a of Q.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="config-updated"){if(r.key!=="toolbar-presets"&&r.key!=="agent-rules"&&r.key!=="program-detection")return;const i={type:"config-updated",key:r.key,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:void 0};for(const a of Q.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type!=="client-state"||!r.state)return;const o=r.state,s={type:"client-state",clientState:{sessions:Array.isArray(o.sessions)?o.sessions:[],updatedAt:typeof o.updatedAt=="number"?o.updatedAt:Date.now()},inventory:r.inventory,seq:typeof r.seq=="number"?r.seq:void 0};for(const i of Q.listeners)try{i(s)}catch(a){console.error("[clientStateSync] listener threw:",a)}},e.onclose=()=>{Q.ws===e&&(Q.ws=null),Q.listeners.size>0&&bf()},e.onerror=()=>{}}function cm(t){return Q.listeners.add(t),im(),Q.ws||am(),()=>{Q.listeners.delete(t),Q.listeners.size===0&&a2()}}const Pa=di(t=>({unread:{},viewing:null,receive:(e,n)=>t(r=>{const o=r.unread[e]??[];return r.viewing===e||o.includes(n)?r:{unread:{...r.unread,[e]:[...o,n]}}}),view:e=>t(n=>{if(!e||!n.unread[e])return n.viewing===e?n:{viewing:e};const r={...n.unread};return delete r[e],{viewing:e,unread:r}})})),lm=new Set(["bash","zsh","fish","sh","dash","ksh","tcsh","csh","nu"]);function Gn(t){if(!t)return null;if(t==="/")return"/";const e=t.replace(/\/+$/,"").split("/");return e[e.length-1]||t}function l2(t,e,n,r=lm,o=null,s=null){if(t.customName)return{primary:t.name,secondary:Gn(n)};if(o){const a=Gn(n),c=o===n||o===a;if(s!=="idle"&&!r.has(o)&&!c)return{primary:o,secondary:a}}if(e&&!r.has(e))return{primary:e,secondary:Gn(n)};const i=Gn(n);return i?{primary:i,secondary:null}:{primary:t.name,secondary:null}}function d2(t,e,n,r=lm,o=null,s=null){return l2(t,e,n,r,o,s).primary}function u2(t,e,n){const r=[],o=new Map;for(const s of t){const i=e(s),a=i&&i.trim().length>0?i:"";let c=o.get(a);c||(c={key:a,label:a?Gn(a)??a:n,sessions:[]},o.set(a,c),r.push(c)),c.sessions.push(s)}return r.sort((s,i)=>(s.key===""?1:0)-(i.key===""?1:0))}function LR(t){return t&&t.trim().length>0?t:""}function BR(t,e,n){const r=[...t],[o]=r.splice(e,1);return o?(r.splice(n,0,o),r.flatMap(s=>s.sessions.map(i=>i.id))):t.flatMap(s=>s.sessions.map(i=>i.id))}function f2(t,e){const n=new Set;return t.flatMap(r=>{const o=[...new Set(r.sessionIds)].filter(s=>e.has(s)&&!n.has(s));return o.length<(r.federated?1:2)?[]:(o.forEach(s=>n.add(s)),[{...r,sessionIds:o}])})}function _R(t,e,n,r,o=[],s=[]){const i=new Map(t.map(g=>[g.id,g])),a=f2(s,new Set(i.keys())),c=new Map,l=new Map,d=o.filter(g=>g.sessionIds.length>=2&&g.sessionIds.every(m=>i.has(m))),u=(g,m)=>{const b=i.get(m);g.forEach(w=>{c.set(w,g),l.set(w,b)})};for(const g of a){const m=new Set(g.sessionIds),b=new Map;for(const y of d)y.sessionIds.every(k=>m.has(k))&&y.sessionIds.forEach(k=>b.set(k,y.sessionIds));const w=new Set,R=g.sessionIds.flatMap(y=>{if(w.has(y))return[];const k=b.get(y)??[y];return k.forEach(N=>w.add(N)),k});u(R,g.sessionIds[0])}for(const g of d)g.sessionIds.some(m=>c.has(m))||u(g.sessionIds,g.sessionIds[0]);const f=g=>{const m=new Set;return g.flatMap(b=>{if(m.has(b.id))return[];const w=c.get(b.id)??[b.id];return w.forEach(R=>m.add(R)),w.map(R=>i.get(R))})};if(!n)return{arranged:f(t),groups:[]};const h=u2(t,g=>e(l.get(g.id)??g),r).map(g=>({...g,sessions:f(g.sessions)}));return{arranged:h.flatMap(g=>g.sessions),groups:h}}function h2(t,e,n){const r=t.findIndex(o=>n(o)===e);return r<0?null:t[r+1]?n(t[r+1]):r>0?n(t[r-1]):null}const dm="termdock-session-fonts-v1",vf=8,p2=32;function um(t){return Number.isFinite(t)?Math.max(vf,Math.min(p2,Math.round(t))):vf}function Ol(){if(typeof window>"u")return{};try{const t=window.localStorage.getItem(dm);if(!t)return{};const e=JSON.parse(t);if(typeof e!="object"||e===null)return{};const n={};for(const[r,o]of Object.entries(e))typeof o=="number"&&Number.isFinite(o)&&(n[r]=um(o));return n}catch{return{}}}function fm(t){if(!(typeof window>"u"))try{window.localStorage.setItem(dm,JSON.stringify(t))}catch{}}function OR(t){return Ol()[t]??null}function DR(t,e){if(typeof window>"u")return;const n=Ol(),r=e===null?null:um(e);r===null?delete n[t]:n[t]=r,fm(n),window.dispatchEvent(new CustomEvent("termfontchange",{detail:{sessionId:t,fontSize:r}}))}function g2(t){if(typeof window>"u")return;const e=Ol();t in e&&(delete e[t],fm(e))}const Na="termdock-sessions",Rc="termdock-active-session",Dl="termdock-sessions-cache";function Tc(){try{const t=localStorage.getItem(Rc);return t&&t.trim().length>0?t:null}catch{return null}}function Un(t){try{t?localStorage.setItem(Rc,t):localStorage.removeItem(Rc)}catch{}}function hm(){if(typeof window>"u")return null;try{const t=localStorage.getItem(Dl);if(!t)return null;const e=JSON.parse(t);return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null&&typeof n.sessionId=="string"&&typeof n.name=="string"):null}catch{return null}}function rn(t){if(!(typeof window>"u"))try{localStorage.setItem(Dl,JSON.stringify(t))}catch{}}function Sf(){if(!(typeof window>"u"))try{localStorage.removeItem(Dl)}catch{}}function pm(t){return t.map(e=>({...e,mode:e.mode==="tmux"?"tmux":"shell",tmuxSessionName:e.tmuxSessionName??null,customName:e.customName===!0}))}function xf(t){return pm(t.map(e=>({sessionId:e.sessionId,name:e.name,customName:e.customName===!0,backendSessionId:e.backendSessionId,mode:e.mode,tmuxSessionName:e.tmuxSessionName,createdAt:e.createdAt,lastActivity:e.lastActivity}))).map((e,n)=>({...e,activeProgram:t[n]?.activeProgram??null,cwd:t[n]?.cwd??null}))}function Ef(t){return t.map(e=>`${e.sessionId}:${e.name}:${e.customName}:${e.backendSessionId}:${e.mode}:${e.tmuxSessionName}:${e.lastActivity}:${e.activeProgram??""}:${e.cwd??""}`).join("|")}function Pc(t,e){return t.length===0?null:e&&t.some(n=>n.sessionId===e)?e:t[0]?.sessionId??null}function m2(){const t=hm()??[];return{sessions:t,activeSessionId:Pc(t,Tc())}}function FR(){const t=O.useRef(hm()).current,e=O.useRef(Tc()).current,[n,r]=O.useState(t??[]),[o,s]=O.useState(null),[i,a]=O.useState(t&&t.length>0?Pc(t,e):e),[c,l]=O.useState(t===null),d=O.useRef(!1),u=O.useRef(null),f=O.useRef(t===null),h=O.useRef(0),g=O.useRef(new Set),m=O.useRef(0);O.useEffect(()=>{f.current=c},[c]),O.useEffect(()=>{u.current=i},[i]);const b=O.useCallback(E=>{const P=Pc(E,u.current??Tc());return a(I=>I===P?I:P),Un(P),u.current=P,P},[]),w=O.useCallback((E,P)=>{const I=E.filter(D=>!g.current.has(D.sessionId));r(D=>Ef(D)===Ef(I)?D:I),rn(I),P?.reconcileActive&&b(I)},[b]),R=O.useCallback((E,P)=>{const I=g.current.size===0?E:{...E,clientSessions:E.clientSessions.filter(D=>!g.current.has(D.sessionId))};s(I),w(xf(I.clientSessions),P)},[w]),y=O.useCallback(()=>typeof window>"u"?[]:localStorage.getItem(Na)?(localStorage.removeItem(Na),Sf(),Un(null),r([]),a(null),console.info("[session-persist] discarded legacy local session cache"),[]):[],[]),k=O.useCallback(async()=>{if(typeof window>"u")return[];const E=m.current;try{const P=await Tg(),I=xf(P.clientSessions);return E!==m.current?(console.info("[session-inventory] ignored restore snapshot superseded by a local mutation"),I.filter(D=>!g.current.has(D.sessionId))):(R(P,{reconcileActive:!0}),I.length>0?I:y())}catch(P){console.error("Failed to restore sessions from server:",P);try{return y()}catch(I){console.error("Failed to discard legacy local sessions:",I)}}finally{l(!1)}return[]},[R,y]),N=O.useCallback(async E=>{const P=++m.current,I=await Pg(E);return P===m.current&&(R(I.inventory),a(I.session.sessionId),Un(I.session.sessionId)),I},[R]),x=O.useCallback(async(E,P)=>{++m.current,g.current.add(E),g2(E),r(I=>{const D=I.filter(L=>L.sessionId!==E),M=P!=null&&D.some(L=>L.sessionId===P),F=u.current===E?M?P:h2(I,E,L=>L.sessionId):u.current;return a(F),Un(F),rn(D),D});try{await Lg(E)}catch(I){console.error("Failed to remove session from inventory:",I)}},[]),T=O.useCallback(E=>{const P=Date.now();r(I=>{const D=I.map(M=>M.sessionId===E?{...M,lastActivity:P}:M);return rn(D),D})},[]),S=O.useCallback(E=>{a(E),Un(E)},[]),v=O.useCallback(async(E,P)=>{const I=P.trim();if(!I)return;const D=++m.current;r(M=>{const F=M.map(L=>L.sessionId===E?{...L,name:I,customName:!0}:L);return rn(F),F});try{const M=await is(E,{name:I,customName:!0});D===m.current&&R(M)}catch(M){console.error("Failed to rename session in inventory:",M)}},[R]),A=O.useCallback(async E=>{const P=++m.current;r(I=>{const D=I.map(M=>M.sessionId===E?{...M,customName:!1}:M);return rn(D),D});try{const I=await is(E,{customName:!1});P===m.current&&R(I)}catch(I){console.error("Failed to reset session name in inventory:",I)}},[R]),_=O.useCallback(async E=>{const P=++m.current;r(I=>{const D=new Map(I.map($=>[$.sessionId,$])),M=E.map($=>D.get($)).filter($=>$!==void 0),F=new Set(E),L=I.filter($=>!F.has($.sessionId)),U=[...M,...L];return rn(U),U});try{const I=await Ng(E);P===m.current&&R(I)}catch(I){console.error("Failed to reorder sessions in inventory:",I)}},[R]),B=O.useCallback(async()=>{++m.current;for(const E of n)g.current.add(E.sessionId);r([]),s(null),a(null),Un(null),Sf(),typeof window<"u"&&localStorage.removeItem(Na);try{await Bg()}catch(E){console.error("Failed to clear session inventory:",E)}},[n]),C=O.useCallback(async(E,P)=>{const I=++m.current;r(D=>{const M=D.map(F=>F.sessionId===E?{...F,backendSessionId:P}:F);return rn(M),M});try{const D=await is(E,{backendSessionId:P});I===m.current&&R(D)}catch(D){console.error("Failed to update session backend in inventory:",D)}},[R]);return O.useEffect(()=>{d.current||(d.current=!0,k())},[k]),O.useEffect(()=>cm(P=>{if(P.type!=="client-state"||f.current)return;const I=typeof P.seq=="number"?P.seq:null;if(I!==null){if(I<h.current){console.warn("[session-inventory] ignored stale control snapshot",{seq:I,latestSeq:h.current});return}h.current=I}if(P.inventory){R(P.inventory,{reconcileActive:!0});return}const D=pm(P.clientState.sessions||[]);w(D,{reconcileActive:!0})}),[R,w]),{sessions:n,inventory:o,activeSessionId:i,isLoading:c,openSession:N,removeSession:x,updateSessionActivity:T,setActiveSession:S,updateSessionBackendId:C,renameSession:v,resetSessionCustomName:A,reorderSessions:_,clearAllSessions:B,restoreSessions:k}}const w2=256*1024,y2=256*1024,b2=128;function Af(t,e=w2){if(!t)return[];if(t.length<=e)return[t];const n=[];let r=0;for(;r<t.length;){let o=Math.min(r+e,t.length);if(o<t.length){const s=t.lastIndexOf(`
|
|
35
|
-
`,o);s>r&&(o=s+1)}n.push(t.slice(r,o)),r=o}return n}function v2(t,e=y2,n=b2){const r=new Map;let o=0,s=0;for(const i of[...t.keys()]){const a=t.get(i);if(!a||a.length===0){t.delete(i);continue}const c=[];for(;a.length>0;){const l=a[0];if(s>0&&(s>=n||o+l.length>e))break;a.shift(),c.push(l),o+=l.length,s+=1}if(c.length>0&&r.set(i,c),t.delete(i),a.length>0&&t.set(i,a),s>=n||o>=e)break}return r}async function gm(t,e=!1,n="termdock-encrypted-background"){const r=await new Promise((o,s)=>{const i=indexedDB.open(n,1);i.onupgradeneeded=()=>i.result.createObjectStore("state"),i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});try{return await new Promise((o,s)=>{const i=r.transaction("state",e?"readwrite":"readonly"),a=t(i.objectStore("state"));i.oncomplete=()=>o(a.result),i.onabort=i.onerror=()=>s(i.error)})}finally{r.close()}}const S2=t=>gm(e=>e.put(t,t.targetPeerId),!0),x2=t=>gm(e=>e.delete(t),!0),mm="termdock-pwa-notifications-enabled",wm="termdock-pwa-ai-notifications-enabled",ym="termdock-pwa-exit-notifications-enabled",bm="termdock-pwa-notification-alert-style",E2="termdock-notification-claim:",Nc=5e3,A2=1500,Lc="termdock-push-last-sync",kf=360*60*1e3,k2=10080*60*1e3,so=new Map;function Fl(){return nt()?!0:typeof window<"u"&&typeof Notification<"u"&&"serviceWorker"in navigator&&window.isSecureContext}function C2(){if(typeof navigator>"u")return!1;const t=navigator.userAgent;return/iPad|iPhone|iPod/.test(t)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1}function I2(){return typeof window>"u"?!1:!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&navigator.standalone===!0)}function R2(){return nt()?!0:!(!Fl()||C2()&&!I2())}function MR(){return nt()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function Ml(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(mm)==="true"}catch{return!1}}function jR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(mm,String(t))}catch{}}function qs(){if(typeof window>"u")return!0;try{const t=window.localStorage.getItem(wm);return t===null?!0:t==="true"}catch{return!0}}function HR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(wm,String(t))}catch{}}function Bc(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(ym)==="true"}catch{return!1}}function UR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(ym,String(t))}catch{}}function wo(){if(typeof window>"u")return"normal";try{const t=window.localStorage.getItem(bm);if(t==="quiet"||t==="persistent")return t}catch{}return"normal"}function $R(t){if(!(typeof window>"u"))try{window.localStorage.setItem(bm,t)}catch{}}async function qR(){return nt()?"granted":Fl()?Notification.permission==="default"?Notification.requestPermission():Notification.permission:"unsupported"}function T2(){return typeof document>"u"?!0:document.visibilityState==="visible"&&document.hasFocus()}function P2(t){for(const[e,n]of so)t-n>Nc&&so.delete(e)}function N2(t){return t.dedupKey?.trim()?t.dedupKey.trim():t.tag?.trim()?t.tag.trim():[t.data?.sessionId,t.title,t.body].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim()).join("|")}function L2(t){const e=N2(t);if(!e)return!0;const n=Date.now();P2(n);const r=so.get(e)??0;if(n-r<Nc)return!1;try{if(typeof window<"u"&&window.localStorage){const o=`${E2}${e}`,s=Number(window.localStorage.getItem(o)??"0");if(Number.isFinite(s)&&n-s<Nc)return so.set(e,s),!1;Number.isFinite(s)&&s>0&&window.localStorage.removeItem(o),window.localStorage.setItem(o,String(n))}}catch{}return so.set(e,n),!0}async function hi(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const t=await navigator.serviceWorker.getRegistration()??null;return t?.active?t:await Promise.race([navigator.serviceWorker.ready,new Promise(n=>{window.setTimeout(()=>n(null),A2)})])??t}catch{return null}}function B2(t){const e="=".repeat((4-t.length%4)%4),n=(t+e).replace(/-/g,"+").replace(/_/g,"/"),r=window.atob(n),o=new Uint8Array(new ArrayBuffer(r.length));for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return o}async function jl(t,e){const n=await fetch("/api/csrf-token");if(!n.ok)throw new Error("Unable to get notification security token");const{csrfToken:r}=await n.json();return fetch(`/api/notifications/${t}`,{method:"POST",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":r},body:JSON.stringify(e)})}async function _2(t=!1,e=!1){if(nt())return!0;if(!Ml()||!R2()||Notification.permission!=="granted")return!1;const n=await hi();if(!n?.pushManager)return!1;try{const r=await fetch("/api/notifications/status");if(!r.ok)return!1;const o=await r.json();let s=await n.pushManager.getSubscription();const i=!!(s?.expirationTime&&s.expirationTime-Date.now()<k2);if(!s)try{s=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:B2(o.publicKey)})}catch(d){return console.warn(`[PWA notifications] Push subscription missing; re-subscribe failed${e?" (user gesture)":""}:`,d),!1}const a=Number(window.localStorage.getItem(Lc)??"0"),c=!o.subscription||o.subscription.endpoint!==s.endpoint||Date.now()-(o.subscription.updatedAt??0)>=kf;if(t||c||Date.now()-a>=kf||i){if(!(await jl("subscribe",{subscription:s.toJSON(),aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language})).ok)return!1;window.localStorage.setItem(Lc,String(Date.now()))}const l=re();return l&&await S2({targetPeerId:l.targetPeerId,addresses:vr(l),routes:Jt(l),publicKey:o.publicKey,preferences:{aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language}}),!0}catch(r){return console.warn("[PWA notifications] Push subscription sync failed:",r),!1}}async function KR(){if(nt())return;const e=await(await hi())?.pushManager?.getSubscription();try{await jl("unsubscribe",{endpoint:e?.endpoint})}finally{const n=re();n&&await x2(n.targetPeerId),await e?.unsubscribe();try{window.localStorage.removeItem(Lc)}catch{}}}async function zR(){if(nt()||!Ml())return;(await jl("preferences",{aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language})).status===404&&await _2(!0)}async function WR(){if(!nt())try{const t=navigator;typeof t.clearAppBadge=="function"&&await t.clearAppBadge()}catch{}}async function GR(t){if(!nt())try{const e=await hi();if(!e||typeof e.getNotifications!="function")return;const n=`agent:${t}`,r=await e.getNotifications({tag:n});for(const s of r)s.close();const o=navigator;if(typeof o.setAppBadge=="function"){const s=await e.getNotifications();await o.setAppBadge(s.length)}}catch{}}async function La(t){if(!Ml()||!Fl())return!1;if(t.requireHidden!==!1&&T2())return!0;const e=nt();if(e){const s=t.alertStyle??wo(),i=await e.showNotification({title:t.title,body:t.body,tag:t.tag,sessionId:t.data?.sessionId,silent:s==="quiet",persistent:s==="persistent"});return e.notificationDeliveryConfirmation===!0&&i}if(Notification.permission!=="granted")return!1;const n=await hi();if(t.deferToPush&&await n?.pushManager?.getSubscription())return!0;if(t.requireHidden!==!1){if(await n?.pushManager?.getSubscription())return!0}if(!L2(t))return!0;const r=t.alertStyle??wo(),o={body:t.body,tag:t.tag,icon:"/pwa-192x192.png",badge:"/maskable-icon-512x512.png",requireInteraction:r==="persistent",renotify:r==="persistent"?!!t.tag:!1,silent:r==="quiet",vibrate:r==="quiet"?[]:[80,40,80],data:{url:t.data?.url??"/",sessionId:t.data?.sessionId}};try{if(n&&typeof n.showNotification=="function")return await n.showNotification(t.title,o),!0;const s=new Notification(t.title,o);return s.onclick=()=>{window.focus(),t.data?.url&&window.location.href!==t.data.url&&window.location.assign(t.data.url),s.close()},!0}catch(s){if(s instanceof DOMException&&s.name==="NotSupportedError"&&o.renotify)try{const i={...o,renotify:!1};return n&&typeof n.showNotification=="function"?await n.showNotification(t.title,i):new Notification(t.title,i),!0}catch(i){return console.warn("[PWA notifications] Failed to show notification (renotify fallback):",i),!1}return console.warn("[PWA notifications] Failed to show notification:",s),!1}}function O2(){try{return localStorage.getItem("termdock:locale")||"en"}catch{return"en"}}function D2(t,e){return t==="zh"?{waitingTitle:`${e} 需要你的处理`,waitingBody:`${e} 需要你的处理。`,doneTitle:`${e} 已完成`,doneBody:`${e} 已完成,点按查看结果。`,exitedTitle:`${e} 已退出`,exitedBody:`${e} 已退出,点按查看结果。`}:{waitingTitle:`${e} needs your input`,waitingBody:`${e} is waiting for your input.`,doneTitle:`${e} finished`,doneBody:"Tap to see the result.",exitedTitle:`${e} exited`,exitedBody:"Tap to see the result."}}const Cf=1e6;function Kt(t){return{sessionId:t,directory:"",terminalSessionId:null,mode:"shell",tmuxSessionName:null,activeProgram:null,activeProgramRaw:null,activeProgramSource:null,cwd:null,inCopyMode:!1,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNativeSessionId:null,agentResumeRecovered:!1,agentRich:!1,agentActivity:0,agentCwd:null,agentNeedsReview:!1,shellTitle:null,promptState:null,shellExitCode:null,tuiProgress:null,gitStatus:null,bufferChunks:[],bufferLength:0,lastOutputAt:null,updatedAt:Date.now()}}const pi="termdock-shell-titles-v1";function gi(){if(typeof window>"u")return{};try{const t=localStorage.getItem(pi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function F2(t){return gi()[t]??null}function M2(t,e){if(!(typeof window>"u"))try{const n=gi();e?n[t]=e:delete n[t],localStorage.setItem(pi,JSON.stringify(n))}catch{}}function j2(t){if(!(typeof window>"u"))try{const e=gi();delete e[t],localStorage.setItem(pi,JSON.stringify(e))}catch{}}const mi="termdock-agent-cache-v1";function Hl(){if(typeof window>"u")return{};try{const t=localStorage.getItem(mi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function H2(t,e){if(!(typeof window>"u"))try{const n=Hl();e?n[t]=e:delete n[t],localStorage.setItem(mi,JSON.stringify(n))}catch{}}function U2(t){if(!(typeof window>"u"))try{const e=Hl();delete e[t],localStorage.setItem(mi,JSON.stringify(e))}catch{}}function $2(){if(!(typeof window>"u"))try{localStorage.removeItem(mi)}catch{}}function VR(t){return Hl()[t]??null}function q2(){if(!(typeof window>"u"))try{localStorage.removeItem(pi)}catch{}}const Ba=di((t,e)=>{const n={pendingChunksBySession:new Map,activitySessionIds:new Set,batchFlushRafRef:null},r=(i,a)=>{const c=new Map;return t(l=>{const d=new Map(l.sessions);let u=l.nextChunkId;const f=Date.now();for(const[h,g]of i){const m=d.get(h)??Kt(h);let b=m.bufferChunks.length>0?[...m.bufferChunks]:[],w=m.bufferLength;for(const R of g){const y=u++;b.push({id:y,data:R}),c.set(h,y),w+=R.length}for(;w>Cf&&b.length>1;){const R=b.shift();if(!R)break;w-=R.data.length}d.set(h,{...m,bufferChunks:b,bufferLength:w,lastOutputAt:a.has(h)?f:m.lastOutputAt,updatedAt:f})}return{sessions:d,nextChunkId:u}}),c},o=()=>{if(n.batchFlushRafRef===null){if(typeof window>"u"){s();return}n.batchFlushRafRef=window.requestAnimationFrame(()=>{n.batchFlushRafRef=null,s()})}},s=()=>{if(n.pendingChunksBySession.size===0)return;const i=v2(n.pendingChunksBySession),a=new Set([...i.keys()].filter(c=>n.activitySessionIds.has(c)));for(const c of i.keys())n.pendingChunksBySession.has(c)||n.activitySessionIds.delete(c);r(i,a),n.pendingChunksBySession.size>0&&o()};return{sessions:new Map,nextChunkId:1,activeSessionId:null,getTerminalSession:i=>e().sessions.get(i),setActiveSessionId:i=>{if(t({activeSessionId:i}),i){const a=e().sessions.get(i);if(a?.agentNeedsReview){const c=new Map(e().sessions);c.set(i,{...a,agentNeedsReview:!1,updatedAt:Date.now()}),t({sessions:c}),a.terminalSessionId&&wc(a.terminalSessionId)}}},setTerminalSession:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i),f=!d||d.terminalSessionId!==a.sessionId?Kt(i):d??Kt(i),h=a.history??d?.history??[];return l.set(i,{...f,terminalSessionId:a.sessionId,mode:a.mode??f.mode,tmuxSessionName:a.tmuxSessionName??f.tmuxSessionName,activeProgram:a.activeProgram??d?.activeProgram??f.activeProgram,activeProgramRaw:a.activeProgramRaw??d?.activeProgramRaw??f.activeProgramRaw,activeProgramSource:a.activeProgramSource??d?.activeProgramSource??f.activeProgramSource,cwd:a.cwd??d?.cwd??f.cwd,agentResumeRecovered:d?.agentResumeRecovered??f.agentResumeRecovered,shellTitle:d?.shellTitle??gi()[i]??f.shellTitle,sessionId:i,isConnecting:!1,history:h,updatedAt:Date.now()}),{sessions:l}})},setSessionHistory:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,history:a,updatedAt:Date.now()}),{sessions:l}})},setSessionActiveProgram:(i,a,c=null,l=null)=>{t(d=>{const u=new Map(d.sessions),f=u.get(i)??Kt(i);return u.set(i,{...f,activeProgram:a,activeProgramRaw:l,activeProgramSource:c,updatedAt:Date.now()}),{sessions:u}})},setSessionCwd:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,cwd:a,updatedAt:Date.now()}),{sessions:l}})},setSessionShellTitle:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l||l.shellTitle===a)return c;const d=new Map(c.sessions);return d.set(i,{...l,shellTitle:a,updatedAt:Date.now()}),{sessions:d}}),M2(i,a)},setSessionPromptState:(i,a,c)=>{t(l=>{const d=l.sessions.get(i);if(!d||d.promptState===a)return l;const u=new Map(l.sessions);return u.set(i,{...d,promptState:a,shellExitCode:c??d.shellExitCode,updatedAt:Date.now()}),{sessions:u}})},setSessionTuiProgress:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l)return c;const d=a?.state==="remove"?null:a;if(l.tuiProgress?.state===d?.state&&l.tuiProgress?.progress===d?.progress)return c;const u=new Map(c.sessions);return u.set(i,{...l,tuiProgress:d,updatedAt:Date.now()}),{sessions:u}})},setSessionGitStatus:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||JSON.stringify(d.gitStatus)===JSON.stringify(a)?c:(l.set(i,{...d,gitStatus:a,updatedAt:Date.now()}),{sessions:l})})},setSessionCopyMode:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||d.inCopyMode===a?c:(l.set(i,{...d,inCopyMode:a,updatedAt:Date.now()}),{sessions:l})})},setSessionAgentStatus:(i,a)=>{const c=e(),l=c.sessions.get(i);if(!l)return;const d=a.agentStatus??null,u=d&&d!=="idle"?a.agentIndicator??l.agentIndicator??null:null,f=d&&d!=="idle"?a.agentStatusDetail??null:null,h=a.agent!==void 0?a.agent:l.agent,g=a.agentMessage!==void 0?a.agentMessage:d?l.agentMessage:null,m=a.agentNativeSessionId!==void 0?a.agentNativeSessionId:l.agentNativeSessionId,b=a.agentResumeRecovered!==void 0?a.agentResumeRecovered:l.agentResumeRecovered,w=a.agentRich??l.agentRich,R=a.agentActivity??l.agentActivity,y=a.agentCwd!==void 0?a.agentCwd:l.agentCwd,k=c.activeSessionId!==i,N=l.agentStatus==="working"||l.agentStatus==="waiting"||l.agentStatus==="done",x=a.reviewed===!1||a.reviewed===null&&d===null&&N&&k;if(l.agentStatus===d&&l.agentIndicator===u&&l.agentStatusDetail===f&&l.agent===h&&l.agentMessage===g&&l.agentNativeSessionId===m&&l.agentResumeRecovered===b&&l.agentRich===w&&l.agentActivity===R&&l.agentCwd===y&&l.agentNeedsReview===x)return;const T=new Map(c.sessions);if(T.set(i,{...l,agentStatus:d,agentIndicator:u,agentStatusDetail:f,agent:h,agentMessage:g,agentNativeSessionId:m,agentResumeRecovered:b,agentRich:w,agentActivity:R,agentCwd:y,agentNeedsReview:x,updatedAt:Date.now()}),t({sessions:T}),h&&H2(i,h),!qs())return;const S=h?.displayName??l.agent?.displayName??"Agent",v=O2(),A=D2(v,S);if(d==="waiting"&&l.agentStatus!=="waiting"&&k){La({title:A.waitingTitle,body:g??A.waitingBody,tag:`agent:${i}`,dedupKey:`agent:${i}:waiting:${R}`,data:{url:"/",sessionId:i},deferToPush:!0});return}if(d==="done"&&l.agentStatus!=="done"&&k){La({title:A.doneTitle,body:A.doneBody,tag:`agent:${i}`,dedupKey:`agent:${i}:done:${R}`,data:{url:"/",sessionId:i},deferToPush:!0});return}d===null&&(l.agentStatus==="working"||l.agentStatus==="waiting")&&k&&La({title:A.exitedTitle,body:A.exitedBody,tag:`agent:${i}`,dedupKey:`agent:${i}:exited:${R}`,data:{url:"/",sessionId:i},deferToPush:!0})},setAgentResumeRecovered:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return d.agentResumeRecovered===a?c:(l.set(i,{...d,agentResumeRecovered:a,updatedAt:Date.now()}),{sessions:l})})},clearAgentNeedsReview:i=>{const a=e().sessions.get(i);a?.agentNeedsReview&&(t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||!d.agentNeedsReview?c:(l.set(i,{...d,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:l})}),a.terminalSessionId&&wc(a.terminalSessionId))},setConnecting:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,isConnecting:a,updatedAt:Date.now()}),{sessions:l}})},appendToBuffer:(i,a,c)=>{if(!a)return;let l=n.pendingChunksBySession.get(i);l||(l=[],n.pendingChunksBySession.set(i,l)),l.push(...Af(a)),c?.markActivity!==!1&&n.activitySessionIds.add(i),o()},hasPendingBufferWrites:i=>(n.pendingChunksBySession.get(i)?.length??0)>0,flushPendingBufferWrites:i=>{const a=n.pendingChunksBySession.get(i);if(!a?.length)return e().sessions.get(i)?.bufferChunks.at(-1)?.id??null;n.pendingChunksBySession.delete(i);const c=n.activitySessionIds.delete(i);return n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),r(new Map([[i,a]]),c?new Set([i]):new Set).get(i)??null},replaceBuffer:(i,a)=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null);let c=null;return t(l=>{const d=new Map(l.sessions),u=d.get(i);if(!u)return l;if(!a||a.length===0)return d.set(i,{...u,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:d};let f=l.nextChunkId;const h=[];let g=0;for(const m of a)if(m)for(const b of Af(m)){const w=f++;h.push({id:w,data:b}),c=w,g+=b.length}for(;g>Cf&&h.length>1;){const m=h.shift();if(!m)break;g-=m.data.length}return d.set(i,{...u,bufferChunks:h,bufferLength:g,updatedAt:Date.now()}),{sessions:d,nextChunkId:f}}),c},clearTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l&&c.set(i,{...l,terminalSessionId:null,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:c}})},clearBuffer:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l?(c.set(i,{...l,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:c}):a})},removeTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),t(a=>{const c=new Map(a.sessions);return c.delete(i),{sessions:c}}),j2(i),U2(i)},clearAllTerminalSessions:()=>{n.pendingChunksBySession.clear(),n.activitySessionIds.clear(),n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t({sessions:new Map,nextChunkId:1}),q2(),$2()}}}),_c="termdock:session-notice";function K2(){return O.useEffect(()=>{const t=()=>Pa.getState().view(!document.hidden&&ts()?Ba.getState().activeSessionId:null);t();const e=Ba.subscribe((n,r)=>{n.activeSessionId!==r.activeSessionId&&t()});return document.addEventListener("visibilitychange",t),window.addEventListener(po,t),()=>{e(),document.removeEventListener("visibilitychange",t),window.removeEventListener(po,t),Pa.getState().view(null)}},[]),O.useEffect(()=>cm(t=>{if(t.type!=="session-notice")return;Pa.getState().receive(t.sessionId,t.id);const e=re()?.targetPeerId,n=gt(),r=window.parent,o=m2().sessions.find(u=>u.sessionId===t.sessionId),s=Ba.getState().sessions.get(t.sessionId),i=s?.shellTitle??F2(t.sessionId),a=i===s?.cwd||i===Gn(s?.cwd??null)?null:i,c=d2(o??{name:t.sessionName},s?.activeProgram??null,null,void 0,a,s?.promptState??null),l={...t,sessionName:c,key:`${e??"local"}:${t.id}`,open:()=>e&&n?n.focusSession(e,t.sessionId):(window.dispatchEvent(new CustomEvent("termdock:focus-session",{detail:t.sessionId})),!0)},d=r.document.createEvent("CustomEvent");d.initCustomEvent(_c,!1,!1,l),r.dispatchEvent(d)}),[]),null}function z2(){const{locale:t}=fi(),e=t==="zh",[n,r]=O.useState([]);O.useEffect(()=>{const i=a=>{const c=a.detail;r(l=>l.some(d=>d.key===c.key)?l:[...l,c])};return window.addEventListener(_c,i),()=>window.removeEventListener(_c,i)},[]);const o=O.useCallback(i=>{r(a=>a.filter(c=>c.key!==i))},[]),s=n[0];return s?Mc.createPortal(p.jsx(W2,{notice:s,remaining:n.length-1,chinese:e,onDismiss:o},s.key),document.body):null}function W2({notice:t,remaining:e,chinese:n,onDismiss:r}){const[o,s]=O.useState(!1);return p.jsxs("section",{"aria-label":n?"关键进展提醒":"Progress reminder",className:"fixed left-3 right-3 top-[calc(var(--safe-top-inset,0px)+0.75rem)] z-toast overflow-hidden rounded-xl bg-surface text-foreground shadow-lg ring-1 ring-inset ring-border/15 animate-fade-in md:left-auto md:right-4 md:w-[360px]",children:[p.jsxs("button",{type:"button","aria-label":n?"查看 Session":"Open session",className:"group flex w-full items-start gap-2.5 p-3.5 pr-11 text-left transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>{t.open()?r(t.key):s(!0)},children:[p.jsx(tg,{size:16,className:"mt-0.5 shrink-0 text-primary","aria-hidden":"true"}),p.jsxs("span",{className:"min-w-0 flex-1",role:"status","aria-live":"polite","aria-atomic":"true",children:[p.jsxs("span",{className:"flex items-center gap-2",children:[p.jsx("span",{className:"min-w-0 flex-1 truncate text-[12px] font-medium",title:t.sessionName,children:t.sessionName}),p.jsx(GE,{size:13,className:"shrink-0 text-muted-foreground/60 transition-colors group-hover:text-primary","aria-hidden":"true"})]}),t.title&&p.jsx("span",{className:"mt-1 block truncate text-[11px] text-muted-foreground",children:t.title}),p.jsx("span",{className:"mt-1.5 line-clamp-3 whitespace-pre-wrap break-words text-[13px] leading-relaxed text-foreground/85",title:t.message,children:t.message}),e>0&&p.jsx("span",{className:"mt-2 block text-[10px] text-muted-foreground",children:n?`还有 ${e} 条`:`${e} more`}),o&&p.jsx("span",{role:"alert",className:"mt-2 block text-xs text-warning",children:n?"暂时无法打开该服务,请重试。":"Unable to open the service. Please retry."})]})]}),p.jsx("button",{type:"button","aria-label":n?"关闭提醒":"Dismiss reminder",className:"absolute right-0 top-0 flex h-11 w-11 items-center justify-center rounded-tr-xl text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>r(t.key),children:p.jsx(ag,{size:14})})]})}const If=5*6e4;let Oc,vm=!1,Sm=!1,Rf=!1;const Dc=new Set;function Tf(){vm=!0,Dc.forEach(t=>t())}function G2(){return O.useSyncExternalStore(t=>(Dc.add(t),()=>{Dc.delete(t)}),()=>vm,()=>!1)}function V2(){window.dispatchEvent(new Event("termdock:before-update")),Sm=!0,Oc?.waiting?Oc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function X2(t,e){let n=t;return()=>{if(!n){n=!0;return}e()}}function Y2(){if(Rf||typeof window>"u"||!("serviceWorker"in navigator))return;Rf=!0,navigator.serviceWorker.addEventListener("controllerchange",X2(!!navigator.serviceWorker.controller,()=>{Sm?window.location.reload():Tf()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Oc=e;const n=()=>{e.waiting&&Tf()},r=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&n()})};e.addEventListener("updatefound",r),r(),n();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<If||(o=Date.now(),e.update().then(n).catch(()=>{}))};s(),window.setInterval(s,If),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function Z2(){const t=G2(),[e,n]=O.useState(!1),{locale:r}=fi();if(!t||e)return null;const o=r==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:V2,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>n(!0),children:o?"稍后":"Later"})]})}function xm(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const Em=O.createContext(void 0);function XR({children:t}){const e=O.useContext(Em),n=e===void 0?typeof document>"u"?null:document.body:e;return n?Mc.createPortal(t,n):null}const J2={activeKey:"root",items:[]},Q2=()=>()=>{},eR=()=>J2;function tR({host:t,item:e,visible:n,active:r}){const o=O.useRef(null);return O.useEffect(()=>{o.current?.toggleAttribute("inert",!r)},[r]),O.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${Gp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:n?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function nR({children:t}){const e=window.parent===window?gt():void 0,n=O.useSyncExternalStore(e?.subscribe||Q2,e?.snapshot||eR),[r,o]=O.useState(null),[s,i]=O.useState(()=>n.activeKey==="root"?"root":null),[a,c]=O.useState(),[l,d]=O.useState(!1),[u,f]=O.useState(),h=n.items.find(y=>y.key===n.activeKey),g=h?.rendered||a===n.activeKey?n.activeKey:s,m=g!==n.activeKey,b=m&&s===null;O.useLayoutEffect(()=>{if(!m||b){f(void 0);return}const y=()=>{const k=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(_=>_.dataset.workspaceKey===s),S=(s==="root"?r:k?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!S||S.width===0||S.right<=0){f(void 0);return}const v=k?.getBoundingClientRect(),A=S.top+(v?.top??0)>=160;f({left:S.left+(v?.left??0)+12,top:(A?S.top-8:S.bottom+8)+(v?.top??0),width:Math.max(0,S.width-24),transform:A?"translateY(-100%)":"none"})};return y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[m,b,s,r]),O.useLayoutEffect(()=>{e?.present(g),m||i(g),r?.toggleAttribute("inert",g!=="root"||m)},[e,r,g,m]),O.useEffect(()=>{if(d(!1),!m)return;const y=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(y)},[n.activeKey,m]),O.useEffect(()=>{c(void 0)},[n.activeKey]);const w=n.items.find(y=>y.key===s),R=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":b?"正在恢复服务…":"正在切换服务…";return O.useEffect(()=>{if(!e)return;const y=()=>{try{const k=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(k==="dark"||k==="light")&&(document.documentElement.dataset.theme=k,xm(k))}catch{}};return window.addEventListener("storage",y),()=>window.removeEventListener("storage",y)},[e]),O.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const y=x=>{if(x.source!==navigator.serviceWorker.controller)return;const T=x.data;T?.type==="termdock:focus-session"&&typeof T.targetPeerId=="string"&&typeof T.sessionId=="string"&&e.focusSession(T.targetPeerId,T.sessionId)&&(x.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),x.stopImmediatePropagation())},k=async()=>{if("caches"in window)try{const x=await caches.open("termdock-notification-target-v1"),T=await x.match("/__termdock-notification-target");if(!T)return;const S=await T.json();typeof S.targetPeerId=="string"&&typeof S.sessionId=="string"&&Date.now()-S.clickedAt<3e4&&e.focusSession(S.targetPeerId,S.sessionId)&&await x.delete("/__termdock-notification-target")}catch{}},N=()=>{document.hidden||k()};return navigator.serviceWorker.addEventListener("message",y),document.addEventListener("visibilitychange",N),k(),()=>{navigator.serviceWorker.removeEventListener("message",y),document.removeEventListener("visibilitychange",N)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(Em.Provider,{value:r,children:t})}),n.items.filter(y=>y.key!=="root").map(y=>p.jsx(tR,{host:e,item:y,visible:g===y.key,active:!m&&g===y.key},y.key)),b&&p.jsx("div",{className:"termdock-boot z-modal-panel",role:"status","aria-live":"polite",children:l||h?.phase==="offline"||h?.phase==="reconnecting"?p.jsxs("div",{className:"flex max-w-xs flex-col items-center gap-3 text-center",children:[p.jsx(je,{size:16,className:"animate-spin motion-reduce:animate-none","aria-hidden":"true"}),p.jsx("div",{className:"max-w-full truncate text-sm",children:h?.service?.label||"Termdock"}),p.jsx("div",{className:"text-xs text-muted-foreground",children:R}),p.jsx("button",{type:"button",className:"min-h-11 rounded-lg bg-surface-2 px-4 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>c(n.activeKey),children:"查看连接页面"})]}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"termdock-boot-spinner","aria-hidden":"true"}),p.jsx("span",{children:"Loading Termdock"})]})}),m&&!b&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:y=>{if(y.key==="Escape"&&w?.service&&(y.preventDefault(),e.activate(w.service)),y.key==="Tab"){const k=Array.from(y.currentTarget.querySelectorAll("button")),N=k[0],x=k[k.length-1];y.shiftKey&&document.activeElement===N?(y.preventDefault(),x?.focus()):!y.shiftKey&&document.activeElement===x&&(y.preventDefault(),N?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(je,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:R})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(n.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const rR=O.lazy(()=>Qt(()=>import("./App--r7RuswE.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8]))),oR=O.lazy(()=>Qt(()=>import("./DagPlayground-DqCvsG34.js"),__vite__mapDeps([9,10,2,1,11,7,3])).then(t=>({default:t.DagPlayground}))),sR=O.lazy(()=>Qt(()=>import("./DiffLab-6zvF9Nax.js"),__vite__mapDeps([12,2,1,13,8,14,3])).then(t=>({default:t.DiffLab}))),iR=O.lazy(()=>Qt(()=>import("./DiffReviewLab-BUAtsrSJ.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,8,14,3])).then(t=>({default:t.DiffReviewLab})));t2();CE();BE();window.parent===window&&Y2();const Xr=re();Xr&&Qt(()=>import("./App--r7RuswE.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&gE(Xr?{...Xr,id:Xr.targetPeerId,label:Xr.serviceName||location.host}:void 0);try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,xm(t))}catch{}DE.createRoot(document.getElementById("root")).render(p.jsx(Ge.StrictMode,{children:p.jsxs(XC,{children:[window.parent===window&&p.jsxs(p.Fragment,{children:[p.jsx(Z2,{}),p.jsx(z2,{})]}),p.jsx(qI,{children:p.jsx(O.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(oR,{}):t.get("diff-review-lab")==="1"?p.jsx(iR,{}):t.get("diff-lab")==="1"?p.jsx(sR,{}):p.jsx(nR,{children:p.jsxs(jI,{children:[p.jsx(K2,{}),p.jsx(rR,{})]})})})()})})]})}));export{kA as $,Cl as A,tg as B,Fs as C,lm as D,Sg as E,oE as F,Ck as G,Pv as H,AA as I,sk as J,IR as K,je as L,dE as M,pn as N,SC as O,aI as P,vC as Q,WR as R,li as S,u1 as T,rk as U,ZI as V,po as W,ag as X,yl as Y,hA as Z,Qt as _,eg as a,xC as a$,WA as a0,yR as a1,di as a2,Ak as a3,VI as a4,Ce as a5,zA as a6,Mi as a7,Tk as a8,aC as a9,Gn as aA,Wk as aB,fC as aC,kC as aD,tC as aE,EC as aF,pC as aG,lC as aH,Dk as aI,MR as aJ,yC as aK,Us as aL,IA as aM,l2 as aN,d2 as aO,OR as aP,un as aQ,qs as aR,Bc as aS,wo as aT,Ml as aU,nt as aV,EA as aW,uA as aX,gk as aY,ck as aZ,hk as a_,_R as aa,GR as ab,RA as ac,uk as ad,Rk as ae,iC as af,CA as ag,I1 as ah,bg as ai,TA as aj,oI as ak,bR as al,LR as am,ik as an,it as ao,vk as ap,bk as aq,Ek as ar,KA as as,bC as at,mC as au,VR as av,F2 as aw,gC as ax,wC as ay,mk as az,zE as b,Pk as b$,Fg as b0,gt as b1,Ta as b2,Jh as b3,yp as b4,oC as b5,Sk as b6,kk as b7,Dg as b8,zk as b9,m2 as bA,rC as bB,eC as bC,nC as bD,sC as bE,PR as bF,TR as bG,xR as bH,XA as bI,PA as bJ,vR as bK,fc as bL,NC as bM,Bk as bN,jC as bO,BR as bP,Fk as bQ,_k as bR,pk as bS,$n as bT,qR as bU,Mk as bV,Ok as bW,tk as bX,RR as bY,ok as bZ,dk as b_,Gk as ba,Hk as bb,Kk as bc,$k as bd,R2 as be,Fl as bf,ts as bg,p as bh,wR as bi,lk as bj,IC as bk,Nk as bl,_C as bm,HC as bn,Yk as bo,ak as bp,yk as bq,DC as br,f2 as bs,dC as bt,wg as bu,Pg as bv,h2 as bw,Lk as bx,VA as by,dt as bz,ng as c,BC as c0,pR as c1,k1 as c2,TC as c3,AC as c4,RC as c5,OC as c6,re as c7,Zk as c8,$C as c9,_2 as cA,xm as cB,hR as cC,xk as cD,KR as cE,Ik as cF,wk as cG,is as cH,st as cI,cC as cJ,lg as cK,fi as cL,AR as cM,Pa as cN,FR as cO,xe as cP,Ba as cQ,NR as cR,we as cS,Jk as cT,ci as cU,Ke as cV,kR as cW,ER as cX,Zp as ca,UC as cb,ek as cc,ZA as cd,GA as ce,QA as cf,nk as cg,PC as ch,MC as ci,DR as cj,HR as ck,UR as cl,$R as cm,jR as cn,Rg as co,qA as cp,ji as cq,CR as cr,La as cs,FC as ct,cm as cu,LC as cv,SR as cw,YA as cx,gR as cy,zR as cz,xn as d,QE as e,rg as f,og as g,qI as h,vg as i,i1 as j,sg as k,nI as l,ig as m,Se as n,XR as o,JA as p,il as q,Bt as r,CC as s,mR as t,oA as u,u2 as v,Vk as w,qk as x,al as y,Qk as z};
|
|
35
|
+
`,o);s>r&&(o=s+1)}n.push(t.slice(r,o)),r=o}return n}function v2(t,e=y2,n=b2){const r=new Map;let o=0,s=0;for(const i of[...t.keys()]){const a=t.get(i);if(!a||a.length===0){t.delete(i);continue}const c=[];for(;a.length>0;){const l=a[0];if(s>0&&(s>=n||o+l.length>e))break;a.shift(),c.push(l),o+=l.length,s+=1}if(c.length>0&&r.set(i,c),t.delete(i),a.length>0&&t.set(i,a),s>=n||o>=e)break}return r}async function gm(t,e=!1,n="termdock-encrypted-background"){const r=await new Promise((o,s)=>{const i=indexedDB.open(n,1);i.onupgradeneeded=()=>i.result.createObjectStore("state"),i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});try{return await new Promise((o,s)=>{const i=r.transaction("state",e?"readwrite":"readonly"),a=t(i.objectStore("state"));i.oncomplete=()=>o(a.result),i.onabort=i.onerror=()=>s(i.error)})}finally{r.close()}}const S2=t=>gm(e=>e.put(t,t.targetPeerId),!0),x2=t=>gm(e=>e.delete(t),!0),mm="termdock-pwa-notifications-enabled",wm="termdock-pwa-ai-notifications-enabled",ym="termdock-pwa-exit-notifications-enabled",bm="termdock-pwa-notification-alert-style",E2="termdock-notification-claim:",Nc=5e3,A2=1500,Lc="termdock-push-last-sync",kf=360*60*1e3,k2=10080*60*1e3,so=new Map;function Fl(){return nt()?!0:typeof window<"u"&&typeof Notification<"u"&&"serviceWorker"in navigator&&window.isSecureContext}function C2(){if(typeof navigator>"u")return!1;const t=navigator.userAgent;return/iPad|iPhone|iPod/.test(t)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1}function I2(){return typeof window>"u"?!1:!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&navigator.standalone===!0)}function R2(){return nt()?!0:!(!Fl()||C2()&&!I2())}function MR(){return nt()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function Ml(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(mm)==="true"}catch{return!1}}function jR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(mm,String(t))}catch{}}function qs(){if(typeof window>"u")return!0;try{const t=window.localStorage.getItem(wm);return t===null?!0:t==="true"}catch{return!0}}function HR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(wm,String(t))}catch{}}function Bc(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(ym)==="true"}catch{return!1}}function UR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(ym,String(t))}catch{}}function wo(){if(typeof window>"u")return"normal";try{const t=window.localStorage.getItem(bm);if(t==="quiet"||t==="persistent")return t}catch{}return"normal"}function $R(t){if(!(typeof window>"u"))try{window.localStorage.setItem(bm,t)}catch{}}async function qR(){return nt()?"granted":Fl()?Notification.permission==="default"?Notification.requestPermission():Notification.permission:"unsupported"}function T2(){return typeof document>"u"?!0:document.visibilityState==="visible"&&document.hasFocus()}function P2(t){for(const[e,n]of so)t-n>Nc&&so.delete(e)}function N2(t){return t.dedupKey?.trim()?t.dedupKey.trim():t.tag?.trim()?t.tag.trim():[t.data?.sessionId,t.title,t.body].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim()).join("|")}function L2(t){const e=N2(t);if(!e)return!0;const n=Date.now();P2(n);const r=so.get(e)??0;if(n-r<Nc)return!1;try{if(typeof window<"u"&&window.localStorage){const o=`${E2}${e}`,s=Number(window.localStorage.getItem(o)??"0");if(Number.isFinite(s)&&n-s<Nc)return so.set(e,s),!1;Number.isFinite(s)&&s>0&&window.localStorage.removeItem(o),window.localStorage.setItem(o,String(n))}}catch{}return so.set(e,n),!0}async function hi(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const t=await navigator.serviceWorker.getRegistration()??null;return t?.active?t:await Promise.race([navigator.serviceWorker.ready,new Promise(n=>{window.setTimeout(()=>n(null),A2)})])??t}catch{return null}}function B2(t){const e="=".repeat((4-t.length%4)%4),n=(t+e).replace(/-/g,"+").replace(/_/g,"/"),r=window.atob(n),o=new Uint8Array(new ArrayBuffer(r.length));for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return o}async function jl(t,e){const n=await fetch("/api/csrf-token");if(!n.ok)throw new Error("Unable to get notification security token");const{csrfToken:r}=await n.json();return fetch(`/api/notifications/${t}`,{method:"POST",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":r},body:JSON.stringify(e)})}async function _2(t=!1,e=!1){if(nt())return!0;if(!Ml()||!R2()||Notification.permission!=="granted")return!1;const n=await hi();if(!n?.pushManager)return!1;try{const r=await fetch("/api/notifications/status");if(!r.ok)return!1;const o=await r.json();let s=await n.pushManager.getSubscription();const i=!!(s?.expirationTime&&s.expirationTime-Date.now()<k2);if(!s)try{s=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:B2(o.publicKey)})}catch(d){return console.warn(`[PWA notifications] Push subscription missing; re-subscribe failed${e?" (user gesture)":""}:`,d),!1}const a=Number(window.localStorage.getItem(Lc)??"0"),c=!o.subscription||o.subscription.endpoint!==s.endpoint||Date.now()-(o.subscription.updatedAt??0)>=kf;if(t||c||Date.now()-a>=kf||i){if(!(await jl("subscribe",{subscription:s.toJSON(),aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language})).ok)return!1;window.localStorage.setItem(Lc,String(Date.now()))}const l=re();return l&&await S2({targetPeerId:l.targetPeerId,addresses:vr(l),routes:Jt(l),publicKey:o.publicKey,preferences:{aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language}}),!0}catch(r){return console.warn("[PWA notifications] Push subscription sync failed:",r),!1}}async function KR(){if(nt())return;const e=await(await hi())?.pushManager?.getSubscription();try{await jl("unsubscribe",{endpoint:e?.endpoint})}finally{const n=re();n&&await x2(n.targetPeerId),await e?.unsubscribe();try{window.localStorage.removeItem(Lc)}catch{}}}async function zR(){if(nt()||!Ml())return;(await jl("preferences",{aiEnabled:qs(),exitEnabled:Bc(),alertStyle:wo(),locale:navigator.language})).status===404&&await _2(!0)}async function WR(){if(!nt())try{const t=navigator;typeof t.clearAppBadge=="function"&&await t.clearAppBadge()}catch{}}async function GR(t){if(!nt())try{const e=await hi();if(!e||typeof e.getNotifications!="function")return;const n=`agent:${t}`,r=await e.getNotifications({tag:n});for(const s of r)s.close();const o=navigator;if(typeof o.setAppBadge=="function"){const s=await e.getNotifications();await o.setAppBadge(s.length)}}catch{}}async function La(t){if(!Ml()||!Fl())return!1;if(t.requireHidden!==!1&&T2())return!0;const e=nt();if(e){const s=t.alertStyle??wo(),i=await e.showNotification({title:t.title,body:t.body,tag:t.tag,sessionId:t.data?.sessionId,silent:s==="quiet",persistent:s==="persistent"});return e.notificationDeliveryConfirmation===!0&&i}if(Notification.permission!=="granted")return!1;const n=await hi();if(t.deferToPush&&await n?.pushManager?.getSubscription())return!0;if(t.requireHidden!==!1){if(await n?.pushManager?.getSubscription())return!0}if(!L2(t))return!0;const r=t.alertStyle??wo(),o={body:t.body,tag:t.tag,icon:"/pwa-192x192.png",badge:"/maskable-icon-512x512.png",requireInteraction:r==="persistent",renotify:r==="persistent"?!!t.tag:!1,silent:r==="quiet",vibrate:r==="quiet"?[]:[80,40,80],data:{url:t.data?.url??"/",sessionId:t.data?.sessionId}};try{if(n&&typeof n.showNotification=="function")return await n.showNotification(t.title,o),!0;const s=new Notification(t.title,o);return s.onclick=()=>{window.focus(),t.data?.url&&window.location.href!==t.data.url&&window.location.assign(t.data.url),s.close()},!0}catch(s){if(s instanceof DOMException&&s.name==="NotSupportedError"&&o.renotify)try{const i={...o,renotify:!1};return n&&typeof n.showNotification=="function"?await n.showNotification(t.title,i):new Notification(t.title,i),!0}catch(i){return console.warn("[PWA notifications] Failed to show notification (renotify fallback):",i),!1}return console.warn("[PWA notifications] Failed to show notification:",s),!1}}function O2(){try{return localStorage.getItem("termdock:locale")||"en"}catch{return"en"}}function D2(t,e){return t==="zh"?{waitingTitle:`${e} 需要你的处理`,waitingBody:`${e} 需要你的处理。`,doneTitle:`${e} 已完成`,doneBody:`${e} 已完成,点按查看结果。`,exitedTitle:`${e} 已退出`,exitedBody:`${e} 已退出,点按查看结果。`}:{waitingTitle:`${e} needs your input`,waitingBody:`${e} is waiting for your input.`,doneTitle:`${e} finished`,doneBody:"Tap to see the result.",exitedTitle:`${e} exited`,exitedBody:"Tap to see the result."}}const Cf=1e6;function Kt(t){return{sessionId:t,directory:"",terminalSessionId:null,mode:"shell",tmuxSessionName:null,activeProgram:null,activeProgramRaw:null,activeProgramSource:null,cwd:null,inCopyMode:!1,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNativeSessionId:null,agentResumeRecovered:!1,agentRich:!1,agentActivity:0,agentCwd:null,agentNeedsReview:!1,shellTitle:null,promptState:null,shellExitCode:null,tuiProgress:null,gitStatus:null,bufferChunks:[],bufferLength:0,lastOutputAt:null,updatedAt:Date.now()}}const pi="termdock-shell-titles-v1";function gi(){if(typeof window>"u")return{};try{const t=localStorage.getItem(pi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function F2(t){return gi()[t]??null}function M2(t,e){if(!(typeof window>"u"))try{const n=gi();e?n[t]=e:delete n[t],localStorage.setItem(pi,JSON.stringify(n))}catch{}}function j2(t){if(!(typeof window>"u"))try{const e=gi();delete e[t],localStorage.setItem(pi,JSON.stringify(e))}catch{}}const mi="termdock-agent-cache-v1";function Hl(){if(typeof window>"u")return{};try{const t=localStorage.getItem(mi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function H2(t,e){if(!(typeof window>"u"))try{const n=Hl();e?n[t]=e:delete n[t],localStorage.setItem(mi,JSON.stringify(n))}catch{}}function U2(t){if(!(typeof window>"u"))try{const e=Hl();delete e[t],localStorage.setItem(mi,JSON.stringify(e))}catch{}}function $2(){if(!(typeof window>"u"))try{localStorage.removeItem(mi)}catch{}}function VR(t){return Hl()[t]??null}function q2(){if(!(typeof window>"u"))try{localStorage.removeItem(pi)}catch{}}const Ba=di((t,e)=>{const n={pendingChunksBySession:new Map,activitySessionIds:new Set,batchFlushRafRef:null},r=(i,a)=>{const c=new Map;return t(l=>{const d=new Map(l.sessions);let u=l.nextChunkId;const f=Date.now();for(const[h,g]of i){const m=d.get(h)??Kt(h);let b=m.bufferChunks.length>0?[...m.bufferChunks]:[],w=m.bufferLength;for(const R of g){const y=u++;b.push({id:y,data:R}),c.set(h,y),w+=R.length}for(;w>Cf&&b.length>1;){const R=b.shift();if(!R)break;w-=R.data.length}d.set(h,{...m,bufferChunks:b,bufferLength:w,lastOutputAt:a.has(h)?f:m.lastOutputAt,updatedAt:f})}return{sessions:d,nextChunkId:u}}),c},o=()=>{if(n.batchFlushRafRef===null){if(typeof window>"u"){s();return}n.batchFlushRafRef=window.requestAnimationFrame(()=>{n.batchFlushRafRef=null,s()})}},s=()=>{if(n.pendingChunksBySession.size===0)return;const i=v2(n.pendingChunksBySession),a=new Set([...i.keys()].filter(c=>n.activitySessionIds.has(c)));for(const c of i.keys())n.pendingChunksBySession.has(c)||n.activitySessionIds.delete(c);r(i,a),n.pendingChunksBySession.size>0&&o()};return{sessions:new Map,nextChunkId:1,activeSessionId:null,getTerminalSession:i=>e().sessions.get(i),setActiveSessionId:i=>{if(t({activeSessionId:i}),i){const a=e().sessions.get(i);if(a?.agentNeedsReview){const c=new Map(e().sessions);c.set(i,{...a,agentNeedsReview:!1,updatedAt:Date.now()}),t({sessions:c}),a.terminalSessionId&&wc(a.terminalSessionId)}}},setTerminalSession:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i),f=!d||d.terminalSessionId!==a.sessionId?Kt(i):d??Kt(i),h=a.history??d?.history??[];return l.set(i,{...f,terminalSessionId:a.sessionId,mode:a.mode??f.mode,tmuxSessionName:a.tmuxSessionName??f.tmuxSessionName,activeProgram:a.activeProgram??d?.activeProgram??f.activeProgram,activeProgramRaw:a.activeProgramRaw??d?.activeProgramRaw??f.activeProgramRaw,activeProgramSource:a.activeProgramSource??d?.activeProgramSource??f.activeProgramSource,cwd:a.cwd??d?.cwd??f.cwd,agentResumeRecovered:d?.agentResumeRecovered??f.agentResumeRecovered,shellTitle:d?.shellTitle??gi()[i]??f.shellTitle,sessionId:i,isConnecting:!1,history:h,updatedAt:Date.now()}),{sessions:l}})},setSessionHistory:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,history:a,updatedAt:Date.now()}),{sessions:l}})},setSessionActiveProgram:(i,a,c=null,l=null)=>{t(d=>{const u=new Map(d.sessions),f=u.get(i)??Kt(i);return u.set(i,{...f,activeProgram:a,activeProgramRaw:l,activeProgramSource:c,updatedAt:Date.now()}),{sessions:u}})},setSessionCwd:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,cwd:a,updatedAt:Date.now()}),{sessions:l}})},setSessionShellTitle:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l||l.shellTitle===a)return c;const d=new Map(c.sessions);return d.set(i,{...l,shellTitle:a,updatedAt:Date.now()}),{sessions:d}}),M2(i,a)},setSessionPromptState:(i,a,c)=>{t(l=>{const d=l.sessions.get(i);if(!d||d.promptState===a)return l;const u=new Map(l.sessions);return u.set(i,{...d,promptState:a,shellExitCode:c??d.shellExitCode,updatedAt:Date.now()}),{sessions:u}})},setSessionTuiProgress:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l)return c;const d=a?.state==="remove"?null:a;if(l.tuiProgress?.state===d?.state&&l.tuiProgress?.progress===d?.progress)return c;const u=new Map(c.sessions);return u.set(i,{...l,tuiProgress:d,updatedAt:Date.now()}),{sessions:u}})},setSessionGitStatus:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||JSON.stringify(d.gitStatus)===JSON.stringify(a)?c:(l.set(i,{...d,gitStatus:a,updatedAt:Date.now()}),{sessions:l})})},setSessionCopyMode:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||d.inCopyMode===a?c:(l.set(i,{...d,inCopyMode:a,updatedAt:Date.now()}),{sessions:l})})},setSessionAgentStatus:(i,a)=>{const c=e(),l=c.sessions.get(i);if(!l)return;const d=a.agentStatus??null,u=d&&d!=="idle"?a.agentIndicator??l.agentIndicator??null:null,f=d&&d!=="idle"?a.agentStatusDetail??null:null,h=a.agent!==void 0?a.agent:l.agent,g=a.agentMessage!==void 0?a.agentMessage:d?l.agentMessage:null,m=a.agentNativeSessionId!==void 0?a.agentNativeSessionId:l.agentNativeSessionId,b=a.agentResumeRecovered!==void 0?a.agentResumeRecovered:l.agentResumeRecovered,w=a.agentRich??l.agentRich,R=a.agentActivity??l.agentActivity,y=a.agentCwd!==void 0?a.agentCwd:l.agentCwd,k=c.activeSessionId!==i,N=l.agentStatus==="working"||l.agentStatus==="waiting"||l.agentStatus==="done",x=a.reviewed===!1||a.reviewed===null&&d===null&&N&&k;if(l.agentStatus===d&&l.agentIndicator===u&&l.agentStatusDetail===f&&l.agent===h&&l.agentMessage===g&&l.agentNativeSessionId===m&&l.agentResumeRecovered===b&&l.agentRich===w&&l.agentActivity===R&&l.agentCwd===y&&l.agentNeedsReview===x)return;const T=new Map(c.sessions);if(T.set(i,{...l,agentStatus:d,agentIndicator:u,agentStatusDetail:f,agent:h,agentMessage:g,agentNativeSessionId:m,agentResumeRecovered:b,agentRich:w,agentActivity:R,agentCwd:y,agentNeedsReview:x,updatedAt:Date.now()}),t({sessions:T}),h&&H2(i,h),!qs())return;const S=h?.displayName??l.agent?.displayName??"Agent",v=O2(),A=D2(v,S);if(d==="waiting"&&l.agentStatus!=="waiting"&&k){La({title:A.waitingTitle,body:g??A.waitingBody,tag:`agent:${i}`,dedupKey:`agent:${i}:waiting:${R}`,data:{url:"/",sessionId:i},deferToPush:!0});return}if(d==="done"&&l.agentStatus!=="done"&&k){La({title:A.doneTitle,body:A.doneBody,tag:`agent:${i}`,dedupKey:`agent:${i}:done:${R}`,data:{url:"/",sessionId:i},deferToPush:!0});return}d===null&&(l.agentStatus==="working"||l.agentStatus==="waiting")&&k&&La({title:A.exitedTitle,body:A.exitedBody,tag:`agent:${i}`,dedupKey:`agent:${i}:exited:${R}`,data:{url:"/",sessionId:i},deferToPush:!0})},setAgentResumeRecovered:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return d.agentResumeRecovered===a?c:(l.set(i,{...d,agentResumeRecovered:a,updatedAt:Date.now()}),{sessions:l})})},clearAgentNeedsReview:i=>{const a=e().sessions.get(i);a?.agentNeedsReview&&(t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||!d.agentNeedsReview?c:(l.set(i,{...d,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:l})}),a.terminalSessionId&&wc(a.terminalSessionId))},setConnecting:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??Kt(i);return l.set(i,{...d,isConnecting:a,updatedAt:Date.now()}),{sessions:l}})},appendToBuffer:(i,a,c)=>{if(!a)return;let l=n.pendingChunksBySession.get(i);l||(l=[],n.pendingChunksBySession.set(i,l)),l.push(...Af(a)),c?.markActivity!==!1&&n.activitySessionIds.add(i),o()},hasPendingBufferWrites:i=>(n.pendingChunksBySession.get(i)?.length??0)>0,flushPendingBufferWrites:i=>{const a=n.pendingChunksBySession.get(i);if(!a?.length)return e().sessions.get(i)?.bufferChunks.at(-1)?.id??null;n.pendingChunksBySession.delete(i);const c=n.activitySessionIds.delete(i);return n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),r(new Map([[i,a]]),c?new Set([i]):new Set).get(i)??null},replaceBuffer:(i,a)=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null);let c=null;return t(l=>{const d=new Map(l.sessions),u=d.get(i);if(!u)return l;if(!a||a.length===0)return d.set(i,{...u,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:d};let f=l.nextChunkId;const h=[];let g=0;for(const m of a)if(m)for(const b of Af(m)){const w=f++;h.push({id:w,data:b}),c=w,g+=b.length}for(;g>Cf&&h.length>1;){const m=h.shift();if(!m)break;g-=m.data.length}return d.set(i,{...u,bufferChunks:h,bufferLength:g,updatedAt:Date.now()}),{sessions:d,nextChunkId:f}}),c},clearTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l&&c.set(i,{...l,terminalSessionId:null,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:c}})},clearBuffer:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l?(c.set(i,{...l,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:c}):a})},removeTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),t(a=>{const c=new Map(a.sessions);return c.delete(i),{sessions:c}}),j2(i),U2(i)},clearAllTerminalSessions:()=>{n.pendingChunksBySession.clear(),n.activitySessionIds.clear(),n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t({sessions:new Map,nextChunkId:1}),q2(),$2()}}}),_c="termdock:session-notice";function K2(){return O.useEffect(()=>{const t=()=>Pa.getState().view(!document.hidden&&ts()?Ba.getState().activeSessionId:null);t();const e=Ba.subscribe((n,r)=>{n.activeSessionId!==r.activeSessionId&&t()});return document.addEventListener("visibilitychange",t),window.addEventListener(po,t),()=>{e(),document.removeEventListener("visibilitychange",t),window.removeEventListener(po,t),Pa.getState().view(null)}},[]),O.useEffect(()=>cm(t=>{if(t.type!=="session-notice")return;Pa.getState().receive(t.sessionId,t.id);const e=re()?.targetPeerId,n=gt(),r=window.parent,o=m2().sessions.find(u=>u.sessionId===t.sessionId),s=Ba.getState().sessions.get(t.sessionId),i=s?.shellTitle??F2(t.sessionId),a=i===s?.cwd||i===Gn(s?.cwd??null)?null:i,c=d2(o??{name:t.sessionName},s?.activeProgram??null,null,void 0,a,s?.promptState??null),l={...t,sessionName:c,key:`${e??"local"}:${t.id}`,open:()=>e&&n?n.focusSession(e,t.sessionId):(window.dispatchEvent(new CustomEvent("termdock:focus-session",{detail:t.sessionId})),!0)},d=r.document.createEvent("CustomEvent");d.initCustomEvent(_c,!1,!1,l),r.dispatchEvent(d)}),[]),null}function z2(){const{locale:t}=fi(),e=t==="zh",[n,r]=O.useState([]);O.useEffect(()=>{const i=a=>{const c=a.detail;r(l=>l.some(d=>d.key===c.key)?l:[...l,c])};return window.addEventListener(_c,i),()=>window.removeEventListener(_c,i)},[]);const o=O.useCallback(i=>{r(a=>a.filter(c=>c.key!==i))},[]),s=n[0];return s?Mc.createPortal(p.jsx(W2,{notice:s,remaining:n.length-1,chinese:e,onDismiss:o},s.key),document.body):null}function W2({notice:t,remaining:e,chinese:n,onDismiss:r}){const[o,s]=O.useState(!1);return p.jsxs("section",{"aria-label":n?"关键进展提醒":"Progress reminder",className:"fixed left-3 right-3 top-[calc(var(--safe-top-inset,0px)+0.75rem)] z-toast overflow-hidden rounded-xl bg-surface text-foreground shadow-lg ring-1 ring-inset ring-border/15 animate-fade-in md:left-auto md:right-4 md:w-[360px]",children:[p.jsxs("button",{type:"button","aria-label":n?"查看 Session":"Open session",className:"group flex w-full items-start gap-2.5 p-3.5 pr-11 text-left transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>{t.open()?r(t.key):s(!0)},children:[p.jsx(tg,{size:16,className:"mt-0.5 shrink-0 text-primary","aria-hidden":"true"}),p.jsxs("span",{className:"min-w-0 flex-1",role:"status","aria-live":"polite","aria-atomic":"true",children:[p.jsxs("span",{className:"flex items-center gap-2",children:[p.jsx("span",{className:"min-w-0 flex-1 truncate text-[12px] font-medium",title:t.sessionName,children:t.sessionName}),p.jsx(GE,{size:13,className:"shrink-0 text-muted-foreground/60 transition-colors group-hover:text-primary","aria-hidden":"true"})]}),t.title&&p.jsx("span",{className:"mt-1 block truncate text-[11px] text-muted-foreground",children:t.title}),p.jsx("span",{className:"mt-1.5 line-clamp-3 whitespace-pre-wrap break-words text-[13px] leading-relaxed text-foreground/85",title:t.message,children:t.message}),e>0&&p.jsx("span",{className:"mt-2 block text-[10px] text-muted-foreground",children:n?`还有 ${e} 条`:`${e} more`}),o&&p.jsx("span",{role:"alert",className:"mt-2 block text-xs text-warning",children:n?"暂时无法打开该服务,请重试。":"Unable to open the service. Please retry."})]})]}),p.jsx("button",{type:"button","aria-label":n?"关闭提醒":"Dismiss reminder",className:"absolute right-0 top-0 flex h-11 w-11 items-center justify-center rounded-tr-xl text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>r(t.key),children:p.jsx(ag,{size:14})})]})}const If=5*6e4;let Oc,vm=!1,Sm=!1,Rf=!1;const Dc=new Set;function Tf(){vm=!0,Dc.forEach(t=>t())}function G2(){return O.useSyncExternalStore(t=>(Dc.add(t),()=>{Dc.delete(t)}),()=>vm,()=>!1)}function V2(){window.dispatchEvent(new Event("termdock:before-update")),Sm=!0,Oc?.waiting?Oc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function X2(t,e){let n=t;return()=>{if(!n){n=!0;return}e()}}function Y2(){if(Rf||typeof window>"u"||!("serviceWorker"in navigator))return;Rf=!0,navigator.serviceWorker.addEventListener("controllerchange",X2(!!navigator.serviceWorker.controller,()=>{Sm?window.location.reload():Tf()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Oc=e;const n=()=>{e.waiting&&Tf()},r=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&n()})};e.addEventListener("updatefound",r),r(),n();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<If||(o=Date.now(),e.update().then(n).catch(()=>{}))};s(),window.setInterval(s,If),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function Z2(){const t=G2(),[e,n]=O.useState(!1),{locale:r}=fi();if(!t||e)return null;const o=r==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:V2,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>n(!0),children:o?"稍后":"Later"})]})}function xm(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const Em=O.createContext(void 0);function XR({children:t}){const e=O.useContext(Em),n=e===void 0?typeof document>"u"?null:document.body:e;return n?Mc.createPortal(t,n):null}const J2={activeKey:"root",items:[]},Q2=()=>()=>{},eR=()=>J2;function tR({host:t,item:e,visible:n,active:r}){const o=O.useRef(null);return O.useEffect(()=>{o.current?.toggleAttribute("inert",!r)},[r]),O.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${Gp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:n?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function nR({children:t}){const e=window.parent===window?gt():void 0,n=O.useSyncExternalStore(e?.subscribe||Q2,e?.snapshot||eR),[r,o]=O.useState(null),[s,i]=O.useState(()=>n.activeKey==="root"?"root":null),[a,c]=O.useState(),[l,d]=O.useState(!1),[u,f]=O.useState(),h=n.items.find(y=>y.key===n.activeKey),g=h?.rendered||a===n.activeKey?n.activeKey:s,m=g!==n.activeKey,b=m&&s===null;O.useLayoutEffect(()=>{if(!m||b){f(void 0);return}const y=()=>{const k=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(_=>_.dataset.workspaceKey===s),S=(s==="root"?r:k?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!S||S.width===0||S.right<=0){f(void 0);return}const v=k?.getBoundingClientRect(),A=S.top+(v?.top??0)>=160;f({left:S.left+(v?.left??0)+12,top:(A?S.top-8:S.bottom+8)+(v?.top??0),width:Math.max(0,S.width-24),transform:A?"translateY(-100%)":"none"})};return y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[m,b,s,r]),O.useLayoutEffect(()=>{e?.present(g),m||i(g),r?.toggleAttribute("inert",g!=="root"||m)},[e,r,g,m]),O.useEffect(()=>{if(d(!1),!m)return;const y=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(y)},[n.activeKey,m]),O.useEffect(()=>{c(void 0)},[n.activeKey]);const w=n.items.find(y=>y.key===s),R=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":b?"正在恢复服务…":"正在切换服务…";return O.useEffect(()=>{if(!e)return;const y=()=>{try{const k=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(k==="dark"||k==="light")&&(document.documentElement.dataset.theme=k,xm(k))}catch{}};return window.addEventListener("storage",y),()=>window.removeEventListener("storage",y)},[e]),O.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const y=x=>{if(x.source!==navigator.serviceWorker.controller)return;const T=x.data;T?.type==="termdock:focus-session"&&typeof T.targetPeerId=="string"&&typeof T.sessionId=="string"&&e.focusSession(T.targetPeerId,T.sessionId)&&(x.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),x.stopImmediatePropagation())},k=async()=>{if("caches"in window)try{const x=await caches.open("termdock-notification-target-v1"),T=await x.match("/__termdock-notification-target");if(!T)return;const S=await T.json();typeof S.targetPeerId=="string"&&typeof S.sessionId=="string"&&Date.now()-S.clickedAt<3e4&&e.focusSession(S.targetPeerId,S.sessionId)&&await x.delete("/__termdock-notification-target")}catch{}},N=()=>{document.hidden||k()};return navigator.serviceWorker.addEventListener("message",y),document.addEventListener("visibilitychange",N),k(),()=>{navigator.serviceWorker.removeEventListener("message",y),document.removeEventListener("visibilitychange",N)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(Em.Provider,{value:r,children:t})}),n.items.filter(y=>y.key!=="root").map(y=>p.jsx(tR,{host:e,item:y,visible:g===y.key,active:!m&&g===y.key},y.key)),b&&p.jsx("div",{className:"termdock-boot z-modal-panel",role:"status","aria-live":"polite",children:l||h?.phase==="offline"||h?.phase==="reconnecting"?p.jsxs("div",{className:"flex max-w-xs flex-col items-center gap-3 text-center",children:[p.jsx(je,{size:16,className:"animate-spin motion-reduce:animate-none","aria-hidden":"true"}),p.jsx("div",{className:"max-w-full truncate text-sm",children:h?.service?.label||"Termdock"}),p.jsx("div",{className:"text-xs text-muted-foreground",children:R}),p.jsx("button",{type:"button",className:"min-h-11 rounded-lg bg-surface-2 px-4 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>c(n.activeKey),children:"查看连接页面"})]}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"termdock-boot-spinner","aria-hidden":"true"}),p.jsx("span",{children:"Loading Termdock"})]})}),m&&!b&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:y=>{if(y.key==="Escape"&&w?.service&&(y.preventDefault(),e.activate(w.service)),y.key==="Tab"){const k=Array.from(y.currentTarget.querySelectorAll("button")),N=k[0],x=k[k.length-1];y.shiftKey&&document.activeElement===N?(y.preventDefault(),x?.focus()):!y.shiftKey&&document.activeElement===x&&(y.preventDefault(),N?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(je,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:R})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(n.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const rR=O.lazy(()=>Qt(()=>import("./App-D3GMpftt.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8]))),oR=O.lazy(()=>Qt(()=>import("./DagPlayground-D0RdKW7B.js"),__vite__mapDeps([9,10,2,1,11,7,3])).then(t=>({default:t.DagPlayground}))),sR=O.lazy(()=>Qt(()=>import("./DiffLab-B-64zTi5.js"),__vite__mapDeps([12,2,1,13,8,14,3])).then(t=>({default:t.DiffLab}))),iR=O.lazy(()=>Qt(()=>import("./DiffReviewLab-m2uqIPwo.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,8,14,3])).then(t=>({default:t.DiffReviewLab})));t2();CE();BE();window.parent===window&&Y2();const Xr=re();Xr&&Qt(()=>import("./App-D3GMpftt.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&gE(Xr?{...Xr,id:Xr.targetPeerId,label:Xr.serviceName||location.host}:void 0);try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,xm(t))}catch{}DE.createRoot(document.getElementById("root")).render(p.jsx(Ge.StrictMode,{children:p.jsxs(XC,{children:[window.parent===window&&p.jsxs(p.Fragment,{children:[p.jsx(Z2,{}),p.jsx(z2,{})]}),p.jsx(qI,{children:p.jsx(O.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(oR,{}):t.get("diff-review-lab")==="1"?p.jsx(iR,{}):t.get("diff-lab")==="1"?p.jsx(sR,{}):p.jsx(nR,{children:p.jsxs(jI,{children:[p.jsx(K2,{}),p.jsx(rR,{})]})})})()})})]})}));export{kA as $,Cl as A,tg as B,Fs as C,lm as D,Sg as E,oE as F,Ck as G,Pv as H,AA as I,sk as J,IR as K,je as L,dE as M,pn as N,SC as O,aI as P,vC as Q,WR as R,li as S,u1 as T,rk as U,ZI as V,po as W,ag as X,yl as Y,hA as Z,Qt as _,eg as a,xC as a$,WA as a0,yR as a1,di as a2,Ak as a3,VI as a4,Ce as a5,zA as a6,Mi as a7,Tk as a8,aC as a9,Gn as aA,Wk as aB,fC as aC,kC as aD,tC as aE,EC as aF,pC as aG,lC as aH,Dk as aI,MR as aJ,yC as aK,Us as aL,IA as aM,l2 as aN,d2 as aO,OR as aP,un as aQ,qs as aR,Bc as aS,wo as aT,Ml as aU,nt as aV,EA as aW,uA as aX,gk as aY,ck as aZ,hk as a_,_R as aa,GR as ab,RA as ac,uk as ad,Rk as ae,iC as af,CA as ag,I1 as ah,bg as ai,TA as aj,oI as ak,bR as al,LR as am,ik as an,it as ao,vk as ap,bk as aq,Ek as ar,KA as as,bC as at,mC as au,VR as av,F2 as aw,gC as ax,wC as ay,mk as az,zE as b,Pk as b$,Fg as b0,gt as b1,Ta as b2,Jh as b3,yp as b4,oC as b5,Sk as b6,kk as b7,Dg as b8,zk as b9,m2 as bA,rC as bB,eC as bC,nC as bD,sC as bE,PR as bF,TR as bG,xR as bH,XA as bI,PA as bJ,vR as bK,fc as bL,NC as bM,Bk as bN,jC as bO,BR as bP,Fk as bQ,_k as bR,pk as bS,$n as bT,qR as bU,Mk as bV,Ok as bW,tk as bX,RR as bY,ok as bZ,dk as b_,Gk as ba,Hk as bb,Kk as bc,$k as bd,R2 as be,Fl as bf,ts as bg,p as bh,wR as bi,lk as bj,IC as bk,Nk as bl,_C as bm,HC as bn,Yk as bo,ak as bp,yk as bq,DC as br,f2 as bs,dC as bt,wg as bu,Pg as bv,h2 as bw,Lk as bx,VA as by,dt as bz,ng as c,BC as c0,pR as c1,k1 as c2,TC as c3,AC as c4,RC as c5,OC as c6,re as c7,Zk as c8,$C as c9,_2 as cA,xm as cB,hR as cC,xk as cD,KR as cE,Ik as cF,wk as cG,is as cH,st as cI,cC as cJ,lg as cK,fi as cL,AR as cM,Pa as cN,FR as cO,xe as cP,Ba as cQ,NR as cR,we as cS,Jk as cT,ci as cU,Ke as cV,kR as cW,ER as cX,Zp as ca,UC as cb,ek as cc,ZA as cd,GA as ce,QA as cf,nk as cg,PC as ch,MC as ci,DR as cj,HR as ck,UR as cl,$R as cm,jR as cn,Rg as co,qA as cp,ji as cq,CR as cr,La as cs,FC as ct,cm as cu,LC as cv,SR as cw,YA as cx,gR as cy,zR as cz,xn as d,QE as e,rg as f,og as g,qI as h,vg as i,i1 as j,sg as k,nI as l,ig as m,Se as n,XR as o,JA as p,il as q,Bt as r,CC as s,mR as t,oA as u,u2 as v,Vk as w,qk as x,al as y,Qk as z};
|