@poe-platform/safe-bash 0.1.818 → 0.1.819
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/office-xml/retained-xml-document.d.ts +2 -2
- package/dist/pdf-ast/cos/compact-number.d.ts +19 -0
- package/dist/pdf-ast/cos/mutable-object-store.d.ts +2 -1
- package/dist/pdf-ast/cos/retained-node-writer.d.ts +9 -0
- package/dist/pdf-ast/cos/text-store.d.ts +27 -0
- package/dist/pdf-ast/edit/retained-bookmarks.d.ts +2 -2
- package/dist/pdf-ast/edit/retained-info-updates.d.ts +3 -3
- package/dist/pdf-ast/edit/retained-merge-outlines.d.ts +43 -0
- package/dist/pdf-ast/edit/retained-page-copy.d.ts +2 -0
- package/dist/pdf-ast/image.js +1 -1
- package/dist/pdf-ast/index.d.ts +3 -0
- package/dist/pdf-ast/index.js +7 -1
- package/dist/pdf-ast/retained-document.d.ts +7 -0
- package/dist/pdf-ast/retained-reader.d.ts +4 -0
- package/dist/safe-bash/ast-grep.js +1 -1
- package/dist/safe-bash/audio-ast.js +1 -1
- package/dist/safe-bash/byte-encoding.js +1 -1
- package/dist/safe-bash/chunks/{chunk-HD6DWOAC.js → chunk-67QE3JLU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HPQE675Q.js → chunk-ESH5MDQR.js} +1 -1
- package/dist/safe-bash/chunks/chunk-HNT2MR4W.js +45 -0
- package/dist/safe-bash/chunks/{chunk-SXSEF5E2.js → chunk-IRJS54AA.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-AXGI5JVL.js → chunk-NAETSXBW.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-WW7QPLH2.js → chunk-PSD2RSOS.js} +2 -1
- package/dist/safe-bash/chunks/{chunk-FQRI5AS5.js → chunk-VF3Q2V3E.js} +1 -1
- package/dist/safe-bash/chunks/{pdfinfo-KQIQEDOF.js → pdfinfo-G7BGZXBN.js} +2 -12
- package/dist/safe-bash/command-chunks/{chunk-CEHICGP6.js → chunk-22D6Q6SW.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-RYOHOS2I.js → chunk-2E53ZL5D.js} +11 -9
- package/dist/safe-bash/command-chunks/{chunk-EJ4UP7DA.js → chunk-2ESK2YIE.js} +27 -5
- package/dist/safe-bash/command-chunks/{chunk-X6KFCAWZ.js → chunk-2GU2UU2Z.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-L2VLASZ4.js → chunk-2GUI3ZKE.js} +3 -3
- package/dist/safe-bash/command-chunks/chunk-2H6RJPCQ.js +721 -0
- package/dist/safe-bash/command-chunks/{chunk-DRHONH2C.js → chunk-2IGH6JIP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-45GTHPL5.js → chunk-2V6EUWE3.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QNLX3CZH.js → chunk-2VSNIHIW.js} +19 -19
- package/dist/safe-bash/command-chunks/{chunk-PX6E5MHY.js → chunk-3DID6MQY.js} +15 -5
- package/dist/safe-bash/command-chunks/{chunk-5VO534FR.js → chunk-3K5FCRUG.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-BSTABZIK.js → chunk-3LMUKOP2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-FDRE535F.js → chunk-3MFYCMQU.js} +35 -35
- package/dist/safe-bash/command-chunks/chunk-3PO534WJ.js +37 -0
- package/dist/safe-bash/command-chunks/{chunk-VUJCVXD4.js → chunk-3RDEX4AF.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-3B6554G6.js → chunk-3TXPZLFI.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-YW7WU7W2.js → chunk-4HJEZGYN.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-V3NKL42J.js → chunk-4Q3HP33O.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-EBX5RKKT.js → chunk-4XYGJB24.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-D7UFAIBS.js → chunk-4ZQYBCB2.js} +15 -15
- package/dist/safe-bash/command-chunks/{chunk-TG2RVQLP.js → chunk-5KWEZV5H.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4Z7PBIMP.js → chunk-5P5SF75H.js} +79 -30
- package/dist/safe-bash/command-chunks/{chunk-HOBXZX23.js → chunk-5PJ6VT2O.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-CODJMTSA.js → chunk-5QR4LTAK.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-2WTDP3TP.js → chunk-5XIJYTQU.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-MTWFSBNG.js → chunk-63WEASJ7.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-NZF56C25.js → chunk-64L57DEI.js} +16 -16
- package/dist/safe-bash/command-chunks/{chunk-GPLN6JV2.js → chunk-6PDXNY3T.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-BJL7AGA5.js → chunk-6RE4MZYM.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-4OHTYYNU.js → chunk-6REH56FL.js} +11 -9
- package/dist/safe-bash/command-chunks/{chunk-XFIDOCYH.js → chunk-6ZHNKHQQ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-ZSF2T5D4.js → chunk-75OUKYCM.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-QCN7MRRU.js → chunk-772WNCU6.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-XVEI4HZL.js → chunk-7JTJQKIV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3ZVK2OAY.js → chunk-A4GYNM2E.js} +6 -5
- package/dist/safe-bash/command-chunks/chunk-AC4FFCRL.js +3820 -0
- package/dist/safe-bash/command-chunks/{chunk-SQBWAFUI.js → chunk-ADN7BU5X.js} +58 -26
- package/dist/safe-bash/command-chunks/{chunk-XLFOLLUZ.js → chunk-AEHEOKI2.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-IKU7ZBF3.js → chunk-AH3ZEPAN.js} +10 -7
- package/dist/safe-bash/command-chunks/{chunk-F2JUB7JI.js → chunk-AR65HNNX.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-UZZ2WJQV.js → chunk-ARA57PMC.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-HX7QQNWS.js → chunk-AXUHORS3.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-B6NAEWHC.js +53 -0
- package/dist/safe-bash/command-chunks/{chunk-2ZWRW6UQ.js → chunk-B74LVFAN.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-E4TF5W6O.js → chunk-BBOYR6LV.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-GNT3SCF3.js → chunk-BOMCPF7N.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-R6X63VAO.js → chunk-BSLXS4PE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-N6TG44VG.js → chunk-BTDSUATE.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-VZJRFHMZ.js → chunk-BXDNFBKZ.js} +26 -2
- package/dist/safe-bash/command-chunks/chunk-BZLLQWRK.js +296 -0
- package/dist/safe-bash/command-chunks/{chunk-Z33YS3DW.js → chunk-C3FERGHU.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-C5SLY3RB.js +279 -0
- package/dist/safe-bash/command-chunks/{chunk-X4TWJNW7.js → chunk-CI6KHUFK.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-CJIFJ45R.js +203 -0
- package/dist/safe-bash/command-chunks/{chunk-OTEHQQU7.js → chunk-CKQ5SXOO.js} +8 -59
- package/dist/safe-bash/command-chunks/{chunk-UBX5I5HY.js → chunk-CPCXE2TM.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-WPEIOUJN.js → chunk-CXOAMPOV.js} +14 -12
- package/dist/safe-bash/command-chunks/{chunk-4SFX6YGC.js → chunk-D3WMD32B.js} +14 -14
- package/dist/safe-bash/command-chunks/{chunk-SF56V6QK.js → chunk-D54L2IOZ.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-RNIFPFGC.js → chunk-DBYY7IDI.js} +18 -16
- package/dist/safe-bash/command-chunks/{chunk-DGCJVZW6.js → chunk-DGFMOT4O.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-N5J3IZZK.js → chunk-DQVOBGI2.js} +12414 -8140
- package/dist/safe-bash/command-chunks/{chunk-IFBLXBBM.js → chunk-DTLIBRCQ.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-4PMMJ45F.js → chunk-DZTT5SLG.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-77NXQZGK.js → chunk-DZY7V74W.js} +3 -1
- package/dist/safe-bash/command-chunks/chunk-E47FFS5M.js +52 -0
- package/dist/safe-bash/command-chunks/{chunk-LNKZVU5V.js → chunk-E76WK7OQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TTVJJZOM.js → chunk-EBMKGNKF.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-LNHTLWIL.js → chunk-EG7VVDV3.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-GZNX5SS4.js → chunk-EIZFAUUD.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-5UGQGB5Y.js → chunk-ESIEU4E4.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-QJZJWL2X.js → chunk-ET3CPTJT.js} +38 -25
- package/dist/safe-bash/command-chunks/{chunk-XQFEP43Y.js → chunk-ETS4BINB.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-WJSU2UVG.js → chunk-EU5SR3LS.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-WRCYZJNO.js → chunk-FCGMSOF6.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-XB5ZZHFD.js → chunk-FGK6HLSY.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-7ADQE64C.js → chunk-FMGNXOMV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QLE6JUR7.js → chunk-FX54I4AC.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-MRBX4KEP.js → chunk-GAYTDZPP.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-GCSKS22X.js +15 -0
- package/dist/safe-bash/command-chunks/{chunk-UVZJAV2S.js → chunk-GNPPPYDF.js} +1 -78
- package/dist/safe-bash/command-chunks/{chunk-B6XTAKKQ.js → chunk-GNVAW6NL.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-GQV5RWMN.js +27 -0
- package/dist/safe-bash/command-chunks/{chunk-PWHIVWQT.js → chunk-GVDVRC7J.js} +15 -19
- package/dist/safe-bash/command-chunks/{chunk-KXM3HTAF.js → chunk-GYKQ3IOV.js} +27 -14
- package/dist/safe-bash/command-chunks/{chunk-BFRSYJUC.js → chunk-HBR5PWX4.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-ZOEKSH3R.js → chunk-HCPEYQKT.js} +5 -4
- package/dist/safe-bash/command-chunks/{chunk-TTTNFKT6.js → chunk-HCZITM4C.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-4SISSPIH.js → chunk-HLRLMFMS.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-HNEWGADJ.js +43 -0
- package/dist/safe-bash/command-chunks/{chunk-GQ7BD75U.js → chunk-HQFX5XKV.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-V6NZVM7C.js → chunk-HSB55ED5.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-G3FK5VVG.js → chunk-HTBUIRTH.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QCIAX6HZ.js → chunk-HUAQZFON.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-JNRX5EFF.js → chunk-HVLF3Y4B.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-M5BFAMXD.js → chunk-I6CQDCIP.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-I7MEH76L.js +276 -0
- package/dist/safe-bash/command-chunks/{chunk-E3BL7W5C.js → chunk-IAHYG67O.js} +152 -80
- package/dist/safe-bash/command-chunks/{chunk-EAGIJ4VW.js → chunk-IC5XC4TO.js} +118 -118
- package/dist/safe-bash/command-chunks/{chunk-YN3OEJAZ.js → chunk-IGZOQT2L.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-FJLSYX5P.js → chunk-ITJDLFPW.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-LSKA4IR4.js → chunk-IYEAS7TU.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-P57V45F2.js → chunk-J3ISXTYB.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-5WS6DXYE.js → chunk-J3VS55K4.js} +3142 -2489
- package/dist/safe-bash/command-chunks/chunk-J4I7KCQQ.js +495 -0
- package/dist/safe-bash/command-chunks/{chunk-HQEYSSZV.js → chunk-JLS6XKAR.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IJE65P52.js → chunk-JMUB5A26.js} +27 -8
- package/dist/safe-bash/command-chunks/{chunk-IJZUUXLL.js → chunk-JQPDVCBU.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-EBKKYRQJ.js → chunk-JSW6YH6T.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-YJ5IA5YQ.js → chunk-K576GZED.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-C2QUG7IP.js → chunk-K6J3KFQ2.js} +17 -122
- package/dist/safe-bash/command-chunks/{chunk-5PMLTSQ5.js → chunk-KQE2D7PX.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-Q65GWGQR.js → chunk-KVTZJBLM.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-L365UGC7.js +250 -0
- package/dist/safe-bash/command-chunks/{chunk-5VY5O37W.js → chunk-LBBJ5S3W.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WHZ6XK7Y.js → chunk-LBILRPVR.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-NTXRKJPZ.js → chunk-LDR3PPM3.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-Y7XL6CWB.js → chunk-LJLB7TBN.js} +19 -15
- package/dist/safe-bash/command-chunks/{chunk-3ZGO24WG.js → chunk-LZHFVNEV.js} +17 -107
- package/dist/safe-bash/command-chunks/{chunk-KFFV7HBL.js → chunk-M7MQTU77.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-MCUDSE4H.js +77 -0
- package/dist/safe-bash/command-chunks/{chunk-JT656DKZ.js → chunk-MD5ZSARP.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-MEST2HID.js +112 -0
- package/dist/safe-bash/command-chunks/{chunk-YS5ZKMRJ.js → chunk-MLMFFBOU.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-NFWLZDMY.js → chunk-MQCLG2CT.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4WHTTCKY.js → chunk-N5Y7WWO6.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-MZYQKH26.js → chunk-NA6YAGAH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BB7HBO56.js → chunk-NDJPULBE.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-WI5NEHPD.js → chunk-NN6OWOJG.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-OL75SBZL.js → chunk-NNYOPI7K.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-ZBXUAM34.js → chunk-NR7POLKP.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-57SKL76U.js → chunk-NWA7ZJDV.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-CSS5KXQC.js → chunk-O3FTKLWR.js} +94 -61
- package/dist/safe-bash/command-chunks/{chunk-6KJDTKE4.js → chunk-O4H7HPMP.js} +35 -393
- package/dist/safe-bash/command-chunks/{chunk-5GP4A3TD.js → chunk-OLNV5MI6.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-BBEAO5N7.js → chunk-OLXMWQJ5.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QWX5IERU.js → chunk-OMD45J52.js} +23 -19
- package/dist/safe-bash/command-chunks/{chunk-AXI7VMLG.js → chunk-OOYVZAWL.js} +3 -41
- package/dist/safe-bash/command-chunks/{chunk-GNORF6RY.js → chunk-OPKLIF5P.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-E3DF7RTE.js → chunk-OT75C5YS.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-X6KO7D6R.js → chunk-OVCSXD7N.js} +6 -6
- package/dist/safe-bash/command-chunks/chunk-P3LHQOX7.js +371 -0
- package/dist/safe-bash/command-chunks/{chunk-M7DZ7COK.js → chunk-P3TV5GIG.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-CCNOZKAK.js → chunk-P5UFNPRE.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-VW67MA53.js → chunk-PAEAEFK3.js} +122 -12
- package/dist/safe-bash/command-chunks/{chunk-5RDS6CNQ.js → chunk-PH722HK2.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-OU4VE5CR.js → chunk-PKH57OIC.js} +8 -6
- package/dist/safe-bash/command-chunks/{chunk-GTOMW4VV.js → chunk-PNOXBL2B.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-L4XSOULP.js → chunk-PPNPXNM6.js} +38 -2
- package/dist/safe-bash/command-chunks/{chunk-UH4CQIU3.js → chunk-PVKSBXHB.js} +11 -9
- package/dist/safe-bash/command-chunks/{chunk-6LOAJOWK.js → chunk-PYYAX5FB.js} +23 -23
- package/dist/safe-bash/command-chunks/{chunk-MOUCMZZP.js → chunk-PZVFNPRC.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-37KBCKDF.js → chunk-QCCRQU44.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-C34RLMAC.js → chunk-QEVSG6HQ.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-YOYK2I4N.js → chunk-QGSY4ZAU.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-4YFTJS5U.js → chunk-QMXOKYMJ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-PFUZPAXQ.js → chunk-QPHI7Y7Z.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-HNY7LZ5P.js → chunk-QWQHLMDX.js} +7 -7
- package/dist/safe-bash/command-chunks/chunk-QX3WKBLI.js +58 -0
- package/dist/safe-bash/command-chunks/{chunk-V6OWCRHN.js → chunk-QZPSGPN5.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-R36PDP3L.js +106 -0
- package/dist/safe-bash/command-chunks/{chunk-L6X4EEN6.js → chunk-R43WEA4C.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-JSX5CFZY.js → chunk-R6VXFTYL.js} +44 -44
- package/dist/safe-bash/command-chunks/{chunk-OVUY46QF.js → chunk-RC4TNFNF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-PU5DMQGG.js → chunk-RESJSUHH.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-CVMHDJ7J.js → chunk-RHXV2KG5.js} +520 -6
- package/dist/safe-bash/command-chunks/{chunk-7B2MHKIW.js → chunk-RKON2TGI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ITXSHOLP.js → chunk-RQTFK7AV.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-CFMJXJS5.js → chunk-RTUDDAAY.js} +9 -4
- package/dist/safe-bash/command-chunks/{chunk-FAU2KL6I.js → chunk-S5MBHFLB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-B6T2526I.js → chunk-S6223MIG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-N6VNHC3B.js → chunk-SKDJCMGI.js} +10 -8
- package/dist/safe-bash/command-chunks/{chunk-3W3HLPCX.js → chunk-SKF6PGA5.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-2FEMMALH.js → chunk-SLD5A7IL.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-FVAFISPY.js → chunk-T2LZWXWF.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-ATHU53C2.js → chunk-TMJG745A.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-FQ2WRT4Q.js → chunk-TP5MZHCB.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-EV3DPRWE.js → chunk-TPSRY72Q.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-73KY3MZ3.js → chunk-TTPT3OME.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-424NYO35.js → chunk-U6VSRO6E.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-5VF2EA7Z.js → chunk-U7J3R7HX.js} +6 -1
- package/dist/safe-bash/command-chunks/{chunk-A32PUWYE.js → chunk-UDRJKA3P.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-3B444A5G.js → chunk-UI5AS3FS.js} +10 -2
- package/dist/safe-bash/command-chunks/{chunk-YKEMSPJZ.js → chunk-UMOQHHSV.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-D5XSGHXN.js → chunk-UNI6QG45.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-77WBFVZQ.js → chunk-UTSN7AKE.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-F5QYUK2E.js → chunk-UWIDPTOB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-F42WV2YO.js → chunk-V2J6AC6S.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-ZZ27QNBY.js → chunk-V2PJO6JL.js} +29 -60
- package/dist/safe-bash/command-chunks/{chunk-EDBNI7WE.js → chunk-VAMBWXDV.js} +60 -9
- package/dist/safe-bash/command-chunks/{chunk-KM2SMMXZ.js → chunk-VJQ5OWS5.js} +80 -2
- package/dist/safe-bash/command-chunks/{chunk-MI2WY75O.js → chunk-VWBNUCUP.js} +28 -11
- package/dist/safe-bash/command-chunks/{chunk-232N24HE.js → chunk-W4BC2YGQ.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-Y3ZRIZL7.js → chunk-W5LH7D23.js} +26 -13
- package/dist/safe-bash/command-chunks/{chunk-K6E56LND.js → chunk-W6L4Z2VX.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-MURNTGDL.js → chunk-WEXEZRMH.js} +5 -5
- package/dist/safe-bash/command-chunks/chunk-WIUEM7HP.js +58 -0
- package/dist/safe-bash/command-chunks/{chunk-AQ3XOOPQ.js → chunk-WKS2PAZL.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-MMSKDYK6.js → chunk-WOECEZAC.js} +336 -74
- package/dist/safe-bash/command-chunks/{chunk-5OS4Q3AX.js → chunk-WOO3YO2X.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-7YDJ7LDO.js → chunk-WOT2YXBT.js} +8 -223
- package/dist/safe-bash/command-chunks/{chunk-OVQSILY3.js → chunk-WV3C6BRD.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-N3MAYM6Y.js → chunk-X3EDCCXU.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-6PE2L522.js → chunk-XE75H5ZZ.js} +13 -13
- package/dist/safe-bash/command-chunks/{chunk-LF7YJ5VQ.js → chunk-XMNPE6RN.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-DCKAY6HV.js → chunk-XNVL6AOV.js} +14 -14
- package/dist/safe-bash/command-chunks/{chunk-MOJQT6RW.js → chunk-XPUYA7YU.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-HW3IOXT6.js → chunk-XXUMECE4.js} +20 -18
- package/dist/safe-bash/command-chunks/{chunk-OAM2SUUI.js → chunk-YB5TNDY6.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-VEZULAIA.js → chunk-YJMS5Q4Y.js} +12 -12
- package/dist/safe-bash/command-chunks/{chunk-KADQKXZE.js → chunk-YJTP4ROI.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-7ITPO2V6.js → chunk-YNFQ5AXM.js} +80 -45
- package/dist/safe-bash/command-chunks/{chunk-7PYDVQPB.js → chunk-YWP62BAZ.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-YXIJOYT6.js +416 -0
- package/dist/safe-bash/command-chunks/{chunk-NQL3WNFI.js → chunk-YYRVGXJH.js} +44 -5
- package/dist/safe-bash/command-chunks/{chunk-7ZEGARPB.js → chunk-Z7UPCDTU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-O2XP6HQN.js → chunk-ZBGP6XEG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-VWRHPDCD.js → chunk-ZIDESNHW.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-D2ZT2UUT.js → chunk-ZLMCWAAU.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-UE34SQET.js → chunk-ZODGWV3Y.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-DIRK47GT.js → chunk-ZPBL7TYJ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-OA4MEWTN.js → chunk-ZQ4NQ24M.js} +10 -10
- package/dist/safe-bash/command-chunks/{chunk-4IDV763L.js → chunk-ZS4J5B6Y.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-ZTW2E5OT.js +1016 -0
- package/dist/safe-bash/command-chunks/{chunk-MN7EEK6Y.js → chunk-ZUOID3FA.js} +10 -10
- package/dist/safe-bash/command-chunks/chunk-ZWGERYLT.js +192 -0
- package/dist/safe-bash/command-chunks/{chunk-F2NF6FHV.js → chunk-ZXIOTUXC.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-DJB5RB6U.js → chunk-ZZ6EIACJ.js} +21 -68
- package/dist/safe-bash/command-chunks/{chunk-XMRQ6UP2.js → chunk-ZZO3GYEZ.js} +1 -11
- package/dist/safe-bash/command-chunks/{command-engine-PFYHL7GS.js → command-engine-B6X6WAMX.js} +375 -114
- package/dist/safe-bash/command-chunks/{engine-5AVSKFBI-D7Q5VPUN.js → engine-UPLVIV72-IGXUDNO5.js} +1 -1
- package/dist/safe-bash/command-chunks/{model-store-IIWQHSEZ.js → model-store-RGLCVIML.js} +9 -9
- package/dist/safe-bash/command-chunks/paradox-BHPRIGXX-RQN37FHB.js +370 -0
- package/dist/safe-bash/command-chunks/prompt-tool-debug-ERJKK3XZ.js +171 -0
- package/dist/safe-bash/commands/alias/index.js +1 -1
- package/dist/safe-bash/commands/apply-patch/index.js +1 -1
- package/dist/safe-bash/commands/archive/create.js +1 -1
- package/dist/safe-bash/commands/archive/extract.js +1 -1
- package/dist/safe-bash/commands/archive/format.js +1 -1
- package/dist/safe-bash/commands/archive/index.js +1 -1
- package/dist/safe-bash/commands/archive/internal.js +1 -1
- package/dist/safe-bash/commands/archive/listing.js +1 -1
- package/dist/safe-bash/commands/archive/modes.js +1 -1
- package/dist/safe-bash/commands/archive/options.js +1 -1
- package/dist/safe-bash/commands/archive/stream.js +1 -1
- package/dist/safe-bash/commands/archive/transform.js +1 -1
- package/dist/safe-bash/commands/archive/unzip/safety.js +1 -1
- package/dist/safe-bash/commands/archive/unzip.js +1 -1
- package/dist/safe-bash/commands/archive/zip/aes.js +1 -1
- package/dist/safe-bash/commands/archive/zip/comments.js +1 -1
- package/dist/safe-bash/commands/archive/zip/crc.js +1 -1
- package/dist/safe-bash/commands/archive/zip/crypto.js +1 -1
- package/dist/safe-bash/commands/archive/zip/dates.js +1 -1
- package/dist/safe-bash/commands/archive/zip/environment.js +1 -1
- package/dist/safe-bash/commands/archive/zip/grow.js +1 -1
- package/dist/safe-bash/commands/archive/zip/help.js +1 -1
- package/dist/safe-bash/commands/archive/zip/line-endings.js +1 -1
- package/dist/safe-bash/commands/archive/zip/log.js +1 -1
- package/dist/safe-bash/commands/archive/zip/lzma.js +1 -1
- package/dist/safe-bash/commands/archive/zip/move.js +1 -1
- package/dist/safe-bash/commands/archive/zip/names.js +1 -1
- package/dist/safe-bash/commands/archive/zip/options.js +1 -1
- package/dist/safe-bash/commands/archive/zip/repair.js +1 -1
- package/dist/safe-bash/commands/archive/zip/safety.js +1 -1
- package/dist/safe-bash/commands/archive/zip/sfx.js +1 -1
- package/dist/safe-bash/commands/archive/zip/test-command.js +1 -1
- package/dist/safe-bash/commands/archive/zip/volumes.js +1 -1
- package/dist/safe-bash/commands/archive/zip/zip64.js +1 -1
- package/dist/safe-bash/commands/archive/zip-format.js +1 -1
- package/dist/safe-bash/commands/archive/zip.js +1 -1
- package/dist/safe-bash/commands/ast-grep/index.js +1 -1
- package/dist/safe-bash/commands/audio/index.browser.js +2 -8
- package/dist/safe-bash/commands/audio/index.js +1 -1
- package/dist/safe-bash/commands/awk/index.js +1 -1
- package/dist/safe-bash/commands/base32/index.js +1 -1
- package/dist/safe-bash/commands/base64/index.js +1 -1
- package/dist/safe-bash/commands/bc/index.browser.js +1 -1
- package/dist/safe-bash/commands/bc/index.js +1 -1
- package/dist/safe-bash/commands/bytes/checksums/sm3.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/errors.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/file-operation.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/files.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/gunzip.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/stream.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/xz-list.js +1 -1
- package/dist/safe-bash/commands/bytes/compression/zstd-decode.js +1 -1
- package/dist/safe-bash/commands/bytes/encoding/base.js +1 -1
- package/dist/safe-bash/commands/bytes/encoding/shared.js +1 -1
- package/dist/safe-bash/commands/bytes/input-budget.js +1 -1
- package/dist/safe-bash/commands/bzip2/index.js +1 -1
- package/dist/safe-bash/commands/cal/index.js +1 -1
- package/dist/safe-bash/commands/caller/index.js +1 -1
- package/dist/safe-bash/commands/canonicalize-existing-parent.js +1 -1
- package/dist/safe-bash/commands/chmod/index.js +1 -1
- package/dist/safe-bash/commands/column/index.js +1 -1
- package/dist/safe-bash/commands/comm/index.js +1 -1
- package/dist/safe-bash/commands/copy-backup.js +1 -1
- package/dist/safe-bash/commands/copy-preserve.js +1 -1
- package/dist/safe-bash/commands/copy-source.js +1 -1
- package/dist/safe-bash/commands/cp/index.js +1 -1
- package/dist/safe-bash/commands/csplit/index.js +1 -1
- package/dist/safe-bash/commands/csvcut/index.js +1 -1
- package/dist/safe-bash/commands/csvgrep/index.js +1 -1
- package/dist/safe-bash/commands/csvkit/index.js +1 -1
- package/dist/safe-bash/commands/curl/index.js +1 -1
- package/dist/safe-bash/commands/date/index.js +1 -1
- package/dist/safe-bash/commands/df/index.js +1 -1
- package/dist/safe-bash/commands/diff/index.js +1 -1
- package/dist/safe-bash/commands/diff-patch/diff-format.js +1 -1
- package/dist/safe-bash/commands/diff-patch/diff-options.js +1 -1
- package/dist/safe-bash/commands/diff-patch/diff-output.js +1 -1
- package/dist/safe-bash/commands/diff-patch/diff.js +1 -1
- package/dist/safe-bash/commands/diff-patch/index.js +2 -2
- package/dist/safe-bash/commands/diff-patch/patch-envelope.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch-formats.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch-path.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch-publication.js +1 -1
- package/dist/safe-bash/commands/diff-patch/patch.js +1 -1
- package/dist/safe-bash/commands/diff-patch/shared.js +1 -1
- package/dist/safe-bash/commands/diff-patch/unified.js +1 -1
- package/dist/safe-bash/commands/diff3/index.js +1 -1
- package/dist/safe-bash/commands/diffpdf/index.js +1 -1
- package/dist/safe-bash/commands/directory-admission.js +1 -1
- package/dist/safe-bash/commands/docx/index.js +1 -1
- package/dist/safe-bash/commands/docx/io.js +1 -1
- package/dist/safe-bash/commands/dos2unix/index.js +1 -1
- package/dist/safe-bash/commands/dot/index.js +1 -1
- package/dist/safe-bash/commands/du/index.js +1 -1
- package/dist/safe-bash/commands/egrep/index.js +1 -1
- package/dist/safe-bash/commands/env/index.js +1 -1
- package/dist/safe-bash/commands/env-split.js +1 -1
- package/dist/safe-bash/commands/exiftool/index.js +1 -1
- package/dist/safe-bash/commands/expand/index.js +1 -1
- package/dist/safe-bash/commands/expr/index.js +1 -1
- package/dist/safe-bash/commands/factor/index.js +1 -1
- package/dist/safe-bash/commands/fd/index.js +1 -1
- package/dist/safe-bash/commands/ffmpeg/index.js +1 -1
- package/dist/safe-bash/commands/ffprobe/index.js +1 -1
- package/dist/safe-bash/commands/fgrep/index.js +1 -1
- package/dist/safe-bash/commands/file/index.js +1 -1
- package/dist/safe-bash/commands/filesystem-requirements.js +1 -1
- package/dist/safe-bash/commands/find/index.js +1 -1
- package/dist/safe-bash/commands/find-format.js +1 -1
- package/dist/safe-bash/commands/find.js +1 -1
- package/dist/safe-bash/commands/fmt/index.js +1 -1
- package/dist/safe-bash/commands/fold/index.js +1 -1
- package/dist/safe-bash/commands/getconf/index.js +1 -1
- package/dist/safe-bash/commands/getopt/index.js +1 -1
- package/dist/safe-bash/commands/gnu-information.js +1 -1
- package/dist/safe-bash/commands/gpg/index.js +1 -1
- package/dist/safe-bash/commands/graphviz/index.js +3 -3
- package/dist/safe-bash/commands/grep/index.js +1 -1
- package/dist/safe-bash/commands/grep-aliases/aliases.js +1 -1
- package/dist/safe-bash/commands/grep.js +1 -1
- package/dist/safe-bash/commands/gzip/index.js +1 -1
- package/dist/safe-bash/commands/hexdump/index.js +1 -1
- package/dist/safe-bash/commands/hostname/index.js +1 -1
- package/dist/safe-bash/commands/html-to-markdown/index.js +1 -1
- package/dist/safe-bash/commands/htmlq/index.js +1 -1
- package/dist/safe-bash/commands/iconv/index.js +1 -1
- package/dist/safe-bash/commands/id/index.js +1 -1
- package/dist/safe-bash/commands/imagemagick/index.js +1 -1
- package/dist/safe-bash/commands/internal.js +1 -1
- package/dist/safe-bash/commands/join/index.js +1 -1
- package/dist/safe-bash/commands/jq/index.js +1 -1
- package/dist/safe-bash/commands/less/index.js +1 -1
- package/dist/safe-bash/commands/line-endings/index.js +1 -1
- package/dist/safe-bash/commands/llm/collections.js +1 -1
- package/dist/safe-bash/commands/llm/command.js +1 -1
- package/dist/safe-bash/commands/llm/elevenlabs-stream.js +1 -1
- package/dist/safe-bash/commands/llm/elevenlabs.js +1 -1
- package/dist/safe-bash/commands/llm/index.browser.js +21 -1
- package/dist/safe-bash/commands/llm/index.js +1 -1
- package/dist/safe-bash/commands/llm/mime.js +1 -1
- package/dist/safe-bash/commands/llm/openai-http.js +1 -1
- package/dist/safe-bash/commands/llm/openai-sse.js +1 -1
- package/dist/safe-bash/commands/llm/openai.js +1 -1
- package/dist/safe-bash/commands/llm/providers/elevenlabs.js +1 -1
- package/dist/safe-bash/commands/llm/providers/index.js +1 -1
- package/dist/safe-bash/commands/llm/providers/openai.js +1 -1
- package/dist/safe-bash/commands/llm/providers/shared.js +1 -1
- package/dist/safe-bash/commands/llm/service.js +1 -1
- package/dist/safe-bash/commands/locale/index.js +1 -1
- package/dist/safe-bash/commands/md5sum/index.js +1 -1
- package/dist/safe-bash/commands/mdq/index.js +1 -1
- package/dist/safe-bash/commands/media/index.js +1 -1
- package/dist/safe-bash/commands/media/plugin.js +1 -1
- package/dist/safe-bash/commands/media/remote.js +1 -1
- package/dist/safe-bash/commands/media/settings.js +1 -1
- package/dist/safe-bash/commands/metadata/chmod.js +1 -1
- package/dist/safe-bash/commands/metadata/internal.js +1 -1
- package/dist/safe-bash/commands/metadata/mktemp.js +1 -1
- package/dist/safe-bash/commands/metadata/stat.js +1 -1
- package/dist/safe-bash/commands/mktemp/index.js +1 -1
- package/dist/safe-bash/commands/mmdc/index.js +1 -1
- package/dist/safe-bash/commands/more/index.js +1 -1
- package/dist/safe-bash/commands/neato/index.js +1 -1
- package/dist/safe-bash/commands/network/aggregate.js +1 -1
- package/dist/safe-bash/commands/network/args.js +1 -1
- package/dist/safe-bash/commands/network/authorizer.js +1 -1
- package/dist/safe-bash/commands/network/body.js +1 -1
- package/dist/safe-bash/commands/network/curl.js +1 -1
- package/dist/safe-bash/commands/network/deadline.js +1 -1
- package/dist/safe-bash/commands/network/decode.js +1 -1
- package/dist/safe-bash/commands/network/fetch-transport.js +1 -1
- package/dist/safe-bash/commands/network/form-content-type.js +1 -1
- package/dist/safe-bash/commands/network/form-headers.js +1 -1
- package/dist/safe-bash/commands/network/glob.js +1 -1
- package/dist/safe-bash/commands/network/input.js +1 -1
- package/dist/safe-bash/commands/network/output.js +1 -1
- package/dist/safe-bash/commands/network/platform-portable.js +1 -1
- package/dist/safe-bash/commands/network/platform.js +1 -1
- package/dist/safe-bash/commands/network/private-address.js +1 -1
- package/dist/safe-bash/commands/network/shared.js +1 -1
- package/dist/safe-bash/commands/network/types.js +1 -1
- package/dist/safe-bash/commands/network/url.js +1 -1
- package/dist/safe-bash/commands/network/wget.js +1 -1
- package/dist/safe-bash/commands/nl/index.js +1 -1
- package/dist/safe-bash/commands/node/browser.js +1 -1
- package/dist/safe-bash/commands/node/buffer.js +1 -1
- package/dist/safe-bash/commands/node/default-runtime.js +1 -1
- package/dist/safe-bash/commands/node/filesystem.js +1 -1
- package/dist/safe-bash/commands/node/path.js +1 -1
- package/dist/safe-bash/commands/node/safejs.js +1 -1
- package/dist/safe-bash/commands/node/source-maps.js +1 -1
- package/dist/safe-bash/commands/node/timers.js +1 -1
- package/dist/safe-bash/commands/node/types.js +1 -1
- package/dist/safe-bash/commands/node/worker-types.js +1 -1
- package/dist/safe-bash/commands/nproc/index.js +1 -1
- package/dist/safe-bash/commands/numfmt/index.js +1 -1
- package/dist/safe-bash/commands/od/index.js +1 -1
- package/dist/safe-bash/commands/op/index.js +23 -1
- package/dist/safe-bash/commands/openssl/index.js +1 -1
- package/dist/safe-bash/commands/pandoc/index.browser.js +1 -1
- package/dist/safe-bash/commands/pandoc/index.js +1 -1
- package/dist/safe-bash/commands/paste/index.js +1 -1
- package/dist/safe-bash/commands/patch/index.js +1 -1
- package/dist/safe-bash/commands/pathchk/index.js +1 -1
- package/dist/safe-bash/commands/pdfimages/index.js +1 -1
- package/dist/safe-bash/commands/pdfinfo/index.js +1 -1
- package/dist/safe-bash/commands/pdfseparate/index.js +1 -1
- package/dist/safe-bash/commands/pdftk/index.js +1 -1
- package/dist/safe-bash/commands/pdftoppm/index.js +1 -1
- package/dist/safe-bash/commands/pdftotext/index.js +1 -1
- package/dist/safe-bash/commands/pdfunite/index.js +1 -1
- package/dist/safe-bash/commands/playwright/index.js +1 -1
- package/dist/safe-bash/commands/portable-random.js +1 -1
- package/dist/safe-bash/commands/portable-requirements.js +1 -1
- package/dist/safe-bash/commands/pptx/index.js +1 -1
- package/dist/safe-bash/commands/pr/index.js +1 -1
- package/dist/safe-bash/commands/printenv/index.js +1 -1
- package/dist/safe-bash/commands/python/executor-pool.js +1 -1
- package/dist/safe-bash/commands/python/executor.browser.js +2 -1
- package/dist/safe-bash/commands/python/executor.js +1 -1
- package/dist/safe-bash/commands/python/host-capabilities.js +1 -1
- package/dist/safe-bash/commands/python/index.browser.js +3 -1
- package/dist/safe-bash/commands/python/index.js +1 -1
- package/dist/safe-bash/commands/python/jspi-assets.js +1 -1
- package/dist/safe-bash/commands/python/jspi-trampoline.js +1 -1
- package/dist/safe-bash/commands/python/jspi.js +1 -1
- package/dist/safe-bash/commands/python/llm-capability.js +1 -1
- package/dist/safe-bash/commands/python/llm-dependencies.js +1 -1
- package/dist/safe-bash/commands/python/llm-module.js +1 -1
- package/dist/safe-bash/commands/python/llm-provider.js +1 -1
- package/dist/safe-bash/commands/python/llm-reference-module.js +1 -1
- package/dist/safe-bash/commands/python/provisioning.js +1 -1
- package/dist/safe-bash/commands/python/shell-capability.js +1 -1
- package/dist/safe-bash/commands/python/shell-module.js +1 -1
- package/dist/safe-bash/commands/python/worker.js +1 -1
- package/dist/safe-bash/commands/qpdf/index.js +1 -1
- package/dist/safe-bash/commands/qrencode/index.js +1 -1
- package/dist/safe-bash/commands/readlink/index.js +1 -1
- package/dist/safe-bash/commands/readlink-missing.js +1 -1
- package/dist/safe-bash/commands/realpath/index.js +1 -1
- package/dist/safe-bash/commands/record-buffer.js +1 -1
- package/dist/safe-bash/commands/regex-execution/ascii.js +1 -1
- package/dist/safe-bash/commands/regex-execution/bounded-glob.js +1 -1
- package/dist/safe-bash/commands/regex-execution/bounded-provider.js +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/errors.js +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/limits.js +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/matcher.js +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/syntax.js +1 -1
- package/dist/safe-bash/commands/regex-execution/portable.js +1 -1
- package/dist/safe-bash/commands/regex-execution/protocol.js +1 -1
- package/dist/safe-bash/commands/regex-execution/utf8.js +1 -1
- package/dist/safe-bash/commands/rev/index.js +1 -1
- package/dist/safe-bash/commands/rg/index.js +1 -1
- package/dist/safe-bash/commands/rgrep/index.js +1 -1
- package/dist/safe-bash/commands/rsvg-convert/index.js +1 -1
- package/dist/safe-bash/commands/safejs/io.js +1 -1
- package/dist/safe-bash/commands/safejs/options.js +1 -1
- package/dist/safe-bash/commands/safejs/render.js +1 -1
- package/dist/safe-bash/commands/safejs/runtime.js +1 -1
- package/dist/safe-bash/commands/safejs/types.js +1 -1
- package/dist/safe-bash/commands/search/ergonomic-regex.js +1 -1
- package/dist/safe-bash/commands/search/file-types.js +1 -1
- package/dist/safe-bash/commands/search/glob.js +1 -1
- package/dist/safe-bash/commands/search/grep-files.js +1 -1
- package/dist/safe-bash/commands/search/grep.js +1 -1
- package/dist/safe-bash/commands/search/matcher.js +1 -1
- package/dist/safe-bash/commands/search/options.js +1 -1
- package/dist/safe-bash/commands/search/output.js +1 -1
- package/dist/safe-bash/commands/search/requirements.js +1 -1
- package/dist/safe-bash/commands/search/rg-command.js +1 -1
- package/dist/safe-bash/commands/search/shared.js +1 -1
- package/dist/safe-bash/commands/search/walk.js +1 -1
- package/dist/safe-bash/commands/sed/index.js +1 -1
- package/dist/safe-bash/commands/seq/index.js +1 -1
- package/dist/safe-bash/commands/sha1sum/index.js +1 -1
- package/dist/safe-bash/commands/sha256sum/index.js +1 -1
- package/dist/safe-bash/commands/sha512sum/index.js +1 -1
- package/dist/safe-bash/commands/sips/index.js +1 -1
- package/dist/safe-bash/commands/sleep/index.js +1 -1
- package/dist/safe-bash/commands/soffice/index.js +1 -1
- package/dist/safe-bash/commands/sort/index.js +1 -1
- package/dist/safe-bash/commands/sort-admission.js +1 -1
- package/dist/safe-bash/commands/sox/index.js +1 -1
- package/dist/safe-bash/commands/soxi/index.js +1 -1
- package/dist/safe-bash/commands/split/index.js +1 -1
- package/dist/safe-bash/commands/sponge/index.js +1 -1
- package/dist/safe-bash/commands/sqlite3/index.js +1 -1
- package/dist/safe-bash/commands/ssh/index.js +1 -1
- package/dist/safe-bash/commands/stat/index.js +1 -1
- package/dist/safe-bash/commands/stream-format/shared.js +1 -1
- package/dist/safe-bash/commands/stream-inspection/numeric-options.js +1 -1
- package/dist/safe-bash/commands/stream-inspection/shared.js +1 -1
- package/dist/safe-bash/commands/stream-inspection/strings-object.js +1 -1
- package/dist/safe-bash/commands/strings/index.js +1 -1
- package/dist/safe-bash/commands/structured/bytes.js +1 -1
- package/dist/safe-bash/commands/structured/capture.js +1 -1
- package/dist/safe-bash/commands/structured/dates.js +1 -1
- package/dist/safe-bash/commands/structured/delpaths.js +1 -1
- package/dist/safe-bash/commands/structured/formats.js +1 -1
- package/dist/safe-bash/commands/structured/indices.js +1 -1
- package/dist/safe-bash/commands/structured/input.js +1 -1
- package/dist/safe-bash/commands/structured/interpreter.js +1 -1
- package/dist/safe-bash/commands/structured/jq.js +1 -1
- package/dist/safe-bash/commands/structured/limits.js +1 -1
- package/dist/safe-bash/commands/structured/numbers.js +1 -1
- package/dist/safe-bash/commands/structured/parser.js +1 -1
- package/dist/safe-bash/commands/structured/query-core.js +1 -1
- package/dist/safe-bash/commands/structured/recurse.js +1 -1
- package/dist/safe-bash/commands/structured/regex.js +1 -1
- package/dist/safe-bash/commands/structured/split.js +1 -1
- package/dist/safe-bash/commands/structured/splits.js +1 -1
- package/dist/safe-bash/commands/structured/values.js +1 -1
- package/dist/safe-bash/commands/svgo/index.js +1 -1
- package/dist/safe-bash/commands/table-text/internal.js +1 -1
- package/dist/safe-bash/commands/tac/index.js +1 -1
- package/dist/safe-bash/commands/tar/index.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-inspection.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-pipes.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-pretty.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-quote.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-reader.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-retention.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-runtime.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-syntax.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk-values.js +1 -1
- package/dist/safe-bash/commands/text-programs/awk.js +1 -1
- package/dist/safe-bash/commands/text-programs/inplace.js +1 -1
- package/dist/safe-bash/commands/text-programs/regex.js +1 -1
- package/dist/safe-bash/commands/text-programs/replacement-buffer.js +1 -1
- package/dist/safe-bash/commands/text-programs/sed.js +1 -1
- package/dist/safe-bash/commands/text-programs/shared.js +1 -1
- package/dist/safe-bash/commands/time-env/calendar.js +1 -1
- package/dist/safe-bash/commands/time-env/format.js +1 -1
- package/dist/safe-bash/commands/time-env/shared.js +1 -1
- package/dist/safe-bash/commands/timeout/index.js +1 -1
- package/dist/safe-bash/commands/touch/index.js +1 -1
- package/dist/safe-bash/commands/touch-target.js +1 -1
- package/dist/safe-bash/commands/touch-times.js +1 -1
- package/dist/safe-bash/commands/tree/index.js +1 -1
- package/dist/safe-bash/commands/tsort/index.js +1 -1
- package/dist/safe-bash/commands/unalias/index.js +1 -1
- package/dist/safe-bash/commands/uname/index.js +1 -1
- package/dist/safe-bash/commands/unexpand/index.js +1 -1
- package/dist/safe-bash/commands/unix2dos/index.js +1 -1
- package/dist/safe-bash/commands/unrtf/index.js +1 -1
- package/dist/safe-bash/commands/unzip/index.js +1 -1
- package/dist/safe-bash/commands/wdiff/index.js +1 -1
- package/dist/safe-bash/commands/wget/index.js +1 -1
- package/dist/safe-bash/commands/which/index.js +1 -1
- package/dist/safe-bash/commands/whoami/index.js +1 -1
- package/dist/safe-bash/commands/wkhtmltopdf/index.js +1 -1
- package/dist/safe-bash/commands/xan/index.js +1 -1
- package/dist/safe-bash/commands/xml/index.js +1 -1
- package/dist/safe-bash/commands/xmllint/index.js +1 -1
- package/dist/safe-bash/commands/xq/index.js +1 -1
- package/dist/safe-bash/commands/xxd/index.js +1 -1
- package/dist/safe-bash/commands/xz/index.js +1 -1
- package/dist/safe-bash/commands/yq/index.js +1 -1
- package/dist/safe-bash/commands/zip/index.js +1 -1
- package/dist/safe-bash/commands/zstd/index.js +1 -1
- package/dist/safe-bash/core.browser.js +2 -2
- package/dist/safe-bash/full-core.browser.js +29 -7
- package/dist/safe-bash/integrations/safejs/filesystem.js +1 -1
- package/dist/safe-bash/integrations/safejs/shell.js +1 -1
- package/dist/safe-bash/integrations/safejs/values.js +1 -1
- package/dist/safe-bash/playwright/abilities.js +1 -1
- package/dist/safe-bash/playwright/ability-execution.js +1 -1
- package/dist/safe-bash/playwright/adapter.js +1 -1
- package/dist/safe-bash/playwright/builtins.js +1 -1
- package/dist/safe-bash/playwright/canonical-locator-parser.js +1 -1
- package/dist/safe-bash/playwright/capability-events.js +1 -1
- package/dist/safe-bash/playwright/capability-result.js +1 -1
- package/dist/safe-bash/playwright/catalog.js +1 -1
- package/dist/safe-bash/playwright/checkpoint.js +1 -1
- package/dist/safe-bash/playwright/command-budget.js +1 -1
- package/dist/safe-bash/playwright/command-reference.js +1 -1
- package/dist/safe-bash/playwright/config-ini.js +1 -1
- package/dist/safe-bash/playwright/config-json.js +1 -1
- package/dist/safe-bash/playwright/controller.js +1 -1
- package/dist/safe-bash/playwright/devices.js +1 -1
- package/dist/safe-bash/playwright/download-capabilities.js +1 -1
- package/dist/safe-bash/playwright/drop-capability.js +1 -1
- package/dist/safe-bash/playwright/find.js +1 -1
- package/dist/safe-bash/playwright/frame-snapshot.js +1 -1
- package/dist/safe-bash/playwright/generated-locator.js +1 -1
- package/dist/safe-bash/playwright/help-reference.js +1 -1
- package/dist/safe-bash/playwright/help.js +1 -1
- package/dist/safe-bash/playwright/highlight.js +1 -1
- package/dist/safe-bash/playwright/index.js +1 -1
- package/dist/safe-bash/playwright/invocation.js +1 -1
- package/dist/safe-bash/playwright/locator-selector.js +1 -1
- package/dist/safe-bash/playwright/modal-capabilities.js +1 -1
- package/dist/safe-bash/playwright/native-evaluation.js +1 -1
- package/dist/safe-bash/playwright/native-json-snapshot.js +1 -1
- package/dist/safe-bash/playwright/native-snapshot.js +1 -1
- package/dist/safe-bash/playwright/native-storage-realm.js +1 -1
- package/dist/safe-bash/playwright/native-storage-replacement.js +1 -1
- package/dist/safe-bash/playwright/native-storage-sources.generated.js +1 -1
- package/dist/safe-bash/playwright/native-storage-targets.js +1 -1
- package/dist/safe-bash/playwright/network-policy.js +1 -1
- package/dist/safe-bash/playwright/open-options.js +1 -1
- package/dist/safe-bash/playwright/private-target-transport.js +1 -1
- package/dist/safe-bash/playwright/profile.js +1 -1
- package/dist/safe-bash/playwright/recording-capabilities.js +1 -1
- package/dist/safe-bash/playwright/recovery.js +1 -1
- package/dist/safe-bash/playwright/resource-limit.js +1 -1
- package/dist/safe-bash/playwright/response.js +1 -1
- package/dist/safe-bash/playwright/route-capabilities.js +1 -1
- package/dist/safe-bash/playwright/route-policy.js +1 -1
- package/dist/safe-bash/playwright/screenshot.js +1 -1
- package/dist/safe-bash/playwright/session-configuration.js +1 -1
- package/dist/safe-bash/playwright/session-runtime.js +1 -1
- package/dist/safe-bash/playwright/session-selection.js +1 -1
- package/dist/safe-bash/playwright/snapshot-reference-error.js +1 -1
- package/dist/safe-bash/playwright/snapshot.js +1 -1
- package/dist/safe-bash/playwright/standard-capabilities.js +1 -1
- package/dist/safe-bash/playwright/storage-capabilities.js +1 -1
- package/dist/safe-bash/playwright/storage-state.js +1 -1
- package/dist/safe-bash/playwright/target-screenshot.js +1 -1
- package/dist/safe-bash/playwright/targets.js +1 -1
- package/dist/safe-bash/playwright/tracing-capabilities.js +1 -1
- package/dist/safe-bash/playwright/webmcp-capabilities.js +1 -1
- package/dist/safe-bash/playwright/webmcp-params.js +1 -1
- package/dist/safe-bash/playwright/workspace-assets.js +1 -1
- package/dist/safe-bash/playwright/workspace.js +1 -1
- package/dist/safe-bash/plugins/index.browser.js +4 -4
- package/dist/safe-bash/registry-entry.browser.js +2 -2
- package/dist/safe-bash/search.browser.js +1 -1
- package/dist/safe-bash/shell/parser.js +2 -1
- package/dist/safe-bash/shell/pattern.js +1 -1
- package/dist/safe-bash/shell/string-operations.js +1 -1
- package/dist/safe-bash/shell-entry.browser.js +2 -2
- package/dist/safe-bash/ts-ast.js +1 -1
- package/dist/safe-bash-checksum-engine/index.js +1 -1
- package/dist/safe-bash-command-audio/index.js +2 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +2 -2
- package/dist/safe-bash-command-awk/awk-syntax.js +1 -1
- package/dist/safe-bash-command-awk/awk.js +4 -4
- package/dist/safe-bash-command-awk/index.js +4 -4
- package/dist/safe-bash-command-bc/index.js +13 -14
- package/dist/safe-bash-command-cal/index.js +25 -31
- package/dist/safe-bash-command-cp/index.js +3 -3
- package/dist/safe-bash-command-csvgrep/command.d.ts +1 -0
- package/dist/safe-bash-command-csvgrep/index.js +7 -0
- package/dist/safe-bash-command-docx/sdk.js +1 -1
- package/dist/safe-bash-command-expr/bre-engine.js +1 -1
- package/dist/safe-bash-command-factor/command.js +2 -2
- package/dist/safe-bash-command-factor/index.js +2 -2
- package/dist/safe-bash-command-fd/index.js +4 -3
- package/dist/safe-bash-command-ffmpeg/index.js +13 -2
- package/dist/safe-bash-command-ffprobe/index.js +2 -2
- package/dist/safe-bash-command-ffprobe/media.js +2 -2
- package/dist/safe-bash-command-getconf/index.js +11 -4
- package/dist/safe-bash-command-git/git_rust.wasm +0 -0
- package/dist/safe-bash-command-git/index.js +96 -14
- package/dist/safe-bash-command-html-to-markdown/index.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/stored-text.d.ts +2 -0
- package/dist/safe-bash-command-html-to-markdown/stored-text.js +1 -1
- package/dist/safe-bash-command-imagemagick/index.js +18 -4
- package/dist/safe-bash-command-jq/index.js +1 -1
- package/dist/safe-bash-command-jq/jq.js +1 -1
- package/dist/safe-bash-command-llm/collections.js +48 -192
- package/dist/safe-bash-command-llm/command.js +14 -6
- package/dist/safe-bash-command-llm/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/fragment-loaders.d.ts +29 -0
- package/dist/safe-bash-command-llm/fragments.d.ts +24 -0
- package/dist/safe-bash-command-llm/import-json-document.d.ts +5 -2
- package/dist/safe-bash-command-llm/index.d.ts +7 -0
- package/dist/safe-bash-command-llm/index.js +47 -17
- package/dist/safe-bash-command-llm/input-budget.d.ts +2 -0
- package/dist/safe-bash-command-llm/openai-sse.d.ts +1 -1
- package/dist/safe-bash-command-llm/openai-sse.js +4 -1
- package/dist/safe-bash-command-llm/openai.js +11 -7
- package/dist/safe-bash-command-llm/providers/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/providers/index.js +16 -10
- package/dist/safe-bash-command-llm/providers/openai.js +11 -7
- package/dist/safe-bash-command-llm/providers/shared.d.ts +2 -0
- package/dist/safe-bash-command-llm/providers/shared.js +1 -1
- package/dist/safe-bash-command-llm/retained-spool.d.ts +4 -0
- package/dist/safe-bash-command-llm/service.d.ts +3 -1
- package/dist/safe-bash-command-llm/service.js +5 -2
- package/dist/safe-bash-command-llm/tool-chain.d.ts +22 -0
- package/dist/safe-bash-command-llm/tool-execution.d.ts +55 -0
- package/dist/safe-bash-command-llm/tool-registry.d.ts +43 -0
- package/dist/safe-bash-command-llm/types.d.ts +39 -11
- package/dist/safe-bash-command-llm/url-fragment-source.d.ts +6 -0
- package/dist/safe-bash-command-llm/url-source.d.ts +3 -1
- package/dist/safe-bash-command-mcp/index.browser.d.ts +1 -0
- package/dist/safe-bash-command-mcp/index.browser.js +4 -4
- package/dist/safe-bash-command-mcp/index.d.ts +1 -0
- package/dist/safe-bash-command-mcp/index.js +28 -7
- package/dist/safe-bash-command-mdq/index.js +10 -3
- package/dist/safe-bash-command-node/commands/node/quickjs.js +1 -1
- package/dist/safe-bash-command-pandoc/command.js +9 -9
- package/dist/safe-bash-command-pandoc/index.js +57 -57
- package/dist/safe-bash-command-pandoc/lua-filters.js +1 -1
- package/dist/safe-bash-command-patch/index.js +5 -5
- package/dist/safe-bash-command-patch/patch-publication.js +1 -1
- package/dist/safe-bash-command-patch/patch.js +4 -4
- package/dist/safe-bash-command-pdfinfo/index.js +2 -2
- package/dist/safe-bash-command-pdftk/index.js +550 -137
- package/dist/safe-bash-command-pdftoppm/index.js +1 -1
- package/dist/safe-bash-command-pdftotext/index.js +29 -15
- package/dist/safe-bash-command-playwright-cli/index.js +12 -11
- package/dist/safe-bash-command-playwright-cli/playwright/abilities.js +4 -4
- package/dist/safe-bash-command-playwright-cli/playwright/controller.js +7 -6
- package/dist/safe-bash-command-playwright-cli/playwright/index.js +12 -11
- package/dist/safe-bash-command-playwright-cli/playwright/profile.d.ts +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/profile.js +2 -1
- package/dist/safe-bash-command-playwright-cli/playwright/standard-capabilities.js +3 -3
- package/dist/safe-bash-command-pptx/engine.js +2 -2
- package/dist/safe-bash-command-python/executor.d.ts +1 -0
- package/dist/safe-bash-command-python/executor.js +16 -14
- package/dist/safe-bash-command-python/index.js +16 -14
- package/dist/safe-bash-command-python/jspi.js +1 -1
- package/dist/safe-bash-command-python/llm-capability.js +1 -1
- package/dist/safe-bash-command-python/llm-functions-loader.d.ts +5 -0
- package/dist/safe-bash-command-python/llm-packages.js +51 -2
- package/dist/safe-bash-command-python/llm-provider.js +1 -1
- package/dist/safe-bash-command-rg/glob.d.ts +6 -0
- package/dist/safe-bash-command-rg/glob.js +2 -2
- package/dist/safe-bash-command-rg/index.js +8 -8
- package/dist/safe-bash-command-rg/matcher.d.ts +2 -0
- package/dist/safe-bash-command-rg/matcher.js +2 -2
- package/dist/safe-bash-command-rg/options.d.ts +2 -0
- package/dist/safe-bash-command-rg/options.js +1 -1
- package/dist/safe-bash-command-rg/output.js +3 -3
- package/dist/safe-bash-command-rg/replacement.js +2 -2
- package/dist/safe-bash-command-rg/rg-command.js +8 -8
- package/dist/safe-bash-command-rg/shared.d.ts +0 -2
- package/dist/safe-bash-command-rg/shared.js +2 -4
- package/dist/safe-bash-command-rg/walk.js +4 -4
- package/dist/safe-bash-command-safejs/index.js +4 -4
- package/dist/safe-bash-command-safejs/runtime.js +2 -2
- package/dist/safe-bash-command-soffice/index.js +2 -2
- package/dist/safe-bash-command-sqlite3/engine.d.ts +15 -0
- package/dist/safe-bash-command-sqlite3/index.js +310 -15
- package/dist/safe-bash-command-ssconvert/index.js +2 -2
- package/dist/safe-bash-command-tar/create.js +2 -2
- package/dist/safe-bash-command-tar/extract.js +2 -2
- package/dist/safe-bash-command-tar/index.js +6 -6
- package/dist/safe-bash-command-tar/modes.js +4 -4
- package/dist/safe-bash-command-unzip/index.js +2 -2
- package/dist/safe-bash-command-unzip/unzip.js +2 -2
- package/dist/safe-bash-command-yq/parser.js +1 -1
- package/dist/safe-bash-command-yq/query.js +1 -1
- package/dist/safe-bash-contracts/escaping.js +2 -2
- package/dist/safe-bash-contracts/index.js +15 -15
- package/dist/safe-bash-csv-engine/index.js +5 -3
- package/dist/safe-bash-csv-engine/python-codepages.js +2 -1
- package/dist/safe-bash-csv-engine/python-file-codepages.d.ts +1 -0
- package/dist/safe-bash-csv-engine/python-file-codepages.js +8 -0
- package/dist/safe-bash-csv-engine/python-utf16.js +3 -2
- package/dist/safe-bash-csv-engine/text-decoder.js +5 -3
- package/dist/safe-bash-docx-engine/ancillary-resources.js +4 -4
- package/dist/safe-bash-docx-engine/batch-operations.js +45 -45
- package/dist/safe-bash-docx-engine/batch-result-schema.js +52 -52
- package/dist/safe-bash-docx-engine/batch.js +52 -52
- package/dist/safe-bash-docx-engine/bookmarks.js +10 -10
- package/dist/safe-bash-docx-engine/charts.js +5 -5
- package/dist/safe-bash-docx-engine/command-option-rules.js +1 -1
- package/dist/safe-bash-docx-engine/comments.js +14 -14
- package/dist/safe-bash-docx-engine/control-bindings.js +12 -12
- package/dist/safe-bash-docx-engine/control-repeat.js +11 -11
- package/dist/safe-bash-docx-engine/controls.js +10 -10
- package/dist/safe-bash-docx-engine/create.js +4 -4
- package/dist/safe-bash-docx-engine/diagrams.js +5 -5
- package/dist/safe-bash-docx-engine/diff.js +4 -4
- package/dist/safe-bash-docx-engine/document-properties.js +11 -11
- package/dist/safe-bash-docx-engine/equations.js +11 -11
- package/dist/safe-bash-docx-engine/extract.js +9 -9
- package/dist/safe-bash-docx-engine/fields.js +11 -11
- package/dist/safe-bash-docx-engine/font-inventory.js +8 -8
- package/dist/safe-bash-docx-engine/font-resources.js +1 -1
- package/dist/safe-bash-docx-engine/image-batch-operations.js +1 -1
- package/dist/safe-bash-docx-engine/image-insertion.js +13 -13
- package/dist/safe-bash-docx-engine/image-layout.js +12 -12
- package/dist/safe-bash-docx-engine/image-replacement.js +13 -13
- package/dist/safe-bash-docx-engine/images.js +12 -12
- package/dist/safe-bash-docx-engine/index.js +100 -100
- package/dist/safe-bash-docx-engine/inspection.js +11 -11
- package/dist/safe-bash-docx-engine/invocation.js +1 -1
- package/dist/safe-bash-docx-engine/io.js +1 -1
- package/dist/safe-bash-docx-engine/links.js +11 -11
- package/dist/safe-bash-docx-engine/lists.js +11 -11
- package/dist/safe-bash-docx-engine/locations.js +5 -5
- package/dist/safe-bash-docx-engine/notes.js +12 -12
- package/dist/safe-bash-docx-engine/objects.js +12 -12
- package/dist/safe-bash-docx-engine/pack.js +9 -9
- package/dist/safe-bash-docx-engine/package-view-batch-operations.js +8 -8
- package/dist/safe-bash-docx-engine/pandoc-adapter.js +9 -9
- package/dist/safe-bash-docx-engine/paragraph-edit.js +15 -15
- package/dist/safe-bash-docx-engine/publication.js +3 -3
- package/dist/safe-bash-docx-engine/removal.js +11 -11
- package/dist/safe-bash-docx-engine/revision-decisions.js +13 -13
- package/dist/safe-bash-docx-engine/revision-edit.js +10 -10
- package/dist/safe-bash-docx-engine/revisions.js +8 -8
- package/dist/safe-bash-docx-engine/run-format.js +10 -10
- package/dist/safe-bash-docx-engine/sanitize.js +20 -20
- package/dist/safe-bash-docx-engine/sections.js +10 -10
- package/dist/safe-bash-docx-engine/settings.js +6 -6
- package/dist/safe-bash-docx-engine/shape-edit.js +12 -12
- package/dist/safe-bash-docx-engine/signatures.js +11 -11
- package/dist/safe-bash-docx-engine/stories.js +12 -12
- package/dist/safe-bash-docx-engine/structure-model-batch-operations.js +17 -17
- package/dist/safe-bash-docx-engine/style-model-batch-operations.js +11 -11
- package/dist/safe-bash-docx-engine/style-model-result-schema.js +20 -20
- package/dist/safe-bash-docx-engine/styles.js +10 -10
- package/dist/safe-bash-docx-engine/table-edit.js +16 -16
- package/dist/safe-bash-docx-engine/table-read.js +6 -6
- package/dist/safe-bash-docx-engine/template.js +12 -12
- package/dist/safe-bash-docx-engine/text-replace.js +10 -10
- package/dist/safe-bash-docx-engine/text-resource-read.js +6 -6
- package/dist/safe-bash-docx-engine/text.js +6 -6
- package/dist/safe-bash-docx-engine/validation.js +1 -1
- package/dist/safe-bash-docx-engine/xml-parts.js +14 -14
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +4 -4
- package/dist/safe-bash-line-ending-engine/command.js +4 -4
- package/dist/safe-bash-line-ending-engine/index.js +4 -4
- package/dist/safe-bash-markdown-engine/commonmark-blocks.js +1 -1
- package/dist/safe-bash-markdown-engine/index.js +3 -3
- package/dist/safe-bash-network-engine/index.js +4 -4
- package/dist/safe-bash-pptx-engine/bytes.js +1 -1
- package/dist/safe-bash-pptx-engine/index.js +1 -1
- package/dist/safe-bash-presentation-engine/accessibility.js +33 -31
- package/dist/safe-bash-presentation-engine/animation-editing.js +17 -16
- package/dist/safe-bash-presentation-engine/animations.js +17 -16
- package/dist/safe-bash-presentation-engine/backgrounds.js +18 -17
- package/dist/safe-bash-presentation-engine/bytes.js +4 -4
- package/dist/safe-bash-presentation-engine/chart-editing.js +36 -34
- package/dist/safe-bash-presentation-engine/chart-object-operations.js +26 -25
- package/dist/safe-bash-presentation-engine/charts.js +33 -31
- package/dist/safe-bash-presentation-engine/command-placeholder.js +63 -61
- package/dist/safe-bash-presentation-engine/comments.js +18 -17
- package/dist/safe-bash-presentation-engine/connector-operations.js +34 -32
- package/dist/safe-bash-presentation-engine/connectors.js +31 -29
- package/dist/safe-bash-presentation-engine/content-types.js +5 -5
- package/dist/safe-bash-presentation-engine/creation.js +7 -7
- package/dist/safe-bash-presentation-engine/diff.js +40 -38
- package/dist/safe-bash-presentation-engine/drawing-format.js +21 -20
- package/dist/safe-bash-presentation-engine/drawing-operations.js +33 -31
- package/dist/safe-bash-presentation-engine/drawing-schema.js +22 -21
- package/dist/safe-bash-presentation-engine/equations.js +18 -17
- package/dist/safe-bash-presentation-engine/errors.js +3 -3
- package/dist/safe-bash-presentation-engine/fields.js +18 -17
- package/dist/safe-bash-presentation-engine/font-metrics.js +4 -4
- package/dist/safe-bash-presentation-engine/image-extraction.js +23 -21
- package/dist/safe-bash-presentation-engine/image-formatting.js +35 -33
- package/dist/safe-bash-presentation-engine/image-insertion.js +20 -19
- package/dist/safe-bash-presentation-engine/image-metadata.d.ts +7 -1
- package/dist/safe-bash-presentation-engine/image-metadata.js +5 -3
- package/dist/safe-bash-presentation-engine/image-replacement.js +24 -22
- package/dist/safe-bash-presentation-engine/image-value.js +6 -6
- package/dist/safe-bash-presentation-engine/images.d.ts +1 -0
- package/dist/safe-bash-presentation-engine/images.js +24 -20
- package/dist/safe-bash-presentation-engine/index.js +141 -137
- package/dist/safe-bash-presentation-engine/layouts.js +17 -16
- package/dist/safe-bash-presentation-engine/length.js +4 -4
- package/dist/safe-bash-presentation-engine/links.js +17 -16
- package/dist/safe-bash-presentation-engine/masters.js +16 -15
- package/dist/safe-bash-presentation-engine/media-editing.js +30 -25
- package/dist/safe-bash-presentation-engine/media-extraction.d.ts +4 -0
- package/dist/safe-bash-presentation-engine/media-extraction.js +33 -19
- package/dist/safe-bash-presentation-engine/media.d.ts +2 -0
- package/dist/safe-bash-presentation-engine/media.js +32 -18
- package/dist/safe-bash-presentation-engine/memberships.js +19 -17
- package/dist/safe-bash-presentation-engine/notes.js +20 -18
- package/dist/safe-bash-presentation-engine/ole-enum.js +5 -5
- package/dist/safe-bash-presentation-engine/ole-insertion.js +22 -21
- package/dist/safe-bash-presentation-engine/opaque-objects.d.ts +4 -0
- package/dist/safe-bash-presentation-engine/opaque-objects.js +30 -12
- package/dist/safe-bash-presentation-engine/package-reader.js +6 -6
- package/dist/safe-bash-presentation-engine/package-tools.js +24 -20
- package/dist/safe-bash-presentation-engine/package-uri.js +4 -4
- package/dist/safe-bash-presentation-engine/package-writer.js +5 -5
- package/dist/safe-bash-presentation-engine/presentation-model.js +62 -60
- package/dist/safe-bash-presentation-engine/presentation-settings.js +19 -17
- package/dist/safe-bash-presentation-engine/properties.js +21 -19
- package/dist/safe-bash-presentation-engine/relationships.js +5 -5
- package/dist/safe-bash-presentation-engine/resource-limits.js +2 -2
- package/dist/safe-bash-presentation-engine/retained-extraction-output.d.ts +8 -4
- package/dist/safe-bash-presentation-engine/retained-fonts.d.ts +26 -0
- package/dist/safe-bash-presentation-engine/retained-image-metadata.d.ts +13 -0
- package/dist/safe-bash-presentation-engine/retained-inspection.js +16 -14
- package/dist/safe-bash-presentation-engine/retained-media-extraction.d.ts +21 -0
- package/dist/safe-bash-presentation-engine/retained-media.d.ts +54 -0
- package/dist/safe-bash-presentation-engine/retained-object-extraction.d.ts +22 -0
- package/dist/safe-bash-presentation-engine/retained-objects.d.ts +25 -0
- package/dist/safe-bash-presentation-engine/retained-package.js +6 -6
- package/dist/safe-bash-presentation-engine/retained-shape-geometry.d.ts +20 -0
- package/dist/safe-bash-presentation-engine/retained-text.js +34 -32
- package/dist/safe-bash-presentation-engine/retained-transitions.d.ts +18 -0
- package/dist/safe-bash-presentation-engine/sanitize.js +22 -20
- package/dist/safe-bash-presentation-engine/selectors.js +11 -11
- package/dist/safe-bash-presentation-engine/shape-groups.js +33 -31
- package/dist/safe-bash-presentation-engine/shape-operations.js +32 -30
- package/dist/safe-bash-presentation-engine/shape-path-operations.js +34 -32
- package/dist/safe-bash-presentation-engine/shape-paths.js +17 -16
- package/dist/safe-bash-presentation-engine/shape-presets.js +4 -4
- package/dist/safe-bash-presentation-engine/shape-selection.js +33 -31
- package/dist/safe-bash-presentation-engine/shape-transforms.d.ts +6 -0
- package/dist/safe-bash-presentation-engine/shape-transforms.js +26 -20
- package/dist/safe-bash-presentation-engine/shapes.js +28 -27
- package/dist/safe-bash-presentation-engine/slide-copy.js +21 -19
- package/dist/safe-bash-presentation-engine/slide-import.js +19 -18
- package/dist/safe-bash-presentation-engine/slide-merge-split.js +21 -20
- package/dist/safe-bash-presentation-engine/slide-model.js +46 -44
- package/dist/safe-bash-presentation-engine/slide-removal.js +19 -18
- package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +10 -10
- package/dist/safe-bash-presentation-engine/slides.js +21 -19
- package/dist/safe-bash-presentation-engine/table-operations.js +35 -33
- package/dist/safe-bash-presentation-engine/table-spans.js +34 -32
- package/dist/safe-bash-presentation-engine/tables.js +33 -31
- package/dist/safe-bash-presentation-engine/tags.js +20 -18
- package/dist/safe-bash-presentation-engine/template-bindings.js +36 -34
- package/dist/safe-bash-presentation-engine/template-repeat.js +46 -43
- package/dist/safe-bash-presentation-engine/text-fitting.js +28 -27
- package/dist/safe-bash-presentation-engine/text-frames.js +28 -27
- package/dist/safe-bash-presentation-engine/text-paragraphs.js +28 -27
- package/dist/safe-bash-presentation-engine/text-reading.js +12 -12
- package/dist/safe-bash-presentation-engine/text-replacement.js +18 -17
- package/dist/safe-bash-presentation-engine/text-runs.js +21 -20
- package/dist/safe-bash-presentation-engine/themes.js +17 -16
- package/dist/safe-bash-presentation-engine/transitions.d.ts +1 -0
- package/dist/safe-bash-presentation-engine/transitions.js +24 -16
- package/dist/safe-bash-presentation-engine/validation.js +11 -10
- package/dist/safe-bash-presentation-engine/xml-parts.js +21 -19
- package/dist/safe-bash-presentation-engine/xml-view.js +4 -4
- package/dist/safe-bash-presentation-engine/xml.js +4 -4
- package/dist/safe-bash-query-engine/capture.js +5 -5
- package/dist/safe-bash-query-engine/dates.js +2 -2
- package/dist/safe-bash-query-engine/delpaths.js +5 -5
- package/dist/safe-bash-query-engine/formats.js +3 -3
- package/dist/safe-bash-query-engine/index.js +15 -15
- package/dist/safe-bash-query-engine/indices.js +5 -5
- package/dist/safe-bash-query-engine/input.js +2 -2
- package/dist/safe-bash-query-engine/interpreter.d.ts +2 -1
- package/dist/safe-bash-query-engine/interpreter.js +13 -13
- package/dist/safe-bash-query-engine/limits.d.ts +1 -0
- package/dist/safe-bash-query-engine/limits.js +1 -1
- package/dist/safe-bash-query-engine/parser.js +2 -2
- package/dist/safe-bash-query-engine/query-core.js +15 -15
- package/dist/safe-bash-query-engine/recurse.js +2 -2
- package/dist/safe-bash-query-engine/regex.js +6 -6
- package/dist/safe-bash-query-engine/split.js +2 -2
- package/dist/safe-bash-query-engine/splits.js +7 -7
- package/dist/safe-bash-query-engine/values.js +4 -4
- package/dist/safe-bash-regex-engine/ere/matcher.d.ts +1 -1
- package/dist/safe-bash-regex-engine/ere/matcher.js +18 -10
- package/dist/safe-bash-regex-engine/ere/syntax.d.ts +1 -1
- package/dist/safe-bash-regex-engine/ere/syntax.js +1 -1
- package/dist/safe-bash-regex-engine/ere/types.d.ts +1 -0
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +5 -6
- package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +1 -0
- package/dist/safe-bash-search-engine/ergonomic-regex.js +2 -2
- package/dist/safe-bash-sqlite-engine/sqlite-read-session.d.ts +17 -0
- package/dist/safe-bash-sqlite-engine/storage.d.ts +1 -0
- package/dist/safe-bash-sqlite-engine/storage.js +159 -89
- package/dist/safe-bash-xml-engine/document.js +3 -3
- package/dist/safe-bash-xml-engine/evaluate.js +1 -1
- package/dist/safe-bash-xml-engine/index.js +4 -4
- package/dist/safe-bash-xml-engine/json.js +14 -7
- package/dist/safe-bash-xml-engine/query.js +2 -2
- package/dist/safe-bash-xml-engine/recovery.d.ts +8 -2
- package/dist/safe-bash-xml-engine/stored-document.d.ts +16 -2
- package/dist/safe-bash-xml-engine/stored-document.js +1 -1
- package/dist/safe-bash-xml-engine/stored-evaluate.js +5 -5
- package/dist/safe-bash-xml-engine/stored-map.d.ts +18 -4
- package/dist/safe-playwright-cloudflare/browser-provider.generated.js +11819 -11773
- package/dist/safe-playwright-cloudflare/browser-run-code-guest.generated.js +1 -1
- package/dist/spreadsheet-engine/formulas/functions/python-printf.js +7 -3
- package/package.json +4 -3
- package/dist/safe-bash/chunks/chunk-FL6XE3W4.js +0 -35
- package/dist/safe-bash/command-chunks/chunk-ADVQZLLE.js +0 -260
- package/dist/safe-bash/command-chunks/chunk-AEZU6NZE.js +0 -297
- package/dist/safe-bash/command-chunks/chunk-BQXKO3X7.js +0 -228
- package/dist/safe-bash/command-chunks/chunk-CZSLXQU2.js +0 -107
- package/dist/safe-bash/command-chunks/chunk-KSM5CCHT.js +0 -1850
- package/dist/safe-bash/command-chunks/chunk-R2N3E267.js +0 -144
- package/dist/safe-bash/command-chunks/chunk-UPXFSGQG.js +0 -134
- package/dist/safe-bash/command-chunks/chunk-WKUV62RJ.js +0 -92
- package/dist/safe-bash/command-chunks/chunk-Z3PGWMSQ.js +0 -63
- package/dist/safe-bash/command-chunks/paradox-4FCZE53D-LQPGVMEL.js +0 -365
- package/dist/safe-bash/command-chunks/{biff-AYJZR2YV-JPESBEOO.js → biff-AYJZR2YV-YFF3BK43.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-WKU65Z3Q.js → chunk-3NJETNC2.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-WRJV7OVO.js → chunk-42OQIFPW.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-XLPEPCQC.js → chunk-45QE6QRR.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-MWVELMXZ.js → chunk-BFOVQUTF.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-ETN25WCR.js → chunk-KD4JUF6R.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-LTWX23FS.js → chunk-QQ7ORF2D.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-FPNUGKCX.js → chunk-QWHBQBPB.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-5MFRN3CB.js → chunk-R64BI5MT.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-A32ZROH5.js → chunk-SMCRKN3O.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-RXXNLH7A.js → chunk-ZSQCROFE.js} +3 -3
|
@@ -0,0 +1,1016 @@
|
|
|
1
|
+
import {
|
|
2
|
+
openRetainedPresentationIndex
|
|
3
|
+
} from "./chunk-LZHFVNEV.js";
|
|
4
|
+
import {
|
|
5
|
+
rawJson,
|
|
6
|
+
stageRetainedOutput,
|
|
7
|
+
streamJson
|
|
8
|
+
} from "./chunk-R36PDP3L.js";
|
|
9
|
+
import {
|
|
10
|
+
RetainedOrder
|
|
11
|
+
} from "./chunk-7JTJQKIV.js";
|
|
12
|
+
import {
|
|
13
|
+
attr
|
|
14
|
+
} from "./chunk-UDRJKA3P.js";
|
|
15
|
+
import {
|
|
16
|
+
SelectionError,
|
|
17
|
+
readSelectionIndex
|
|
18
|
+
} from "./chunk-SKF6PGA5.js";
|
|
19
|
+
import {
|
|
20
|
+
readPackage
|
|
21
|
+
} from "./chunk-KVTZJBLM.js";
|
|
22
|
+
import {
|
|
23
|
+
dialects,
|
|
24
|
+
openRetainedCompatibility
|
|
25
|
+
} from "./chunk-P3LHQOX7.js";
|
|
26
|
+
import {
|
|
27
|
+
equationOpaqueElements,
|
|
28
|
+
interpretCompatibility
|
|
29
|
+
} from "./chunk-PNOXBL2B.js";
|
|
30
|
+
import {
|
|
31
|
+
parseXmlPart
|
|
32
|
+
} from "./chunk-YWP62BAZ.js";
|
|
33
|
+
import {
|
|
34
|
+
readBinary
|
|
35
|
+
} from "./chunk-S5MBHFLB.js";
|
|
36
|
+
import {
|
|
37
|
+
OfficeError,
|
|
38
|
+
RetainedValues,
|
|
39
|
+
equal,
|
|
40
|
+
literal,
|
|
41
|
+
openRetainedXmlDocument,
|
|
42
|
+
resolveOfficeResources
|
|
43
|
+
} from "./chunk-VJQ5OWS5.js";
|
|
44
|
+
|
|
45
|
+
// packages/safe-bash-presentation-engine/src/media.ts
|
|
46
|
+
import { sha1 as sha12 } from "@noble/hashes/legacy.js";
|
|
47
|
+
|
|
48
|
+
// packages/safe-bash-presentation-engine/src/retained-media.ts
|
|
49
|
+
import { PagedStorage } from "@poe-platform/safe-fs/storage";
|
|
50
|
+
import { sha1 } from "@noble/hashes/legacy.js";
|
|
51
|
+
var mediaNamespace = "http://schemas.microsoft.com/office/powerpoint/2010/main";
|
|
52
|
+
var mediaRelationship = "http://schemas.microsoft.com/office/2007/relationships/media";
|
|
53
|
+
var tracksNamespace = "http://schemas.microsoft.com/office/powerpoint/2017/3/main";
|
|
54
|
+
async function* joined(...sources) {
|
|
55
|
+
for (const source of sources) yield* source;
|
|
56
|
+
}
|
|
57
|
+
async function relationshipKind(edge) {
|
|
58
|
+
for (const kind of ["audio", "video"])
|
|
59
|
+
for (const d of dialects) if (await equal(edge.type(), literal(d.r + "/" + kind))) return kind;
|
|
60
|
+
return await equal(edge.type(), literal(mediaRelationship)) ? "unknown" : null;
|
|
61
|
+
}
|
|
62
|
+
var RetainedMediaSelectionError = class extends OfficeError {
|
|
63
|
+
constructor(code, candidates, close) {
|
|
64
|
+
super(code, new SelectionError(code).message, "select");
|
|
65
|
+
this.candidates = candidates;
|
|
66
|
+
this.close = close;
|
|
67
|
+
}
|
|
68
|
+
candidates;
|
|
69
|
+
close;
|
|
70
|
+
};
|
|
71
|
+
async function openRetainedMedia(archive, fingerprint, input, settings) {
|
|
72
|
+
validateMediaOptions(input);
|
|
73
|
+
const options = { ...input };
|
|
74
|
+
const context = { ...resolveOfficeResources(settings), workingStorage: { ...settings.workingStorage } }, signal = context.signal ?? new AbortController().signal;
|
|
75
|
+
const index = await openRetainedPresentationIndex(archive, fingerprint, context);
|
|
76
|
+
const storage = () => new PagedStorage(
|
|
77
|
+
{ fs: context.workingStorage.fs, cwd: context.workingStorage.directory, env: {}, signal },
|
|
78
|
+
(context.workingStorage.cacheBytes ?? 1024 * 1024) / 16384
|
|
79
|
+
);
|
|
80
|
+
const pages = storage(), outputPages = storage();
|
|
81
|
+
let closed = false, closing, head = 0, tail = 0, resourceHead = 0, resourceTail = 0, mediaHead = 0, mediaTail = 0, count = 0;
|
|
82
|
+
const check = () => {
|
|
83
|
+
if (closed) throw new OfficeError("invalid-handle", "Media inventory is closed.", "index");
|
|
84
|
+
if (signal.aborted) throw new OfficeError("cancelled", "Operation cancelled.", "index");
|
|
85
|
+
};
|
|
86
|
+
const close = () => {
|
|
87
|
+
closed = true;
|
|
88
|
+
return closing ??= (async () => {
|
|
89
|
+
const results = await Promise.allSettled([index.close(), pages.close(), outputPages.close()]);
|
|
90
|
+
for (const result of results) if (result.status === "rejected") throw result.reason;
|
|
91
|
+
})();
|
|
92
|
+
};
|
|
93
|
+
const failure = (error) => error instanceof OfficeError ? error : new OfficeError(
|
|
94
|
+
signal.aborted ? "cancelled" : "io-failure",
|
|
95
|
+
"Media storage operation failed.",
|
|
96
|
+
"index"
|
|
97
|
+
);
|
|
98
|
+
const values = new RetainedValues(pages, check, signal), output = new RetainedValues(outputPages, check, signal);
|
|
99
|
+
const owners = new RetainedOrder(pages, values, check), mediaParts = new RetainedOrder(pages, values, check);
|
|
100
|
+
async function text(range) {
|
|
101
|
+
let value = "";
|
|
102
|
+
const decoder = new TextDecoder();
|
|
103
|
+
for await (const bytes of values.read(range)) value += decoder.decode(bytes, { stream: true });
|
|
104
|
+
return value + decoder.decode();
|
|
105
|
+
}
|
|
106
|
+
async function write(pointer, row2) {
|
|
107
|
+
const bytes = new Uint8Array(row2.length * 8), view = new DataView(bytes.buffer);
|
|
108
|
+
row2.forEach((n, i) => view.setFloat64(i * 8, n, true));
|
|
109
|
+
await pages.write(pointer, bytes);
|
|
110
|
+
}
|
|
111
|
+
async function row(pointer, length) {
|
|
112
|
+
check();
|
|
113
|
+
const bytes = await pages.read(pointer, length * 8), view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
114
|
+
return Array.from({ length }, (_, i) => view.getFloat64(i * 8, true));
|
|
115
|
+
}
|
|
116
|
+
async function mark(scope, key) {
|
|
117
|
+
const stored = await values.store(key);
|
|
118
|
+
return values.insert(scope, stored, stored);
|
|
119
|
+
}
|
|
120
|
+
async function part(source) {
|
|
121
|
+
const stored = await values.find("parts", source);
|
|
122
|
+
return stored ? JSON.parse(await text(stored)) : void 0;
|
|
123
|
+
}
|
|
124
|
+
const content = (info) => info.contentType ? () => values.read(info.contentType) : null;
|
|
125
|
+
let selectedObjects = false;
|
|
126
|
+
try {
|
|
127
|
+
for await (const info of index.inventory.parts) {
|
|
128
|
+
const type = info.contentType ? await values.store(info.contentType()) : null;
|
|
129
|
+
const key = await values.store(literal(info.part)), value = await values.store(literal(JSON.stringify({ ...info, contentType: type })));
|
|
130
|
+
await values.insert("parts", key, value);
|
|
131
|
+
}
|
|
132
|
+
if (options.select)
|
|
133
|
+
for await (const record of index.records.select({ token: options.select })) {
|
|
134
|
+
await mark("selectedPart", literal(record.part));
|
|
135
|
+
await mark(
|
|
136
|
+
record.kind === "object" ? "selectedObject" : "selectedWhole",
|
|
137
|
+
literal(record.kind === "object" ? record.part + "\0" + record.id : record.part)
|
|
138
|
+
);
|
|
139
|
+
selectedObjects ||= record.kind === "object";
|
|
140
|
+
}
|
|
141
|
+
async function related(owner, type, visit) {
|
|
142
|
+
for await (const edge of index.graph.outgoing(owner))
|
|
143
|
+
if (!edge.external && edge.targetPart) {
|
|
144
|
+
let match = false;
|
|
145
|
+
for (const d of dialects)
|
|
146
|
+
if (await equal(edge.type(), literal(d.r + "/" + type))) match = true;
|
|
147
|
+
if (match) {
|
|
148
|
+
const info = await part(edge.targetPart);
|
|
149
|
+
if (info) await visit(info.part);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
for await (const slide of index.inventory.slides) {
|
|
154
|
+
const key = await values.store(literal(slide.part));
|
|
155
|
+
await values.insert("slideOrder", key, { start: slide.position, length: 0 });
|
|
156
|
+
if (options.slide === slide.position) {
|
|
157
|
+
for (const name of [slide.part, slide.layout, slide.master])
|
|
158
|
+
if (name) await mark("allowedPart", literal(name));
|
|
159
|
+
await related(slide.part, "notesSlide", async (notes) => {
|
|
160
|
+
await mark("allowedPart", literal(notes));
|
|
161
|
+
await related(notes, "notesMaster", async (master) => {
|
|
162
|
+
await mark("allowedPart", literal(master));
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
for await (const owner of index.records.records("part")) {
|
|
168
|
+
if (owner.scope === "shared") continue;
|
|
169
|
+
if (options.select ? !await values.find("selectedPart", () => literal(owner.part)) : options.scope !== "shared" && owner.scope !== (options.scope ?? "slides"))
|
|
170
|
+
continue;
|
|
171
|
+
if (options.slide !== void 0 && !await values.find("allowedPart", () => literal(owner.part)))
|
|
172
|
+
continue;
|
|
173
|
+
await mark("owners", literal(owner.part));
|
|
174
|
+
const order = (await values.find("slideOrder", () => literal(owner.part)))?.start ?? Number.MAX_SAFE_INTEGER;
|
|
175
|
+
const stored = await values.store(literal(JSON.stringify({ ...owner, name: void 0 })));
|
|
176
|
+
await owners.add(literal(String(order).padStart(16, "0") + owner.part), stored);
|
|
177
|
+
}
|
|
178
|
+
await owners.seal();
|
|
179
|
+
if (options.shape !== void 0) {
|
|
180
|
+
let matches = 0;
|
|
181
|
+
for await (const record of index.records.records("object"))
|
|
182
|
+
if (await values.find("owners", () => literal(record.part)) && await equal(record.name(), literal(options.shape))) {
|
|
183
|
+
matches++;
|
|
184
|
+
}
|
|
185
|
+
if (matches !== 1)
|
|
186
|
+
throw new RetainedMediaSelectionError(
|
|
187
|
+
matches ? "ambiguous-selection" : "missing-selection",
|
|
188
|
+
async function* () {
|
|
189
|
+
for await (const record of index.records.records("object"))
|
|
190
|
+
if (await values.find("owners", () => literal(record.part)) && await equal(record.name(), literal(options.shape)))
|
|
191
|
+
yield record.location;
|
|
192
|
+
},
|
|
193
|
+
close
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
async function addOccurrence(id, location, sourcePart, shapeId, shapeName, kind, relationships2, posters, playback, captions, timing) {
|
|
197
|
+
const storedId = await values.store(id());
|
|
198
|
+
let embedded = 0, linked = 0;
|
|
199
|
+
for await (const ref of relationships2()) {
|
|
200
|
+
const resource = ref.mediaPart ? await part(ref.mediaPart) : void 0;
|
|
201
|
+
const metadata = await values.store(
|
|
202
|
+
literal(
|
|
203
|
+
JSON.stringify({
|
|
204
|
+
external: ref.external,
|
|
205
|
+
part: resource?.part ?? null,
|
|
206
|
+
contentType: resource?.contentType ?? null,
|
|
207
|
+
bytes: ref.bytes,
|
|
208
|
+
sha256: ref.sha256
|
|
209
|
+
})
|
|
210
|
+
)
|
|
211
|
+
);
|
|
212
|
+
const resourcePointer = pages.allocate(48);
|
|
213
|
+
await write(resourcePointer, [
|
|
214
|
+
0,
|
|
215
|
+
count + 1,
|
|
216
|
+
storedId.start,
|
|
217
|
+
storedId.length,
|
|
218
|
+
metadata.start,
|
|
219
|
+
metadata.length
|
|
220
|
+
]);
|
|
221
|
+
if (resourceTail) await write(resourceTail, [resourcePointer]);
|
|
222
|
+
else resourceHead = resourcePointer;
|
|
223
|
+
resourceTail = resourcePointer;
|
|
224
|
+
if (ref.external) linked++;
|
|
225
|
+
else embedded++;
|
|
226
|
+
if (ref.mediaPart) {
|
|
227
|
+
const info = await part(ref.mediaPart);
|
|
228
|
+
if (!info) continue;
|
|
229
|
+
const key = await values.store(literal(info.part));
|
|
230
|
+
if (await values.insert("media", key, key)) await mediaParts.add(literal(info.part), key);
|
|
231
|
+
if (await values.insert("occurrence:" + info.part, storedId, storedId)) {
|
|
232
|
+
const prior = await values.find("ids:" + info.part, () => literal("list"));
|
|
233
|
+
const pointer2 = pages.allocate(24);
|
|
234
|
+
await write(pointer2, [0, storedId.start, storedId.length]);
|
|
235
|
+
if (prior) {
|
|
236
|
+
const links = await row(prior.start, 2);
|
|
237
|
+
await write(links[1], [pointer2]);
|
|
238
|
+
await write(prior.start + 8, [pointer2]);
|
|
239
|
+
} else {
|
|
240
|
+
const links = pages.allocate(16);
|
|
241
|
+
await write(links, [pointer2, pointer2]);
|
|
242
|
+
const listKey = await values.store(literal("list"));
|
|
243
|
+
await values.insert("ids:" + info.part, listKey, { start: links, length: 16 });
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const name = shapeName ? await values.store(shapeName()) : void 0;
|
|
249
|
+
const json = await output.store(
|
|
250
|
+
streamJson({
|
|
251
|
+
id: () => values.read(storedId),
|
|
252
|
+
location,
|
|
253
|
+
sourcePart,
|
|
254
|
+
shapeId,
|
|
255
|
+
shapeName: name ? () => values.read(name) : null,
|
|
256
|
+
kind,
|
|
257
|
+
relationships: relationships2(),
|
|
258
|
+
posters,
|
|
259
|
+
playback,
|
|
260
|
+
captions,
|
|
261
|
+
timing
|
|
262
|
+
})
|
|
263
|
+
);
|
|
264
|
+
const summary = await values.store(
|
|
265
|
+
literal(JSON.stringify({ location, sourcePart, shapeId, kind, name, embedded, linked }))
|
|
266
|
+
);
|
|
267
|
+
const pointer = pages.allocate(40);
|
|
268
|
+
await write(pointer, [0, json.start, json.length, summary.start, summary.length]);
|
|
269
|
+
if (tail) await write(tail, [pointer]);
|
|
270
|
+
else head = pointer;
|
|
271
|
+
tail = pointer;
|
|
272
|
+
count++;
|
|
273
|
+
}
|
|
274
|
+
async function reference(owner, id) {
|
|
275
|
+
const edge = await index.graph.get(owner, id);
|
|
276
|
+
if (!edge) throw new OfficeError("missing-binding", "Media relationship is absent.", "index");
|
|
277
|
+
const info = edge.targetPart ? await part(edge.targetPart) : void 0;
|
|
278
|
+
if (!edge.external && !info)
|
|
279
|
+
throw new OfficeError("missing-binding", "Media part is absent.", "index");
|
|
280
|
+
return {
|
|
281
|
+
relationshipId: edge.id,
|
|
282
|
+
relationshipType: edge.type,
|
|
283
|
+
target: edge.target,
|
|
284
|
+
external: edge.external,
|
|
285
|
+
mediaPart: edge.targetPart,
|
|
286
|
+
contentType: info ? content(info) : null,
|
|
287
|
+
bytes: info?.bytes ?? null,
|
|
288
|
+
sha256: info?.sha256 ?? null
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
for await (const stored of owners.entries()) {
|
|
292
|
+
const owner = JSON.parse(await text(stored));
|
|
293
|
+
const doc = await openRetainedXmlDocument(archive.read(owner.part), context);
|
|
294
|
+
let view;
|
|
295
|
+
try {
|
|
296
|
+
view = await openRetainedCompatibility(
|
|
297
|
+
doc,
|
|
298
|
+
dialects.flatMap((d) => [d.p, d.a, d.r]),
|
|
299
|
+
context,
|
|
300
|
+
[
|
|
301
|
+
...equationOpaqueElements,
|
|
302
|
+
...dialects.flatMap((d) => [
|
|
303
|
+
{ namespace: d.p, localName: "ext" },
|
|
304
|
+
{ namespace: d.a, localName: "ext" },
|
|
305
|
+
{ namespace: d.a, localName: "graphicData" }
|
|
306
|
+
])
|
|
307
|
+
]
|
|
308
|
+
);
|
|
309
|
+
const local = (node, name) => equal(doc.raw(node.localName), literal(name));
|
|
310
|
+
async function named(node, names, kind) {
|
|
311
|
+
let namespace = false;
|
|
312
|
+
for (const uri of kind === "p" || kind === "a" || kind === "r" ? dialects.map((d) => d[kind]) : [kind])
|
|
313
|
+
if (await equal(doc.namespace(node), literal(uri))) namespace = true;
|
|
314
|
+
if (!namespace) return false;
|
|
315
|
+
for (const name of names) if (await local(node, name)) return true;
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
async function attr2(node, name) {
|
|
319
|
+
for await (const value of doc.attributes(node))
|
|
320
|
+
if (await local(value, name) && await equal(doc.namespace(value), literal("")))
|
|
321
|
+
return value;
|
|
322
|
+
}
|
|
323
|
+
async function* bindings(node) {
|
|
324
|
+
for await (const value of doc.attributes(node))
|
|
325
|
+
if (await named(value, ["embed", "link", "id"], "r")) yield value;
|
|
326
|
+
}
|
|
327
|
+
const active = new RetainedOrder(pages, values, check);
|
|
328
|
+
let serial = 0, top = pages.allocate(16);
|
|
329
|
+
await write(top, [0, doc.reference(doc.root)]);
|
|
330
|
+
async function admit(node) {
|
|
331
|
+
const key = await values.store(literal(String(doc.reference(node))));
|
|
332
|
+
await values.insert("active:" + owner.part, key, key);
|
|
333
|
+
await active.add(literal(String(serial++).padStart(16, "0")), key);
|
|
334
|
+
}
|
|
335
|
+
while (top) {
|
|
336
|
+
const task = await row(top, 2);
|
|
337
|
+
top = task[0];
|
|
338
|
+
const node = await doc.node(task[1]);
|
|
339
|
+
await admit(node);
|
|
340
|
+
if (await named(node, ["ext"], "p") || await named(node, ["ext"], "a")) {
|
|
341
|
+
for await (const nested of doc.elements(node))
|
|
342
|
+
if (doc.reference(nested) !== doc.reference(node)) await admit(nested);
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
let first = 0, last = 0;
|
|
346
|
+
for await (const child of view.children(node)) {
|
|
347
|
+
const task2 = pages.allocate(16);
|
|
348
|
+
await write(task2, [0, doc.reference(child)]);
|
|
349
|
+
if (last) await write(last, [task2]);
|
|
350
|
+
else first = task2;
|
|
351
|
+
last = task2;
|
|
352
|
+
}
|
|
353
|
+
if (last) {
|
|
354
|
+
await write(last, [top]);
|
|
355
|
+
top = first;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
await active.seal();
|
|
359
|
+
async function* nodes(root) {
|
|
360
|
+
if (root) {
|
|
361
|
+
for await (const node of doc.elements(root))
|
|
362
|
+
if (await values.find(
|
|
363
|
+
"active:" + owner.part,
|
|
364
|
+
() => literal(String(doc.reference(node)))
|
|
365
|
+
))
|
|
366
|
+
yield node;
|
|
367
|
+
} else
|
|
368
|
+
for await (const key of active.entries()) yield await doc.node(Number(await text(key)));
|
|
369
|
+
}
|
|
370
|
+
let metadataId = 0;
|
|
371
|
+
async function metadata(node) {
|
|
372
|
+
const scope = "metadata:" + owner.part + ":" + ++metadataId;
|
|
373
|
+
async function* refs() {
|
|
374
|
+
for await (const nested of doc.elements(node))
|
|
375
|
+
for await (const binding of bindings(nested))
|
|
376
|
+
if (await mark(scope, doc.text(binding)))
|
|
377
|
+
yield await reference(owner.part, () => doc.text(binding));
|
|
378
|
+
}
|
|
379
|
+
return {
|
|
380
|
+
namespace: () => doc.namespace(node),
|
|
381
|
+
name: () => doc.raw(node.localName),
|
|
382
|
+
xml: () => doc.markup(node, true),
|
|
383
|
+
relationships: refs()
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
for await (const record of index.records.records("object")) {
|
|
387
|
+
if (record.part !== owner.part || options.shape !== void 0 && !await equal(record.name(), literal(options.shape)))
|
|
388
|
+
continue;
|
|
389
|
+
if (options.select && !await values.find("selectedWhole", () => literal(owner.part)) && !await values.find("selectedObject", () => literal(owner.part + "\0" + record.id)))
|
|
390
|
+
continue;
|
|
391
|
+
let shape;
|
|
392
|
+
for await (const node of nodes()) {
|
|
393
|
+
if (!await named(node, ["pic", "sp", "graphicFrame"], "p")) continue;
|
|
394
|
+
let match = false;
|
|
395
|
+
for await (const nv of doc.children(node))
|
|
396
|
+
for await (const identity of doc.children(nv))
|
|
397
|
+
if (identity.kind === "element" && await named(identity, ["cNvPr"], "p")) {
|
|
398
|
+
const id = await attr2(identity, "id");
|
|
399
|
+
if (id && await equal(doc.text(id), literal(record.id))) match = true;
|
|
400
|
+
}
|
|
401
|
+
if (match) {
|
|
402
|
+
shape = node;
|
|
403
|
+
break;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (!shape) continue;
|
|
407
|
+
const refs = new RetainedOrder(pages, values, check);
|
|
408
|
+
let refsCount = 0, hasNodes = false, audio = false, video = false;
|
|
409
|
+
for await (const node of nodes(shape)) {
|
|
410
|
+
const isDrawing = await named(node, ["videoFile", "audioFile", "wavAudioFile"], "a"), isMedia = await named(node, ["media"], mediaNamespace);
|
|
411
|
+
if (!isDrawing && !isMedia) continue;
|
|
412
|
+
hasNodes = true;
|
|
413
|
+
let bound = false;
|
|
414
|
+
for await (const binding of bindings(node)) {
|
|
415
|
+
bound = true;
|
|
416
|
+
const ref = await reference(owner.part, () => doc.text(binding)), edge = await index.graph.get(owner.part, () => doc.text(binding));
|
|
417
|
+
const expected = await local(node, "videoFile") ? "video" : await local(node, "media") ? "unknown" : "audio";
|
|
418
|
+
const kind = await relationshipKind(edge);
|
|
419
|
+
if (kind !== expected)
|
|
420
|
+
throw new OfficeError(
|
|
421
|
+
"missing-binding",
|
|
422
|
+
"Media relationship has the wrong type.",
|
|
423
|
+
"index"
|
|
424
|
+
);
|
|
425
|
+
await mark("consumed:" + owner.part, edge.id());
|
|
426
|
+
const id = await values.store(edge.id());
|
|
427
|
+
if (await values.insert("refs:" + owner.part + ":" + record.id, id, id))
|
|
428
|
+
await refs.add(literal(String(refsCount++).padStart(16, "0")), id);
|
|
429
|
+
audio ||= kind === "audio";
|
|
430
|
+
video ||= kind === "video";
|
|
431
|
+
if (kind === "unknown" && ref.contentType) {
|
|
432
|
+
let prefix = "";
|
|
433
|
+
for await (const bytes of ref.contentType()) {
|
|
434
|
+
prefix += new TextDecoder().decode(bytes.subarray(0, 6 - prefix.length));
|
|
435
|
+
if (prefix.length >= 6) break;
|
|
436
|
+
}
|
|
437
|
+
audio ||= prefix.startsWith("audio/");
|
|
438
|
+
video ||= prefix.startsWith("video/");
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (!bound)
|
|
442
|
+
throw new OfficeError(
|
|
443
|
+
"missing-binding",
|
|
444
|
+
"Media reference has no relationship binding.",
|
|
445
|
+
"index"
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
if (!hasNodes) continue;
|
|
449
|
+
await refs.seal();
|
|
450
|
+
async function* references() {
|
|
451
|
+
for await (const id of refs.entries())
|
|
452
|
+
yield await reference(owner.part, () => values.read(id));
|
|
453
|
+
}
|
|
454
|
+
async function* posters() {
|
|
455
|
+
for await (const node of nodes(shape))
|
|
456
|
+
if (await named(node, ["blip"], "a"))
|
|
457
|
+
for await (const binding of bindings(node)) {
|
|
458
|
+
const ref = await reference(owner.part, () => doc.text(binding));
|
|
459
|
+
let image = false;
|
|
460
|
+
for (const d of dialects)
|
|
461
|
+
if (await equal(ref.relationshipType(), literal(d.r + "/image"))) image = true;
|
|
462
|
+
if (!image)
|
|
463
|
+
throw new OfficeError(
|
|
464
|
+
"missing-binding",
|
|
465
|
+
"Poster relationship has the wrong type.",
|
|
466
|
+
"index"
|
|
467
|
+
);
|
|
468
|
+
yield ref;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
async function* metadataNodes(kind) {
|
|
472
|
+
for await (const node of nodes(kind === "timing" ? void 0 : shape)) {
|
|
473
|
+
if (kind === "playback" && await named(node, ["media"], mediaNamespace) || kind === "captions" && await named(node, ["tracksInfo"], tracksNamespace))
|
|
474
|
+
yield await metadata(node);
|
|
475
|
+
else if (kind === "timing" && await named(
|
|
476
|
+
node,
|
|
477
|
+
[
|
|
478
|
+
"audio",
|
|
479
|
+
"video",
|
|
480
|
+
"anim",
|
|
481
|
+
"animEffect",
|
|
482
|
+
"animMotion",
|
|
483
|
+
"animRot",
|
|
484
|
+
"animScale",
|
|
485
|
+
"cmd",
|
|
486
|
+
"set"
|
|
487
|
+
],
|
|
488
|
+
"p"
|
|
489
|
+
)) {
|
|
490
|
+
let match = false;
|
|
491
|
+
for await (const target of doc.elements(node))
|
|
492
|
+
if (await named(target, ["spTgt"], "p")) {
|
|
493
|
+
const id = await attr2(target, "spid");
|
|
494
|
+
if (id && await equal(doc.text(id), literal(record.id))) match = true;
|
|
495
|
+
}
|
|
496
|
+
if (match) yield await metadata(node);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
await addOccurrence(
|
|
501
|
+
() => literal(owner.part + "#media-" + record.id),
|
|
502
|
+
record.location,
|
|
503
|
+
owner.part,
|
|
504
|
+
record.id,
|
|
505
|
+
record.name,
|
|
506
|
+
audio === video ? "unknown" : audio ? "audio" : "video",
|
|
507
|
+
references,
|
|
508
|
+
posters(),
|
|
509
|
+
metadataNodes("playback"),
|
|
510
|
+
metadataNodes("captions"),
|
|
511
|
+
metadataNodes("timing")
|
|
512
|
+
);
|
|
513
|
+
}
|
|
514
|
+
const unconsumed = new RetainedOrder(pages, values, check);
|
|
515
|
+
if (options.shape === void 0 && !selectedObjects)
|
|
516
|
+
for await (const edge of index.graph.outgoing(owner.part)) {
|
|
517
|
+
const id = await values.store(edge.id());
|
|
518
|
+
await unconsumed.add(values.read(id), id);
|
|
519
|
+
}
|
|
520
|
+
await unconsumed.seal();
|
|
521
|
+
for await (const id of unconsumed.entries()) {
|
|
522
|
+
const edge = await index.graph.get(owner.part, () => values.read(id));
|
|
523
|
+
const kind = await relationshipKind(edge);
|
|
524
|
+
if (!kind || await values.find("consumed:" + owner.part, edge.id)) continue;
|
|
525
|
+
async function* references() {
|
|
526
|
+
yield await reference(owner.part, edge.id);
|
|
527
|
+
}
|
|
528
|
+
async function* empty() {
|
|
529
|
+
}
|
|
530
|
+
await addOccurrence(
|
|
531
|
+
() => joined(literal(owner.part + "#media-relationship-"), edge.id()),
|
|
532
|
+
owner.location,
|
|
533
|
+
owner.part,
|
|
534
|
+
null,
|
|
535
|
+
null,
|
|
536
|
+
kind,
|
|
537
|
+
references,
|
|
538
|
+
empty(),
|
|
539
|
+
empty(),
|
|
540
|
+
empty(),
|
|
541
|
+
empty()
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
} finally {
|
|
545
|
+
await Promise.all([view?.close(), doc.close()]);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
await mediaParts.seal();
|
|
549
|
+
for await (const name of mediaParts.entries()) {
|
|
550
|
+
const info = await part(() => values.read(name)), hash = sha1.create();
|
|
551
|
+
for await (const bytes of archive.read(info.part)) {
|
|
552
|
+
check();
|
|
553
|
+
hash.update(bytes);
|
|
554
|
+
}
|
|
555
|
+
async function* ids() {
|
|
556
|
+
const list = await values.find("ids:" + info.part, () => literal("list"));
|
|
557
|
+
for (let pointer2 = (await row(list.start, 2))[0]; pointer2; ) {
|
|
558
|
+
const data = await row(pointer2, 3);
|
|
559
|
+
pointer2 = data[0];
|
|
560
|
+
const value = { start: data[1], length: data[2] };
|
|
561
|
+
yield () => values.read(value);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
const json = await output.store(
|
|
565
|
+
streamJson({
|
|
566
|
+
part: info.part,
|
|
567
|
+
contentType: content(info),
|
|
568
|
+
bytes: info.bytes,
|
|
569
|
+
sha256: info.sha256,
|
|
570
|
+
sha1: Array.from(hash.digest(), (b) => b.toString(16).padStart(2, "0")).join(""),
|
|
571
|
+
occurrenceIds: ids()
|
|
572
|
+
})
|
|
573
|
+
);
|
|
574
|
+
const pointer = pages.allocate(24);
|
|
575
|
+
await write(pointer, [0, json.start, json.length]);
|
|
576
|
+
if (mediaTail) await write(mediaTail, [pointer]);
|
|
577
|
+
else mediaHead = pointer;
|
|
578
|
+
mediaTail = pointer;
|
|
579
|
+
}
|
|
580
|
+
await index.close();
|
|
581
|
+
check();
|
|
582
|
+
return Object.freeze({
|
|
583
|
+
close,
|
|
584
|
+
count,
|
|
585
|
+
async *occurrences() {
|
|
586
|
+
try {
|
|
587
|
+
check();
|
|
588
|
+
for (let pointer = head; pointer; ) {
|
|
589
|
+
const item = await row(pointer, 5);
|
|
590
|
+
pointer = item[0];
|
|
591
|
+
yield { [rawJson]: () => output.read({ start: item[1], length: item[2] }) };
|
|
592
|
+
}
|
|
593
|
+
} catch (error) {
|
|
594
|
+
throw failure(error);
|
|
595
|
+
}
|
|
596
|
+
},
|
|
597
|
+
async *media() {
|
|
598
|
+
try {
|
|
599
|
+
check();
|
|
600
|
+
for (let pointer = mediaHead; pointer; ) {
|
|
601
|
+
const item = await row(pointer, 3);
|
|
602
|
+
pointer = item[0];
|
|
603
|
+
yield { [rawJson]: () => output.read({ start: item[1], length: item[2] }) };
|
|
604
|
+
}
|
|
605
|
+
} catch (error) {
|
|
606
|
+
throw failure(error);
|
|
607
|
+
}
|
|
608
|
+
},
|
|
609
|
+
async *resources() {
|
|
610
|
+
try {
|
|
611
|
+
check();
|
|
612
|
+
for (let pointer = resourceHead; pointer; ) {
|
|
613
|
+
const item = await row(pointer, 6);
|
|
614
|
+
pointer = item[0];
|
|
615
|
+
const metadata = JSON.parse(await text({ start: item[4], length: item[5] }));
|
|
616
|
+
yield {
|
|
617
|
+
...metadata,
|
|
618
|
+
occurrence: item[1],
|
|
619
|
+
occurrenceId: () => values.read({ start: item[2], length: item[3] }),
|
|
620
|
+
contentType: metadata.contentType ? () => values.read(metadata.contentType) : null
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
check();
|
|
624
|
+
} catch (error) {
|
|
625
|
+
throw failure(error);
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
async *summaries() {
|
|
629
|
+
try {
|
|
630
|
+
check();
|
|
631
|
+
for (let pointer = head; pointer; ) {
|
|
632
|
+
const item = await row(pointer, 5);
|
|
633
|
+
pointer = item[0];
|
|
634
|
+
const summary = JSON.parse(await text({ start: item[3], length: item[4] }));
|
|
635
|
+
yield { ...summary, name: summary.name ? () => values.read(summary.name) : null };
|
|
636
|
+
}
|
|
637
|
+
} catch (error) {
|
|
638
|
+
throw failure(error);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
});
|
|
642
|
+
} catch (error) {
|
|
643
|
+
if (!(error instanceof RetainedMediaSelectionError)) await close().catch(() => {
|
|
644
|
+
});
|
|
645
|
+
throw failure(error);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
async function stageRetainedMedia(archive, fingerprint, options, settings, format) {
|
|
649
|
+
const output = { ...format };
|
|
650
|
+
let reader, staged;
|
|
651
|
+
try {
|
|
652
|
+
reader = await openRetainedMedia(archive, fingerprint, options, settings);
|
|
653
|
+
const inventory = reader;
|
|
654
|
+
async function* locations() {
|
|
655
|
+
for await (const item of inventory.summaries()) yield item.location;
|
|
656
|
+
}
|
|
657
|
+
if (output.operation === "media.get" && reader.count !== 1)
|
|
658
|
+
throw new RetainedMediaSelectionError(
|
|
659
|
+
reader.count ? "ambiguous-selection" : "missing-selection",
|
|
660
|
+
locations,
|
|
661
|
+
reader.close
|
|
662
|
+
);
|
|
663
|
+
async function* render() {
|
|
664
|
+
if (output.json) {
|
|
665
|
+
yield* streamJson({
|
|
666
|
+
version: 1,
|
|
667
|
+
operation: output.operation,
|
|
668
|
+
ok: true,
|
|
669
|
+
data: {
|
|
670
|
+
occurrences: inventory.occurrences(),
|
|
671
|
+
media: inventory.media(),
|
|
672
|
+
playbackVerified: false
|
|
673
|
+
},
|
|
674
|
+
warnings: [],
|
|
675
|
+
errors: [],
|
|
676
|
+
affected: 0,
|
|
677
|
+
locations: locations()
|
|
678
|
+
});
|
|
679
|
+
yield* literal("\n");
|
|
680
|
+
} else {
|
|
681
|
+
yield* literal("Media occurrences: " + inventory.count + "\n");
|
|
682
|
+
for await (const item of inventory.summaries()) {
|
|
683
|
+
yield* literal(item.kind + " ");
|
|
684
|
+
yield* streamJson(item.name ?? (() => literal(item.sourcePart)));
|
|
685
|
+
yield* literal(": " + item.embedded + " embedded, " + item.linked + " linked\n");
|
|
686
|
+
}
|
|
687
|
+
yield* literal(
|
|
688
|
+
"External targets remain inert. Metadata parsing does not prove playback.\n"
|
|
689
|
+
);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
staged = await stageRetainedOutput(render(), settings, output.maxOutputBytes);
|
|
693
|
+
await reader.close();
|
|
694
|
+
return { output: staged, ok: true };
|
|
695
|
+
} catch (error) {
|
|
696
|
+
if (error instanceof RetainedMediaSelectionError) {
|
|
697
|
+
return { output: await stageRetainedMediaSelectionError(error, settings, output), ok: false };
|
|
698
|
+
}
|
|
699
|
+
await Promise.allSettled([reader?.close(), staged?.close()]);
|
|
700
|
+
throw error;
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
async function stageRetainedMediaSelectionError(selection, settings, format) {
|
|
704
|
+
const output = { ...format };
|
|
705
|
+
let staged;
|
|
706
|
+
async function* render() {
|
|
707
|
+
if (output.json) {
|
|
708
|
+
yield* streamJson({
|
|
709
|
+
version: 1,
|
|
710
|
+
operation: output.operation,
|
|
711
|
+
ok: false,
|
|
712
|
+
data: null,
|
|
713
|
+
warnings: [],
|
|
714
|
+
errors: [
|
|
715
|
+
{
|
|
716
|
+
code: selection.code,
|
|
717
|
+
message: selection.message,
|
|
718
|
+
context: { phase: "select", candidates: selection.candidates() }
|
|
719
|
+
}
|
|
720
|
+
],
|
|
721
|
+
affected: 0,
|
|
722
|
+
locations: []
|
|
723
|
+
});
|
|
724
|
+
yield* literal("\n");
|
|
725
|
+
} else yield* literal("pptx: " + selection.code + ": " + selection.message + "\n");
|
|
726
|
+
}
|
|
727
|
+
try {
|
|
728
|
+
staged = await stageRetainedOutput(render(), settings, output.maxOutputBytes);
|
|
729
|
+
await selection.close();
|
|
730
|
+
return staged;
|
|
731
|
+
} catch (error) {
|
|
732
|
+
await Promise.allSettled([selection.close(), staged?.close()]);
|
|
733
|
+
throw error;
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
// packages/safe-bash-presentation-engine/src/media.ts
|
|
738
|
+
var presentation = [
|
|
739
|
+
"http://schemas.openxmlformats.org/presentationml/2006/main",
|
|
740
|
+
"http://purl.oclc.org/ooxml/presentationml/main"
|
|
741
|
+
];
|
|
742
|
+
var drawing = [
|
|
743
|
+
"http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
744
|
+
"http://purl.oclc.org/ooxml/drawingml/main"
|
|
745
|
+
];
|
|
746
|
+
var relationships = [
|
|
747
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
748
|
+
"http://purl.oclc.org/ooxml/officeDocument/relationships"
|
|
749
|
+
];
|
|
750
|
+
var mediaNamespace2 = "http://schemas.microsoft.com/office/powerpoint/2010/main";
|
|
751
|
+
var mediaRelationship2 = "http://schemas.microsoft.com/office/2007/relationships/media";
|
|
752
|
+
function walk(node) {
|
|
753
|
+
return [node, ...node.children.flatMap(walk)];
|
|
754
|
+
}
|
|
755
|
+
function relationshipKind2(type) {
|
|
756
|
+
if (relationships.some((ns) => type === `${ns}/video`)) return "video";
|
|
757
|
+
if (relationships.some((ns) => type === `${ns}/audio`)) return "audio";
|
|
758
|
+
return type === mediaRelationship2 ? "unknown" : null;
|
|
759
|
+
}
|
|
760
|
+
function validateMediaOptions(options) {
|
|
761
|
+
const scopes = [
|
|
762
|
+
"slides",
|
|
763
|
+
"layouts",
|
|
764
|
+
"masters",
|
|
765
|
+
"notes",
|
|
766
|
+
"notes-master",
|
|
767
|
+
"handout-master",
|
|
768
|
+
"shared"
|
|
769
|
+
];
|
|
770
|
+
if (!options || typeof options !== "object" || ![Object.prototype, null].includes(Object.getPrototypeOf(options)) || Reflect.ownKeys(options).some(
|
|
771
|
+
(key) => typeof key !== "string" || !["scope", "slide", "shape", "select"].includes(key) || !("value" in Object.getOwnPropertyDescriptor(options, key))
|
|
772
|
+
) || options.scope !== void 0 && !scopes.includes(options.scope) || options.select !== void 0 && (typeof options.select !== "string" || !options.select.length))
|
|
773
|
+
throw new OfficeError("invalid-value", "Invalid media selection options.", "usage");
|
|
774
|
+
for (const key of ["slide"])
|
|
775
|
+
if (options[key] !== void 0 && (!Number.isSafeInteger(options[key]) || options[key] < 1))
|
|
776
|
+
throw new OfficeError(
|
|
777
|
+
"invalid-value",
|
|
778
|
+
"Media positions require positive safe integers.",
|
|
779
|
+
"usage"
|
|
780
|
+
);
|
|
781
|
+
if (options.shape !== void 0 && (typeof options.shape !== "string" || !options.shape.length || options.slide === void 0))
|
|
782
|
+
throw new SelectionError("invalid-selection");
|
|
783
|
+
if (options.select !== void 0 && [options.scope, options.slide, options.shape].some((value) => value !== void 0))
|
|
784
|
+
throw new SelectionError("invalid-selection");
|
|
785
|
+
}
|
|
786
|
+
async function readMedia(input, options, context) {
|
|
787
|
+
validateMediaOptions(options);
|
|
788
|
+
const source = await readBinary(input, context);
|
|
789
|
+
const reader = await readPackage(source, context);
|
|
790
|
+
const index = await readSelectionIndex(source, context);
|
|
791
|
+
const selected = options.select ? index.select({ token: options.select }) : void 0;
|
|
792
|
+
const occurrences = [];
|
|
793
|
+
const related = (owner, type) => index.inventory.relationships.filter(
|
|
794
|
+
(edge) => edge.owner === owner && !edge.external && relationships.some((ns) => edge.type === `${ns}/${type}`)
|
|
795
|
+
).flatMap((edge) => edge.targetPart ? [edge.targetPart] : []);
|
|
796
|
+
const owners = index.parts.filter(
|
|
797
|
+
(owner) => owner.scope !== "shared" && (selected ? selected.some((record) => record.part === owner.part) : options.scope === "shared" || owner.scope === (options.scope ?? "slides")) && (options.slide === void 0 || index.inventory.slides.some(
|
|
798
|
+
(slide) => slide.position === options.slide && ([slide.part, slide.layout, slide.master].includes(owner.part) || related(slide.part, "notesSlide").some(
|
|
799
|
+
(notes) => notes === owner.part || related(notes, "notesMaster").includes(owner.part)
|
|
800
|
+
))
|
|
801
|
+
))
|
|
802
|
+
);
|
|
803
|
+
if (options.shape !== void 0) {
|
|
804
|
+
const matches = index.objects.filter(
|
|
805
|
+
(record) => owners.some((owner) => owner.part === record.part) && record.name === options.shape
|
|
806
|
+
);
|
|
807
|
+
if (matches.length !== 1)
|
|
808
|
+
throw new SelectionError(
|
|
809
|
+
matches.length ? "ambiguous-selection" : "missing-selection",
|
|
810
|
+
matches.map((record) => record.location)
|
|
811
|
+
);
|
|
812
|
+
}
|
|
813
|
+
owners.sort((left, right) => {
|
|
814
|
+
const a = index.slides.findIndex((slide) => slide.part === left.part);
|
|
815
|
+
const b = index.slides.findIndex((slide) => slide.part === right.part);
|
|
816
|
+
return (a < 0 ? Number.MAX_SAFE_INTEGER : a) - (b < 0 ? Number.MAX_SAFE_INTEGER : b) || (left.part < right.part ? -1 : left.part > right.part ? 1 : 0);
|
|
817
|
+
});
|
|
818
|
+
for (const owner of owners) {
|
|
819
|
+
context.signal?.throwIfAborted();
|
|
820
|
+
const document = parseXmlPart(reader.get(owner.part), context.xmlLimits);
|
|
821
|
+
const view = interpretCompatibility(
|
|
822
|
+
document,
|
|
823
|
+
[...presentation, ...drawing, ...relationships],
|
|
824
|
+
[
|
|
825
|
+
...equationOpaqueElements,
|
|
826
|
+
...presentation.map((namespace) => ({ namespace, localName: "ext" })),
|
|
827
|
+
...drawing.flatMap(
|
|
828
|
+
(namespace) => ["ext", "graphicData"].map((localName) => ({ namespace, localName }))
|
|
829
|
+
)
|
|
830
|
+
]
|
|
831
|
+
);
|
|
832
|
+
const activeWalk = (node) => [
|
|
833
|
+
node,
|
|
834
|
+
...node.name.localName === "ext" && [...presentation, ...drawing].includes(node.name.namespace) ? node.children.flatMap(walk) : view.children(node).flatMap(activeWalk)
|
|
835
|
+
];
|
|
836
|
+
const nodes = activeWalk(document.root);
|
|
837
|
+
const edges = index.inventory.relationships.filter((edge) => edge.owner === owner.part);
|
|
838
|
+
const consumed = /* @__PURE__ */ new Set();
|
|
839
|
+
const reference = (id) => {
|
|
840
|
+
const edge = edges.find((edge2) => edge2.id === id);
|
|
841
|
+
if (!edge) throw new OfficeError("missing-binding", "Media relationship is absent.", "index");
|
|
842
|
+
const part = edge.targetPart === null ? void 0 : index.inventory.parts.find((part2) => part2.part === edge.targetPart);
|
|
843
|
+
if (!edge.external && !part)
|
|
844
|
+
throw new OfficeError("missing-binding", "Media part is absent.", "index");
|
|
845
|
+
return {
|
|
846
|
+
relationshipId: edge.id,
|
|
847
|
+
relationshipType: edge.type,
|
|
848
|
+
target: edge.target,
|
|
849
|
+
external: edge.external,
|
|
850
|
+
mediaPart: edge.targetPart,
|
|
851
|
+
contentType: part?.contentType ?? null,
|
|
852
|
+
bytes: part?.bytes ?? null,
|
|
853
|
+
sha256: part?.sha256 ?? null
|
|
854
|
+
};
|
|
855
|
+
};
|
|
856
|
+
const bindings = (node) => node.attributes.filter(
|
|
857
|
+
(attribute) => relationships.includes(attribute.name.namespace) && ["embed", "link", "id"].includes(attribute.name.localName)
|
|
858
|
+
);
|
|
859
|
+
const metadata = (node) => ({
|
|
860
|
+
namespace: node.name.namespace,
|
|
861
|
+
name: node.name.localName,
|
|
862
|
+
xml: document.markup(node, true),
|
|
863
|
+
relationships: [
|
|
864
|
+
...new Set(
|
|
865
|
+
walk(node).flatMap((element) => bindings(element).map((binding) => binding.value))
|
|
866
|
+
)
|
|
867
|
+
].map(reference)
|
|
868
|
+
});
|
|
869
|
+
for (const record of index.objects.filter((record2) => record2.part === owner.part)) {
|
|
870
|
+
if (options.shape !== void 0 && options.shape !== record.name) continue;
|
|
871
|
+
if (selected && !selected.some(
|
|
872
|
+
(item) => item.part === owner.part && (item.kind !== "object" || item.id === record.id)
|
|
873
|
+
))
|
|
874
|
+
continue;
|
|
875
|
+
const shape = nodes.find(
|
|
876
|
+
(node) => presentation.includes(node.name.namespace) && ["pic", "sp", "graphicFrame"].includes(node.name.localName) && node.children.some(
|
|
877
|
+
(nv) => nv.children.some(
|
|
878
|
+
(identity) => presentation.includes(identity.name.namespace) && identity.name.localName === "cNvPr" && attr(identity, "id") === record.id
|
|
879
|
+
)
|
|
880
|
+
)
|
|
881
|
+
);
|
|
882
|
+
if (!shape) continue;
|
|
883
|
+
const children = activeWalk(shape);
|
|
884
|
+
const mediaNodes = children.filter(
|
|
885
|
+
(node) => drawing.includes(node.name.namespace) && ["videoFile", "audioFile", "wavAudioFile"].includes(node.name.localName) || node.name.namespace === mediaNamespace2 && node.name.localName === "media"
|
|
886
|
+
);
|
|
887
|
+
if (!mediaNodes.length) continue;
|
|
888
|
+
const refs = [];
|
|
889
|
+
for (const node of mediaNodes) {
|
|
890
|
+
const nodeBindings = bindings(node);
|
|
891
|
+
if (!nodeBindings.length)
|
|
892
|
+
throw new OfficeError(
|
|
893
|
+
"missing-binding",
|
|
894
|
+
"Media reference has no relationship binding.",
|
|
895
|
+
"index"
|
|
896
|
+
);
|
|
897
|
+
for (const binding of nodeBindings) {
|
|
898
|
+
const ref = reference(binding.value);
|
|
899
|
+
const expected = node.name.localName === "videoFile" ? "video" : node.name.localName === "media" ? "unknown" : "audio";
|
|
900
|
+
if (relationshipKind2(ref.relationshipType) !== expected)
|
|
901
|
+
throw new OfficeError(
|
|
902
|
+
"missing-binding",
|
|
903
|
+
"Media relationship has the wrong type.",
|
|
904
|
+
"index"
|
|
905
|
+
);
|
|
906
|
+
consumed.add(ref.relationshipId);
|
|
907
|
+
if (!refs.some((existing) => existing.relationshipId === ref.relationshipId))
|
|
908
|
+
refs.push(ref);
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
const posters = children.filter((node) => drawing.includes(node.name.namespace) && node.name.localName === "blip").flatMap(
|
|
912
|
+
(node) => bindings(node).map((binding) => {
|
|
913
|
+
const ref = reference(binding.value);
|
|
914
|
+
if (!relationships.some((ns) => ref.relationshipType === `${ns}/image`))
|
|
915
|
+
throw new OfficeError(
|
|
916
|
+
"missing-binding",
|
|
917
|
+
"Poster relationship has the wrong type.",
|
|
918
|
+
"index"
|
|
919
|
+
);
|
|
920
|
+
return ref;
|
|
921
|
+
})
|
|
922
|
+
);
|
|
923
|
+
const extensionNodes = children.filter(
|
|
924
|
+
(node) => node.name.namespace === mediaNamespace2 && node.name.localName === "media"
|
|
925
|
+
);
|
|
926
|
+
const captions = children.filter(
|
|
927
|
+
(node) => node.name.namespace === "http://schemas.microsoft.com/office/powerpoint/2017/3/main" && node.name.localName === "tracksInfo"
|
|
928
|
+
).map(metadata);
|
|
929
|
+
const timing = nodes.filter(
|
|
930
|
+
(node) => presentation.includes(node.name.namespace) && [
|
|
931
|
+
"audio",
|
|
932
|
+
"video",
|
|
933
|
+
"anim",
|
|
934
|
+
"animEffect",
|
|
935
|
+
"animMotion",
|
|
936
|
+
"animRot",
|
|
937
|
+
"animScale",
|
|
938
|
+
"cmd",
|
|
939
|
+
"set"
|
|
940
|
+
].includes(node.name.localName) && walk(node).some(
|
|
941
|
+
(target) => presentation.includes(target.name.namespace) && target.name.localName === "spTgt" && attr(target, "spid") === record.id
|
|
942
|
+
)
|
|
943
|
+
).map(metadata);
|
|
944
|
+
const kinds = [
|
|
945
|
+
...new Set(
|
|
946
|
+
refs.map((ref) => {
|
|
947
|
+
const kind = relationshipKind2(ref.relationshipType);
|
|
948
|
+
return kind === "unknown" ? ref.contentType?.startsWith("video/") ? "video" : ref.contentType?.startsWith("audio/") ? "audio" : "unknown" : kind;
|
|
949
|
+
}).filter((kind) => kind === "audio" || kind === "video")
|
|
950
|
+
)
|
|
951
|
+
];
|
|
952
|
+
occurrences.push({
|
|
953
|
+
id: `${owner.part}#media-${record.id}`,
|
|
954
|
+
location: record.location,
|
|
955
|
+
sourcePart: owner.part,
|
|
956
|
+
shapeId: record.id,
|
|
957
|
+
shapeName: record.name,
|
|
958
|
+
kind: kinds.length === 1 ? kinds[0] : "unknown",
|
|
959
|
+
relationships: refs,
|
|
960
|
+
posters,
|
|
961
|
+
playback: extensionNodes.map(metadata),
|
|
962
|
+
captions,
|
|
963
|
+
timing
|
|
964
|
+
});
|
|
965
|
+
}
|
|
966
|
+
if (options.shape === void 0 && !selected?.some((record) => record.kind === "object")) {
|
|
967
|
+
for (const edge of edges.filter(
|
|
968
|
+
(edge2) => relationshipKind2(edge2.type) !== null && !consumed.has(edge2.id)
|
|
969
|
+
)) {
|
|
970
|
+
occurrences.push({
|
|
971
|
+
id: `${owner.part}#media-relationship-${edge.id}`,
|
|
972
|
+
location: owner.location,
|
|
973
|
+
sourcePart: owner.part,
|
|
974
|
+
shapeId: null,
|
|
975
|
+
shapeName: null,
|
|
976
|
+
kind: relationshipKind2(edge.type),
|
|
977
|
+
relationships: [reference(edge.id)],
|
|
978
|
+
posters: [],
|
|
979
|
+
playback: [],
|
|
980
|
+
captions: [],
|
|
981
|
+
timing: []
|
|
982
|
+
});
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
const media = [];
|
|
987
|
+
for (const part of [
|
|
988
|
+
...new Set(
|
|
989
|
+
occurrences.flatMap(
|
|
990
|
+
(occurrence) => occurrence.relationships.flatMap((ref) => ref.mediaPart ? [ref.mediaPart] : [])
|
|
991
|
+
)
|
|
992
|
+
)
|
|
993
|
+
].sort()) {
|
|
994
|
+
const info = index.inventory.parts.find((info2) => info2.part === part);
|
|
995
|
+
media.push({
|
|
996
|
+
part,
|
|
997
|
+
contentType: info.contentType,
|
|
998
|
+
bytes: info.bytes,
|
|
999
|
+
sha256: info.sha256,
|
|
1000
|
+
sha1: Array.from(sha12(reader.get(part)), (byte) => byte.toString(16).padStart(2, "0")).join(
|
|
1001
|
+
""
|
|
1002
|
+
),
|
|
1003
|
+
occurrenceIds: occurrences.filter((occurrence) => occurrence.relationships.some((ref) => ref.mediaPart === part)).map((occurrence) => occurrence.id)
|
|
1004
|
+
});
|
|
1005
|
+
}
|
|
1006
|
+
return { occurrences, media, playbackVerified: false };
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
export {
|
|
1010
|
+
RetainedMediaSelectionError,
|
|
1011
|
+
openRetainedMedia,
|
|
1012
|
+
stageRetainedMedia,
|
|
1013
|
+
stageRetainedMediaSelectionError,
|
|
1014
|
+
validateMediaOptions,
|
|
1015
|
+
readMedia
|
|
1016
|
+
};
|