7zip-native 0.0.0-stage → 0.0.1

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.
Files changed (1313) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -2
  3. package/THIRD_PARTY_NOTICES.md +23 -0
  4. package/bench/args.mts +69 -0
  5. package/bench/benchmark.mts +102 -0
  6. package/bench/compare.mts +546 -0
  7. package/bench/concurrency.mts +196 -0
  8. package/binding.gyp +51 -0
  9. package/dist/index.cjs +433 -0
  10. package/dist/index.d.cts +59 -0
  11. package/dist/index.d.mts +59 -0
  12. package/dist/index.d.ts +59 -0
  13. package/dist/index.mjs +429 -0
  14. package/docs/architecture.md +112 -0
  15. package/examples/basic.mts +19 -0
  16. package/native/addon.cpp +2154 -0
  17. package/package.json +85 -5
  18. package/prebuilds/linux-x64/7z.so +0 -0
  19. package/prebuilds/linux-x64/7zip_native.node +0 -0
  20. package/vendor/7zip/.gitattributes +2 -0
  21. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  22. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  23. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  24. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  25. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  26. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  27. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  28. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  29. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  30. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  31. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  32. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  33. package/vendor/7zip/C/7z.h +204 -0
  34. package/vendor/7zip/C/7zAlloc.c +89 -0
  35. package/vendor/7zip/C/7zAlloc.h +19 -0
  36. package/vendor/7zip/C/7zArcIn.c +1701 -0
  37. package/vendor/7zip/C/7zBuf.c +36 -0
  38. package/vendor/7zip/C/7zBuf.h +35 -0
  39. package/vendor/7zip/C/7zBuf2.c +52 -0
  40. package/vendor/7zip/C/7zCrc.c +420 -0
  41. package/vendor/7zip/C/7zCrc.h +28 -0
  42. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  43. package/vendor/7zip/C/7zDec.c +672 -0
  44. package/vendor/7zip/C/7zFile.c +443 -0
  45. package/vendor/7zip/C/7zFile.h +91 -0
  46. package/vendor/7zip/C/7zStream.c +199 -0
  47. package/vendor/7zip/C/7zTypes.h +600 -0
  48. package/vendor/7zip/C/7zVersion.h +27 -0
  49. package/vendor/7zip/C/7zVersion.rc +55 -0
  50. package/vendor/7zip/C/7zWindows.h +107 -0
  51. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  52. package/vendor/7zip/C/Aes.c +429 -0
  53. package/vendor/7zip/C/Aes.h +60 -0
  54. package/vendor/7zip/C/AesOpt.c +1002 -0
  55. package/vendor/7zip/C/Alloc.c +774 -0
  56. package/vendor/7zip/C/Alloc.h +76 -0
  57. package/vendor/7zip/C/Asm_c.mak +12 -0
  58. package/vendor/7zip/C/Bcj2.c +290 -0
  59. package/vendor/7zip/C/Bcj2.h +332 -0
  60. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  61. package/vendor/7zip/C/Blake2.h +105 -0
  62. package/vendor/7zip/C/Blake2s.c +2672 -0
  63. package/vendor/7zip/C/Bra.c +709 -0
  64. package/vendor/7zip/C/Bra.h +105 -0
  65. package/vendor/7zip/C/Bra86.c +187 -0
  66. package/vendor/7zip/C/BraIA64.c +14 -0
  67. package/vendor/7zip/C/BwtSort.c +630 -0
  68. package/vendor/7zip/C/BwtSort.h +27 -0
  69. package/vendor/7zip/C/Compiler.h +287 -0
  70. package/vendor/7zip/C/CpuArch.c +970 -0
  71. package/vendor/7zip/C/CpuArch.h +719 -0
  72. package/vendor/7zip/C/Delta.c +169 -0
  73. package/vendor/7zip/C/Delta.h +19 -0
  74. package/vendor/7zip/C/DllSecur.c +99 -0
  75. package/vendor/7zip/C/DllSecur.h +20 -0
  76. package/vendor/7zip/C/HuffEnc.c +361 -0
  77. package/vendor/7zip/C/HuffEnc.h +23 -0
  78. package/vendor/7zip/C/LzFind.c +1746 -0
  79. package/vendor/7zip/C/LzFind.h +160 -0
  80. package/vendor/7zip/C/LzFindMt.c +1422 -0
  81. package/vendor/7zip/C/LzFindMt.h +114 -0
  82. package/vendor/7zip/C/LzFindOpt.c +578 -0
  83. package/vendor/7zip/C/LzHash.h +34 -0
  84. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  85. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  86. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  87. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  88. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  89. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  90. package/vendor/7zip/C/Lzma86.h +111 -0
  91. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  92. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  93. package/vendor/7zip/C/LzmaDec.c +1367 -0
  94. package/vendor/7zip/C/LzmaDec.h +237 -0
  95. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  96. package/vendor/7zip/C/LzmaEnc.h +85 -0
  97. package/vendor/7zip/C/LzmaLib.c +42 -0
  98. package/vendor/7zip/C/LzmaLib.h +138 -0
  99. package/vendor/7zip/C/Md5.c +206 -0
  100. package/vendor/7zip/C/Md5.h +34 -0
  101. package/vendor/7zip/C/MtCoder.c +604 -0
  102. package/vendor/7zip/C/MtCoder.h +144 -0
  103. package/vendor/7zip/C/MtDec.c +1124 -0
  104. package/vendor/7zip/C/MtDec.h +202 -0
  105. package/vendor/7zip/C/Ppmd.h +169 -0
  106. package/vendor/7zip/C/Ppmd7.c +1131 -0
  107. package/vendor/7zip/C/Ppmd7.h +181 -0
  108. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  109. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  110. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  111. package/vendor/7zip/C/Ppmd8.c +1574 -0
  112. package/vendor/7zip/C/Ppmd8.h +181 -0
  113. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  114. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  115. package/vendor/7zip/C/Precomp.h +127 -0
  116. package/vendor/7zip/C/RotateDefs.h +50 -0
  117. package/vendor/7zip/C/Sha1.c +441 -0
  118. package/vendor/7zip/C/Sha1.h +86 -0
  119. package/vendor/7zip/C/Sha1Opt.c +424 -0
  120. package/vendor/7zip/C/Sha256.c +492 -0
  121. package/vendor/7zip/C/Sha256.h +86 -0
  122. package/vendor/7zip/C/Sha256Opt.c +451 -0
  123. package/vendor/7zip/C/Sha3.c +359 -0
  124. package/vendor/7zip/C/Sha3.h +36 -0
  125. package/vendor/7zip/C/Sha512.c +711 -0
  126. package/vendor/7zip/C/Sha512.h +86 -0
  127. package/vendor/7zip/C/Sha512Opt.c +395 -0
  128. package/vendor/7zip/C/Sort.c +268 -0
  129. package/vendor/7zip/C/Sort.h +15 -0
  130. package/vendor/7zip/C/SwapBytes.c +835 -0
  131. package/vendor/7zip/C/SwapBytes.h +17 -0
  132. package/vendor/7zip/C/Threads.c +826 -0
  133. package/vendor/7zip/C/Threads.h +260 -0
  134. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  135. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  136. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  137. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  138. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  139. package/vendor/7zip/C/Util/7z/makefile +44 -0
  140. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  141. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  142. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  143. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  144. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  145. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  146. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  147. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  148. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  149. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  150. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  151. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  152. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  153. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  154. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  155. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  156. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  157. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  158. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  159. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  160. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  161. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  162. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  163. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  164. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  165. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  166. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  167. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  168. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  169. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  170. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  171. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  172. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  173. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  174. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  175. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  176. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  177. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  178. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  179. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  180. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  181. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  182. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  183. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  184. package/vendor/7zip/C/Xxh64.c +389 -0
  185. package/vendor/7zip/C/Xxh64.h +50 -0
  186. package/vendor/7zip/C/Xz.c +92 -0
  187. package/vendor/7zip/C/Xz.h +542 -0
  188. package/vendor/7zip/C/XzCrc64.c +140 -0
  189. package/vendor/7zip/C/XzCrc64.h +26 -0
  190. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  191. package/vendor/7zip/C/XzDec.c +2865 -0
  192. package/vendor/7zip/C/XzEnc.c +1374 -0
  193. package/vendor/7zip/C/XzEnc.h +62 -0
  194. package/vendor/7zip/C/XzIn.c +385 -0
  195. package/vendor/7zip/C/ZstdDec.c +4067 -0
  196. package/vendor/7zip/C/ZstdDec.h +173 -0
  197. package/vendor/7zip/C/var_clang.mak +11 -0
  198. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  199. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  200. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  201. package/vendor/7zip/C/var_gcc.mak +12 -0
  202. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  203. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  204. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  205. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  206. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  207. package/vendor/7zip/C/warn_clang.mak +1 -0
  208. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  209. package/vendor/7zip/C/warn_gcc.mak +51 -0
  210. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  211. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  212. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  213. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  214. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  215. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  216. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  217. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  218. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  219. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  220. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  221. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  222. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  223. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  224. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  225. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  226. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  245. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  246. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  247. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  248. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  249. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  250. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  251. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  252. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  253. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  254. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  255. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  256. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  257. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  258. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  259. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  260. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  261. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  264. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  265. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  266. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  271. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  285. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  293. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  294. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  295. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  296. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  297. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  298. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  299. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  300. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  301. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  302. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  303. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  304. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  305. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  306. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  307. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  308. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  309. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  310. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  311. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  312. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  313. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  314. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  315. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  316. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  317. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  318. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  319. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  320. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  321. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  322. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  323. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  324. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  348. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  349. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  350. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  351. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  352. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  353. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  354. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  355. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  362. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  363. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  364. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  365. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  366. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  367. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  368. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  369. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  377. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  378. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  379. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  380. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  381. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  382. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  391. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  392. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  393. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  394. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  395. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  396. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  402. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  403. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  404. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  405. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  406. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  414. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  415. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  416. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  417. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  418. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  419. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  420. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  428. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  429. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  430. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  431. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  435. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  436. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  437. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  438. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  439. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  440. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  441. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  442. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  443. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  444. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  445. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  446. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  447. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  448. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  449. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  450. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  451. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  528. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  529. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  530. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  531. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  532. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  533. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  534. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  535. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  536. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  537. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  538. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  539. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  540. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  541. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  542. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  543. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  544. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  545. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  546. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  547. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  548. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  549. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  550. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  551. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  552. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  553. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  554. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  555. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  556. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  557. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  558. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  559. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  560. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  561. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  562. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  563. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  564. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  565. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  566. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  567. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  568. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  569. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  570. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  571. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  572. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  573. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  574. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  575. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  576. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  577. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  578. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  579. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  580. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  581. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  582. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  583. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  584. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  585. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  586. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  587. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  588. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  589. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  590. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  591. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  600. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  602. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  603. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  604. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  605. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  606. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  607. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  608. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  609. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  610. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  611. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  612. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  613. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  614. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  615. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  616. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  617. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  618. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  619. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  620. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  621. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  622. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  623. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  624. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  625. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  626. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  627. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  628. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  629. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  630. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  631. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  632. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  633. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  634. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  639. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  641. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  643. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  644. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  645. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  646. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  647. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  648. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  649. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  650. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  651. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  652. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  654. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  655. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  657. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  658. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  659. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  660. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  661. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  662. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  663. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  664. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  665. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  666. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  667. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  668. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  669. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  670. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  671. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  672. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  673. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  674. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  675. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  676. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  679. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  680. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  681. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  682. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  683. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  684. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  685. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  686. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  687. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  688. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  689. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  690. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  691. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  692. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  693. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  694. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  695. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  696. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  712. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  713. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  714. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  715. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  716. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  717. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  718. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  719. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  720. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  721. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  722. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  723. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  724. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  725. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  726. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  727. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  728. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  729. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  730. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  731. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  732. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  733. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  734. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  735. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  736. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  737. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  738. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  739. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  740. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  741. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  742. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  743. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  744. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  745. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  746. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  747. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  748. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  749. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  750. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  751. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  752. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  753. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  754. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  755. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  756. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  757. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  758. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  759. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  760. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  761. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  762. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  804. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  805. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  806. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  807. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  808. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  809. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  810. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  811. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  812. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  813. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  814. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  815. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  816. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  817. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  833. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  834. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  835. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  836. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  837. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  838. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  839. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  840. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  841. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  842. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  843. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  844. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  845. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  846. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  853. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  854. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  855. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  856. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  857. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  858. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  859. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  860. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  861. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  862. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  863. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  864. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  865. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  866. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  879. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  880. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  881. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  882. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  883. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  884. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  885. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  886. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  887. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  888. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  889. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  890. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  891. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  892. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1076. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1077. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1078. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1079. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1080. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1081. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1082. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1083. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1084. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1085. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1086. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1087. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1088. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1089. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1114. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1115. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1116. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1117. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1118. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1119. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1120. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1121. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1122. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1123. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1124. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1125. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1126. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1127. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1128. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1129. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1130. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1131. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1132. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1133. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1134. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1135. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1136. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1137. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1138. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1140. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1141. package/vendor/7zip/CPP/Build.mak +259 -0
  1142. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1143. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1144. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1145. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1146. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1147. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1148. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1149. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1150. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1151. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1152. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1153. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1154. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1155. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1156. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1157. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1158. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1159. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1160. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1161. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1162. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1163. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1164. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1165. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1166. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1167. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1168. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1169. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1170. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1171. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1172. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1173. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1174. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1175. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1176. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1177. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1178. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1179. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1180. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1181. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1182. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1183. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1184. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1185. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1186. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1187. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1188. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1189. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1190. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1191. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1192. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1193. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1194. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1195. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1196. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1197. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1198. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1199. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1200. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1201. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1202. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1203. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1204. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1205. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1206. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1207. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1208. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1209. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1210. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1211. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1212. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1213. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1214. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1215. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1216. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1217. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1218. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1219. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1220. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1221. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1222. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1223. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1224. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1225. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1226. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1227. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1228. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1229. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1230. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1231. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1232. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1233. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1234. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1235. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1236. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1237. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1238. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1241. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1242. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1243. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1244. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1245. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1246. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1247. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1248. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1249. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1250. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1251. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1252. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1253. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1254. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1255. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1256. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1257. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1258. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1259. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1260. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1261. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1262. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1263. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1264. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1265. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1266. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1267. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1268. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1269. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1270. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1271. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1272. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1273. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1274. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1275. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1276. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1277. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1278. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1279. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1280. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1281. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1282. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1283. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1284. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1285. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1286. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1287. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1288. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1289. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1290. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1291. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1292. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1293. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1294. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1295. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1296. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1297. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1298. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1299. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1300. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1301. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1302. package/vendor/7zip/DOC/7zC.txt +187 -0
  1303. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1304. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1305. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1306. package/vendor/7zip/DOC/License.txt +151 -0
  1307. package/vendor/7zip/DOC/Methods.txt +177 -0
  1308. package/vendor/7zip/DOC/copying.txt +502 -0
  1309. package/vendor/7zip/DOC/lzma.txt +345 -0
  1310. package/vendor/7zip/DOC/readme.txt +299 -0
  1311. package/vendor/7zip/DOC/src-history.txt +884 -0
  1312. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1313. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,2336 @@
1
+ // DmgHandler.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ #include "../../../C/Alloc.h"
6
+ #include "../../../C/CpuArch.h"
7
+
8
+ #include "../../Common/AutoPtr.h"
9
+ #include "../../Common/ComTry.h"
10
+ #include "../../Common/IntToString.h"
11
+ #include "../../Common/MyBuffer2.h"
12
+ #include "../../Common/MyXml.h"
13
+ #include "../../Common/UTFConvert.h"
14
+
15
+ #include "../../Windows/PropVariant.h"
16
+
17
+ #include "../Common/LimitedStreams.h"
18
+ #include "../Common/ProgressUtils.h"
19
+ #include "../Common/RegisterArc.h"
20
+ #include "../Common/StreamObjects.h"
21
+ #include "../Common/StreamUtils.h"
22
+
23
+ #include "../Compress/BZip2Decoder.h"
24
+ #include "../Compress/CopyCoder.h"
25
+ #include "../Compress/LzfseDecoder.h"
26
+ #include "../Compress/XzDecoder.h"
27
+ #include "../Compress/ZlibDecoder.h"
28
+
29
+ #include "Common/OutStreamWithCRC.h"
30
+
31
+ // #define DMG_SHOW_RAW
32
+
33
+ // #define SHOW_DEBUG_INFO
34
+
35
+ /* for debug only: we can use block cache also for METHOD_COPY blocks.
36
+ It can reduce the number of Stream->Read() requests.
37
+ But it can increase memory usage.
38
+ Note: METHOD_COPY blocks are not fused usually.
39
+ But if METHOD_COPY blocks is fused in some dmg example,
40
+ block size can exceed k_Chunk_Size_MAX.
41
+ So we don't use cache for METHOD_COPY block, if (block_size > k_Chunk_Size_MAX)
42
+ */
43
+ // for debug only:
44
+ // #define Z7_DMG_USE_CACHE_FOR_COPY_BLOCKS
45
+
46
+ #ifdef SHOW_DEBUG_INFO
47
+ #include <stdio.h>
48
+ #define PRF(x) x
49
+ #else
50
+ #define PRF(x)
51
+ #endif
52
+
53
+
54
+ #define Get16(p) GetBe16(p)
55
+ #define Get32(p) GetBe32(p)
56
+ #define Get64(p) GetBe64(p)
57
+
58
+ #define Get32a(p) GetBe32a(p)
59
+ #define Get64a(p) GetBe64a(p)
60
+
61
+ Byte *Base64ToBin(Byte *dest Z7_lifetimebound, const char *src);
62
+
63
+ namespace NArchive {
64
+ namespace NDmg {
65
+
66
+ // allocation limits for compressed blocks for GetStream() interface:
67
+ static const unsigned k_NumChunks_MAX = 128;
68
+ static const size_t k_Chunk_Size_MAX = (size_t)1 << 28;
69
+ // 256 MB cache for 32-bit:
70
+ // 4 GB cache for 64-bit:
71
+ static const size_t k_Chunks_TotalSize_MAX = (size_t)1 << (sizeof(size_t) + 24);
72
+
73
+ // 2 GB limit for 32-bit:
74
+ // 4 GB limit for 64-bit:
75
+ // that limit can be increased for 64-bit mode, if there are such dmg files
76
+ static const size_t k_XmlSize_MAX =
77
+ ((size_t)1 << (sizeof(size_t) / 4 + 30)) - 256;
78
+
79
+ static const UInt32 METHOD_ZERO_0 = 0; // sparse
80
+ static const UInt32 METHOD_COPY = 1;
81
+ static const UInt32 METHOD_ZERO_2 = 2; // sparse : without file CRC calculation
82
+ static const UInt32 METHOD_ADC = 0x80000004;
83
+ static const UInt32 METHOD_ZLIB = 0x80000005;
84
+ static const UInt32 METHOD_BZIP2 = 0x80000006;
85
+ static const UInt32 METHOD_LZFSE = 0x80000007;
86
+ static const UInt32 METHOD_XZ = 0x80000008;
87
+ static const UInt32 METHOD_COMMENT = 0x7FFFFFFE; // is used to comment "+beg" and "+end" in extra field.
88
+ static const UInt32 METHOD_END = 0xFFFFFFFF;
89
+
90
+
91
+ struct CBlock
92
+ {
93
+ UInt32 Type;
94
+ UInt64 UnpPos;
95
+ // UInt64 UnpSize;
96
+ UInt64 PackPos;
97
+ UInt64 PackSize;
98
+
99
+ bool NeedCrc() const { return Type != METHOD_ZERO_2; }
100
+ bool IsZeroMethod() const
101
+ {
102
+ return (Type & ~(UInt32)METHOD_ZERO_2) == 0;
103
+ // return Type == METHOD_ZERO_0 || Type == METHOD_ZERO_2;
104
+ }
105
+
106
+ bool IsClusteredMethod() const
107
+ {
108
+ // most of dmg files have non-fused COPY_METHOD blocks.
109
+ // so we don't exclude COPY_METHOD blocks when we try to detect size of cluster.
110
+ return !IsZeroMethod(); // include COPY_METHOD blocks.
111
+ // Type > METHOD_ZERO_2; // for debug: exclude COPY_METHOD blocks.
112
+ }
113
+
114
+ bool NeedAllocateBuffer() const
115
+ {
116
+ return
117
+ #ifdef Z7_DMG_USE_CACHE_FOR_COPY_BLOCKS
118
+ !IsZeroMethod();
119
+ #else
120
+ Type > METHOD_ZERO_2;
121
+ // !IsZeroMethod() && Type != METHOD_COPY;
122
+ #endif
123
+ }
124
+ // we don't store non-data blocks now
125
+ // bool ThereAreDataInBlock() const { return Type != METHOD_COMMENT && Type != METHOD_END; }
126
+ };
127
+
128
+ static const UInt32 kCheckSumType_CRC = 2;
129
+ static const unsigned kChecksumSize_Max = 0x80;
130
+
131
+ struct CChecksum
132
+ {
133
+ UInt32 Type;
134
+ UInt32 NumBits;
135
+ Byte Data[kChecksumSize_Max];
136
+
137
+ bool IsCrc32() const { return Type == kCheckSumType_CRC && NumBits == 32; }
138
+ UInt32 GetCrc32() const { return Get32(Data); }
139
+ void Parse(const Byte *p);
140
+
141
+ void PrintType(AString &s) const;
142
+ void Print(AString &s) const;
143
+ void Print_with_Name(AString &s) const;
144
+ void AddToComment(AString &s, const char *name) const;
145
+ };
146
+
147
+ void CChecksum::Parse(const Byte *p)
148
+ {
149
+ Type = Get32(p);
150
+ NumBits = Get32(p + 4);
151
+ memcpy(Data, p + 8, kChecksumSize_Max);
152
+ }
153
+
154
+
155
+ void CChecksum::PrintType(AString &s) const
156
+ {
157
+ if (NumBits == 0)
158
+ return;
159
+ if (IsCrc32())
160
+ s += "CRC";
161
+ else
162
+ {
163
+ s += "Checksum";
164
+ s.Add_UInt32(Type);
165
+ s.Add_Minus();
166
+ s.Add_UInt32(NumBits);
167
+ }
168
+ }
169
+
170
+ void CChecksum::Print(AString &s) const
171
+ {
172
+ if (NumBits == 0)
173
+ return;
174
+ char temp[kChecksumSize_Max * 2 + 2];
175
+ /*
176
+ if (IsCrc32())
177
+ ConvertUInt32ToHex8Digits(GetCrc32(), temp);
178
+ else
179
+ */
180
+ {
181
+ UInt32 numBits = kChecksumSize_Max * 8;
182
+ if (numBits > NumBits)
183
+ numBits = NumBits;
184
+ const unsigned numBytes = (numBits + 7) >> 3;
185
+ if (numBytes <= 8)
186
+ ConvertDataToHex_Upper(temp, Data, numBytes);
187
+ else
188
+ ConvertDataToHex_Lower(temp, Data, numBytes);
189
+ }
190
+ s += temp;
191
+ }
192
+
193
+ void CChecksum::Print_with_Name(AString &s) const
194
+ {
195
+ if (NumBits == 0)
196
+ return;
197
+ PrintType(s);
198
+ s += ": ";
199
+ Print(s);
200
+ }
201
+
202
+ static void AddToComment_Prop(AString &s, const char *name, const char *val)
203
+ {
204
+ s += name;
205
+ s += ": ";
206
+ s += val;
207
+ s.Add_LF();
208
+ }
209
+
210
+ void CChecksum::AddToComment(AString &s, const char *name) const
211
+ {
212
+ AString s2;
213
+ Print_with_Name(s2);
214
+ if (!s2.IsEmpty())
215
+ AddToComment_Prop(s, name, s2);
216
+ }
217
+
218
+
219
+ struct CFile
220
+ {
221
+ UInt64 Size;
222
+ CRecordVector<CBlock> Blocks;
223
+ UInt64 PackSize;
224
+ UInt64 StartPackPos;
225
+ UInt64 BlockSize_MAX;
226
+ UInt64 StartUnpackSector; // unpack sector position of this file from all files
227
+ UInt64 NumUnpackSectors;
228
+ Int32 Descriptor;
229
+ bool IsCorrect;
230
+ bool FullFileChecksum;
231
+ AString Name;
232
+ // AString Id;
233
+ CChecksum Checksum;
234
+
235
+ UInt64 GetUnpackSize_of_Block(unsigned blockIndex) const
236
+ {
237
+ return (blockIndex == Blocks.Size() - 1 ?
238
+ Size : Blocks[blockIndex + 1].UnpPos) - Blocks[blockIndex].UnpPos;
239
+ }
240
+
241
+ CFile():
242
+ Size(0),
243
+ PackSize(0),
244
+ StartPackPos(0),
245
+ BlockSize_MAX(0),
246
+ StartUnpackSector(0),
247
+ NumUnpackSectors(0),
248
+ Descriptor(0),
249
+ IsCorrect(false),
250
+ FullFileChecksum(false)
251
+ {
252
+ Checksum.Type = 0;
253
+ Checksum.NumBits = 0;
254
+ }
255
+ HRESULT Parse(const Byte *p, UInt32 size);
256
+ };
257
+
258
+ #ifdef DMG_SHOW_RAW
259
+ struct CExtraFile
260
+ {
261
+ CByteBuffer Data;
262
+ AString Name;
263
+ };
264
+ #endif
265
+
266
+
267
+ static void AddToComment_UInt64(AString &s, UInt64 v, const char *name)
268
+ {
269
+ s += name;
270
+ s += ": ";
271
+ s.Add_UInt64(v);
272
+ s.Add_LF();
273
+ }
274
+
275
+ struct CForkPair
276
+ {
277
+ UInt64 Offset;
278
+ UInt64 Len;
279
+
280
+ // (p) is aligned for 8-bytes
281
+ void Parse(const Byte *p)
282
+ {
283
+ Offset = Get64a(p);
284
+ Len = Get64a(p + 8);
285
+ }
286
+
287
+ bool GetEndPos(UInt64 &endPos)
288
+ {
289
+ endPos = Offset + Len;
290
+ return endPos >= Offset;
291
+ }
292
+
293
+ bool UpdateTop(UInt64 limit, UInt64 &top)
294
+ {
295
+ if (Offset > limit || Len > limit - Offset)
296
+ return false;
297
+ const UInt64 top2 = Offset + Len;
298
+ if (top <= top2)
299
+ top = top2;
300
+ return true;
301
+ }
302
+
303
+ void Print(AString &s, const char *name) const;
304
+ };
305
+
306
+ void CForkPair::Print(AString &s, const char *name) const
307
+ {
308
+ if (Offset != 0 || Len != 0)
309
+ {
310
+ s += name; s.Add_Minus(); AddToComment_UInt64(s, Offset, "offset");
311
+ s += name; s.Add_Minus(); AddToComment_UInt64(s, Len, "length");
312
+ }
313
+ }
314
+
315
+
316
+ Z7_CLASS_IMP_CHandler_IInArchive_1(
317
+ IInArchiveGetStream
318
+ )
319
+ bool _masterCrcError;
320
+ bool _headersError;
321
+ bool _dataForkError;
322
+ bool _rsrcMode_wasUsed;
323
+
324
+ CMyComPtr<IInStream> _inStream;
325
+ CObjectVector<CFile> _files;
326
+
327
+ // UInt32 _dataStartOffset;
328
+ UInt64 _startPos;
329
+ UInt64 _phySize;
330
+
331
+ AString _name;
332
+
333
+ CForkPair _dataForkPair;
334
+ CForkPair rsrcPair, xmlPair, blobPair;
335
+
336
+ // UInt64 _runningDataForkOffset;
337
+ // UInt32 _segmentNumber;
338
+ // UInt32 _segmentCount;
339
+ UInt64 _numSectors; // total unpacked number of sectors
340
+ Byte _segmentGUID[16];
341
+
342
+ CChecksum _dataForkChecksum;
343
+ CChecksum _masterChecksum;
344
+
345
+ #ifdef DMG_SHOW_RAW
346
+ CObjectVector<CExtraFile> _extras;
347
+ #endif
348
+
349
+ HRESULT ReadData(IInStream *stream, const CForkPair &pair, CByteBuffer &buf);
350
+ bool ParseBlob(const CByteBuffer &data);
351
+ HRESULT Open2(IInStream *stream, IArchiveOpenCallback *openArchiveCallback);
352
+ HRESULT Extract(IInStream *stream);
353
+ };
354
+
355
+
356
+ struct CMethods
357
+ {
358
+ CRecordVector<UInt32> Types;
359
+
360
+ void Update(const CFile &file);
361
+ void AddToString(AString &s) const;
362
+ };
363
+
364
+ void CMethods::Update(const CFile &file)
365
+ {
366
+ FOR_VECTOR (i, file.Blocks)
367
+ {
368
+ if (Types.Size() >= (1 << 8))
369
+ break;
370
+ Types.AddToUniqueSorted(file.Blocks[i].Type);
371
+ }
372
+ }
373
+
374
+ void CMethods::AddToString(AString &res) const
375
+ {
376
+ FOR_VECTOR (i, Types)
377
+ {
378
+ const UInt32 type = Types[i];
379
+ /*
380
+ if (type == METHOD_COMMENT || type == METHOD_END)
381
+ continue;
382
+ */
383
+ char buf[16];
384
+ const char *s;
385
+ switch (type)
386
+ {
387
+ // case METHOD_COMMENT: s = "Comment"; break;
388
+ case METHOD_ZERO_0: s = "Zero0"; break;
389
+ case METHOD_ZERO_2: s = "Zero2"; break;
390
+ case METHOD_COPY: s = "Copy"; break;
391
+ case METHOD_ADC: s = "ADC"; break;
392
+ case METHOD_ZLIB: s = "ZLIB"; break;
393
+ case METHOD_BZIP2: s = "BZip2"; break;
394
+ case METHOD_LZFSE: s = "LZFSE"; break;
395
+ case METHOD_XZ: s = "XZ"; break;
396
+ default: ConvertUInt32ToHex(type, buf); s = buf;
397
+ }
398
+ res.Add_OptSpaced(s);
399
+ }
400
+ }
401
+
402
+
403
+
404
+ struct CAppleName
405
+ {
406
+ bool IsFs;
407
+ const char *Ext;
408
+ const char *AppleName;
409
+ };
410
+
411
+ static const CAppleName k_Names[] =
412
+ {
413
+ { true, "hfs", "Apple_HFS" },
414
+ { true, "hfsx", "Apple_HFSX" },
415
+ { true, "ufs", "Apple_UFS" },
416
+ { true, "apfs", "Apple_APFS" },
417
+ { true, "iso", "Apple_ISO" },
418
+
419
+ // efi_sys partition is FAT32, but it's not main file. So we use (IsFs = false)
420
+ { false, "efi_sys", "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" },
421
+
422
+ { false, "free", "Apple_Free" },
423
+ { false, "ddm", "DDM" },
424
+ { false, NULL, "Apple_partition_map" },
425
+ { false, NULL, " GPT " },
426
+ /* " GPT " is substring of full name entry in dmg that contains
427
+ some small metadata GPT entry. It's not real FS entry:
428
+ "Primary GPT Header",
429
+ "Primary GPT Table"
430
+ "Backup GPT Header",
431
+ "Backup GPT Table",
432
+ */
433
+ { false, NULL, "MBR" },
434
+ { false, NULL, "Driver" },
435
+ { false, NULL, "Patches" }
436
+ };
437
+
438
+ static const unsigned kNumAppleNames = Z7_ARRAY_SIZE(k_Names);
439
+
440
+ const char *Find_Apple_FS_Ext(const AString &name);
441
+ const char *Find_Apple_FS_Ext(const AString &name)
442
+ {
443
+ for (unsigned i = 0; i < kNumAppleNames; i++)
444
+ {
445
+ const CAppleName &a = k_Names[i];
446
+ if (a.Ext)
447
+ if (name.IsEqualTo(a.AppleName))
448
+ return a.Ext;
449
+ }
450
+ return NULL;
451
+ }
452
+
453
+
454
+ bool Is_Apple_FS_Or_Unknown(const AString &name);
455
+ bool Is_Apple_FS_Or_Unknown(const AString &name)
456
+ {
457
+ for (unsigned i = 0; i < kNumAppleNames; i++)
458
+ {
459
+ const CAppleName &a = k_Names[i];
460
+ // if (name.Find(a.AppleName) >= 0)
461
+ if (strstr(name, a.AppleName))
462
+ return a.IsFs;
463
+ }
464
+ return true;
465
+ }
466
+
467
+
468
+
469
+ // define it for debug only:
470
+ // #define Z7_DMG_SINGLE_FILE_MODE
471
+
472
+ static const Byte kProps[] =
473
+ {
474
+ kpidPath,
475
+ kpidSize,
476
+ kpidPackSize,
477
+ kpidComment,
478
+ kpidMethod,
479
+ kpidNumBlocks,
480
+ kpidClusterSize,
481
+ kpidChecksum,
482
+ kpidCRC,
483
+ kpidId
484
+ // kpidOffset
485
+ #ifdef Z7_DMG_SINGLE_FILE_MODE
486
+ , kpidPosition
487
+ #endif
488
+ };
489
+
490
+ IMP_IInArchive_Props
491
+
492
+ static const Byte kArcProps[] =
493
+ {
494
+ kpidMethod,
495
+ kpidNumBlocks,
496
+ kpidClusterSize,
497
+ kpidComment
498
+ };
499
+
500
+
501
+ Z7_COM7F_IMF(CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value))
502
+ {
503
+ COM_TRY_BEGIN
504
+ NWindows::NCOM::CPropVariant prop;
505
+ switch (propID)
506
+ {
507
+ case kpidMethod:
508
+ {
509
+ CMethods m;
510
+ CRecordVector<UInt32> ChecksumTypes;
511
+ {
512
+ FOR_VECTOR (i, _files)
513
+ {
514
+ const CFile &file = _files[i];
515
+ m.Update(file);
516
+ if (ChecksumTypes.Size() < (1 << 8))
517
+ ChecksumTypes.AddToUniqueSorted(file.Checksum.Type);
518
+ }
519
+ }
520
+ AString s;
521
+ m.AddToString(s);
522
+
523
+ FOR_VECTOR (i, ChecksumTypes)
524
+ {
525
+ const UInt32 type = ChecksumTypes[i];
526
+ switch (type)
527
+ {
528
+ case kCheckSumType_CRC:
529
+ s.Add_OptSpaced("CRC");
530
+ break;
531
+ default:
532
+ s.Add_OptSpaced("Checksum");
533
+ s.Add_UInt32(type);
534
+ }
535
+ }
536
+
537
+ if (!s.IsEmpty())
538
+ prop = s;
539
+ break;
540
+ }
541
+ case kpidNumBlocks:
542
+ {
543
+ UInt64 numBlocks = 0;
544
+ FOR_VECTOR (i, _files)
545
+ numBlocks += _files[i].Blocks.Size();
546
+ prop = numBlocks;
547
+ break;
548
+ }
549
+ case kpidClusterSize:
550
+ {
551
+ UInt64 blockSize_MAX = 0;
552
+ FOR_VECTOR (i, _files)
553
+ {
554
+ const UInt64 a = _files[i].BlockSize_MAX;
555
+ if (blockSize_MAX < a)
556
+ blockSize_MAX = a;
557
+ }
558
+ prop = blockSize_MAX;
559
+ break;
560
+ }
561
+ case kpidMainSubfile:
562
+ {
563
+ int mainIndex = -1;
564
+ FOR_VECTOR (i, _files)
565
+ {
566
+ if (Is_Apple_FS_Or_Unknown(_files[i].Name))
567
+ {
568
+ if (mainIndex != -1)
569
+ {
570
+ mainIndex = -1;
571
+ break;
572
+ }
573
+ mainIndex = (int)i;
574
+ }
575
+ }
576
+ if (mainIndex != -1)
577
+ prop = (UInt32)(Int32)mainIndex;
578
+ break;
579
+ }
580
+ case kpidWarning:
581
+ if (_masterCrcError)
582
+ prop = "Master CRC error";
583
+ break;
584
+
585
+ case kpidWarningFlags:
586
+ {
587
+ UInt32 v = 0;
588
+ if (_headersError) v |= kpv_ErrorFlags_HeadersError;
589
+ if (_dataForkError) v |= kpv_ErrorFlags_CrcError;
590
+ if (v != 0)
591
+ prop = v;
592
+ break;
593
+ }
594
+
595
+ case kpidOffset: prop = _startPos; break;
596
+ case kpidPhySize: prop = _phySize; break;
597
+
598
+ case kpidComment:
599
+ {
600
+ AString s;
601
+ if (!_name.IsEmpty())
602
+ AddToComment_Prop(s, "Name", _name);
603
+ AddToComment_UInt64(s, _numSectors << 9, "unpack-size");
604
+ {
605
+ char temp[sizeof(_segmentGUID) * 2 + 2];
606
+ ConvertDataToHex_Lower(temp, _segmentGUID, sizeof(_segmentGUID));
607
+ AddToComment_Prop(s, "ID", temp);
608
+ }
609
+ _masterChecksum.AddToComment(s, "master-checksum");
610
+ _dataForkChecksum.AddToComment(s, "pack-checksum");
611
+ {
612
+ /*
613
+ if (_dataStartOffset != 0)
614
+ AddToComment_UInt64(s, _dataStartOffset, "payload-start-offset");
615
+ */
616
+ // if (_dataForkPair.Offset != 0)
617
+ _dataForkPair.Print(s, "pack");
618
+ rsrcPair.Print(s, "rsrc");
619
+ xmlPair.Print(s, "xml");
620
+ blobPair.Print(s, "blob");
621
+ }
622
+ if (_rsrcMode_wasUsed)
623
+ s += "RSRC_MODE\n";
624
+ if (!s.IsEmpty())
625
+ prop = s;
626
+ }
627
+ break;
628
+
629
+ case kpidName:
630
+ if (!_name.IsEmpty())
631
+ prop = _name + ".dmg";
632
+ break;
633
+ }
634
+ prop.Detach(value);
635
+ return S_OK;
636
+ COM_TRY_END
637
+ }
638
+
639
+ IMP_IInArchive_ArcProps
640
+
641
+
642
+
643
+ static const UInt64 kSectorNumber_LIMIT = (UInt64)1 << (63 - 9);
644
+
645
+ HRESULT CFile::Parse(const Byte *p, UInt32 size)
646
+ {
647
+ // CFile was initialized to default values: 0 in size variables and (IsCorrect == false)
648
+ const unsigned kHeadSize = 0xCC;
649
+ if (size < kHeadSize)
650
+ return S_FALSE;
651
+ if (Get32(p) != 0x6D697368) // "mish" signature
652
+ return S_FALSE;
653
+ if (Get32(p + 4) != 1) // version
654
+ return S_FALSE;
655
+
656
+ StartUnpackSector = Get64(p + 8);
657
+ NumUnpackSectors = Get64(p + 0x10);
658
+ StartPackPos = Get64(p + 0x18);
659
+
660
+ #ifdef SHOW_DEBUG_INFO
661
+ /* the number of sectors that must be allocated.
662
+ == 0x208 for 256KB clusters
663
+ == 0x808 for 1MB clusters
664
+ == 0x1001 for 1MB clusters in some example
665
+ */
666
+ const UInt32 decompressedBufRequested = Get32(p + 0x20);
667
+ #endif
668
+
669
+ // Descriptor is file index. usually started from -1
670
+ // in one dmg it was started from 0
671
+ Descriptor = (Int32)Get32(p + 0x24);
672
+ // char Reserved1[24];
673
+
674
+ Checksum.Parse(p + 0x40);
675
+ PRF(printf("\n" " Checksum Type = %2u"
676
+ "\n StartUnpackSector = %8x"
677
+ "\n NumUnpackSectors = %8x"
678
+ "\n StartPos = %8x"
679
+ "\n decompressedBufRequested=%8x"
680
+ "\n blocksDescriptor=%8x"
681
+ , (unsigned)Checksum.Type
682
+ , (unsigned)StartUnpackSector
683
+ , (unsigned)NumUnpackSectors
684
+ , (unsigned)StartPackPos
685
+ , (unsigned)decompressedBufRequested
686
+ , (unsigned)Descriptor
687
+ );)
688
+
689
+ const UInt32 numBlocks = Get32(p + 0xC8);
690
+ const unsigned kRecordSize = 40;
691
+ if ((UInt64)numBlocks * kRecordSize + kHeadSize != size)
692
+ return S_FALSE;
693
+
694
+ Blocks.ClearAndReserve(numBlocks);
695
+ FullFileChecksum = true;
696
+ /* IsCorrect = false; by default
697
+ So we return S_OK, if we can ignore some error in headers.
698
+ */
699
+
700
+ p += kHeadSize;
701
+ UInt32 i;
702
+
703
+ for (i = 0; i < numBlocks; i++, p += kRecordSize)
704
+ {
705
+ CBlock b;
706
+ b.Type = Get32(p);
707
+ {
708
+ const UInt64 a = Get64(p + 0x08);
709
+ if (a >= kSectorNumber_LIMIT)
710
+ return S_OK;
711
+ b.UnpPos = a << 9;
712
+ }
713
+ UInt64 unpSize;
714
+ {
715
+ const UInt64 a = Get64(p + 0x10);
716
+ if (a >= kSectorNumber_LIMIT)
717
+ return S_OK;
718
+ unpSize = a << 9;
719
+ }
720
+ const UInt64 newSize = b.UnpPos + unpSize;
721
+ if (newSize >= ((UInt64)1 << 63))
722
+ return S_OK;
723
+
724
+ b.PackPos = Get64(p + 0x18);
725
+ b.PackSize = Get64(p + 0x20);
726
+ // b.PackPos can be 0 for some types. So we don't check it
727
+ if (b.UnpPos != Size)
728
+ return S_OK;
729
+
730
+ PRF(printf("\nType=%8x comment=%8x uPos=%8x uSize=%7x pPos=%8x pSize=%7x",
731
+ (unsigned)b.Type, Get32(p + 4), (unsigned)b.UnpPos, (unsigned)unpSize, (unsigned)b.PackPos, (unsigned)b.PackSize));
732
+
733
+ if (b.Type == METHOD_COMMENT)
734
+ {
735
+ // some files contain 2 comment block records:
736
+ // record[0] : Type=METHOD_COMMENT, comment_field = "+beg"
737
+ // record[num-2] : Type=METHOD_COMMENT, comment_field = "+end"
738
+ // we skip these useless records.
739
+ continue;
740
+ }
741
+ if (b.Type == METHOD_END)
742
+ break;
743
+
744
+ // we add only blocks that have non empty unpacked data:
745
+ if (unpSize != 0)
746
+ {
747
+ const UInt64 k_max_pos = (UInt64)1 << 63;
748
+ if (b.PackPos >= k_max_pos ||
749
+ b.PackSize >= k_max_pos - b.PackPos)
750
+ return S_OK;
751
+
752
+ /* we don't count non-ZERO blocks here, because
753
+ ZERO blocks in dmg files are not limited by some cluster size.
754
+ note: COPY blocks also sometimes are fused to larger blocks.
755
+ */
756
+ if (b.IsClusteredMethod())
757
+ if (BlockSize_MAX < unpSize)
758
+ BlockSize_MAX = unpSize;
759
+
760
+ PackSize += b.PackSize;
761
+ if (!b.NeedCrc())
762
+ FullFileChecksum = false;
763
+ Blocks.AddInReserved(b);
764
+ Size = newSize;
765
+ }
766
+ }
767
+
768
+ PRF(printf("\n");)
769
+
770
+ if (i != numBlocks - 1)
771
+ {
772
+ // return S_FALSE;
773
+ return S_OK;
774
+ }
775
+
776
+ if ((Size >> 9) == NumUnpackSectors)
777
+ IsCorrect = true;
778
+ return S_OK;
779
+ }
780
+
781
+
782
+ static const CXmlItem *FindKeyPair(const CXmlItem &item, const char *key, const char *nextTag)
783
+ {
784
+ for (unsigned i = 0; i + 1 < item.SubItems.Size(); i++)
785
+ {
786
+ const CXmlItem &si = item.SubItems[i];
787
+ if (si.IsTagged("key") && si.GetSubString().IsEqualTo(key))
788
+ {
789
+ const CXmlItem *si_1 = &item.SubItems[i + 1];
790
+ if (si_1->IsTagged(nextTag))
791
+ return si_1;
792
+ }
793
+ }
794
+ return NULL;
795
+ }
796
+
797
+ static const AString *GetStringFromKeyPair(const CXmlItem &item, const char *key, const char *nextTag)
798
+ {
799
+ const CXmlItem *si_1 = FindKeyPair(item, key, nextTag);
800
+ if (si_1)
801
+ return si_1->GetSubStringPtr();
802
+ return NULL;
803
+ }
804
+
805
+ static const Byte k_Signature[] = { 'k','o','l','y', 0, 0, 0, 4, 0, 0, 2, 0 };
806
+
807
+ static inline bool IsKoly(const Byte *p)
808
+ {
809
+ return memcmp(p, k_Signature, Z7_ARRAY_SIZE(k_Signature)) == 0;
810
+ /*
811
+ if (Get32(p) != 0x6B6F6C79) // "koly" signature
812
+ return false;
813
+ if (Get32(p + 4) != 4) // version
814
+ return false;
815
+ if (Get32(p + 8) != HEADER_SIZE)
816
+ return false;
817
+ return true;
818
+ */
819
+ }
820
+
821
+
822
+ HRESULT CHandler::ReadData(IInStream *stream, const CForkPair &pair, CByteBuffer &buf)
823
+ {
824
+ size_t size = (size_t)pair.Len;
825
+ if (size != pair.Len)
826
+ return E_OUTOFMEMORY;
827
+ buf.Alloc(size);
828
+ RINOK(InStream_SeekSet(stream, _startPos + pair.Offset))
829
+ return ReadStream_FALSE(stream, buf, size);
830
+ }
831
+
832
+
833
+
834
+ bool CHandler::ParseBlob(const CByteBuffer &data)
835
+ {
836
+ const unsigned kHeaderSize = 3 * 4;
837
+ if (data.Size() < kHeaderSize)
838
+ return false;
839
+ const Byte * const p = (const Byte *)data;
840
+ if (Get32a(p) != 0xfade0cc0) // CSMAGIC_EMBEDDED_SIGNATURE
841
+ return true;
842
+ const UInt32 size = Get32a(p + 4);
843
+ if (size != data.Size())
844
+ return false;
845
+ const UInt32 num = Get32a(p + 8);
846
+ if (num > (size - kHeaderSize) / 8)
847
+ return false;
848
+
849
+ const UInt32 limit = num * 8 + kHeaderSize;
850
+ for (size_t i = kHeaderSize; i < limit; i += 8)
851
+ {
852
+ // type == 0 == CSSLOT_CODEDIRECTORY for CSMAGIC_CODEDIRECTORY item
853
+ // UInt32 type = Get32(p + i);
854
+ const UInt32 offset = Get32a(p + i + 4);
855
+ if (offset < limit || offset > size - 8)
856
+ return false;
857
+ // offset is not aligned for 4 here !!!
858
+ const Byte * const p2 = p + offset;
859
+ const UInt32 magic = Get32(p2);
860
+ const UInt32 len = Get32(p2 + 4);
861
+ if (size - offset < len || len < 8)
862
+ return false;
863
+
864
+ #ifdef DMG_SHOW_RAW
865
+ CExtraFile &extra = _extras.AddNew();
866
+ extra.Name = "_blob_";
867
+ extra.Data.CopyFrom(p2, len);
868
+ #endif
869
+
870
+ if (magic == 0xfade0c02) // CSMAGIC_CODEDIRECTORY
871
+ {
872
+ #ifdef DMG_SHOW_RAW
873
+ extra.Name += "codedir";
874
+ #endif
875
+
876
+ if (len < 11 * 4)
877
+ return false;
878
+ const UInt32 idOffset = Get32(p2 + 5 * 4);
879
+ if (idOffset >= len)
880
+ return false;
881
+ UInt32 len2 = len - idOffset;
882
+ const UInt32 kNameLenMax = 1 << 8;
883
+ if (len2 > kNameLenMax)
884
+ len2 = kNameLenMax;
885
+ _name.SetFrom_CalcLen((const char *)(p2 + idOffset), len2);
886
+ /*
887
+ // #define kSecCodeSignatureHashSHA1 1
888
+ // #define kSecCodeSignatureHashSHA256 2
889
+ const UInt32 hashOffset = Get32(p2 + 4 * 4);
890
+ const UInt32 nSpecialSlots = Get32(p2 + 6 * 4);
891
+ const UInt32 nCodeSlots = Get32(p2 + 7 * 4);
892
+ const unsigned hashSize = p2[36];
893
+ const unsigned hashType = p2[37];
894
+ // const unsigned unused = p2[38];
895
+ const unsigned pageSize = p2[39];
896
+ */
897
+ }
898
+ #ifdef DMG_SHOW_RAW
899
+ else if (magic == 0xfade0c01) extra.Name += "requirements";
900
+ else if (magic == 0xfade0b01) extra.Name += "signed";
901
+ else
902
+ {
903
+ char temp[16];
904
+ ConvertUInt32ToHex8Digits(magic, temp);
905
+ extra.Name += temp;
906
+ }
907
+ #endif
908
+ }
909
+
910
+ return true;
911
+ }
912
+
913
+
914
+
915
+
916
+ HRESULT CHandler::Open2(IInStream *stream, IArchiveOpenCallback *openArchiveCallback)
917
+ {
918
+ /*
919
+ - usual dmg contains Koly Header at the end:
920
+ - rare case old dmg contains Koly Header at the begin.
921
+ */
922
+
923
+ // _dataStartOffset = 0;
924
+ UInt64 fileSize;
925
+ RINOK(InStream_GetPos_GetSize(stream, _startPos, fileSize))
926
+
927
+ const unsigned HEADER_SIZE = 0x200;
928
+ UInt64 buf[HEADER_SIZE / sizeof(UInt64)];
929
+ RINOK(ReadStream_FALSE(stream, buf, HEADER_SIZE))
930
+
931
+ UInt64 headerPos;
932
+ bool front_Koly_Mode = false;
933
+
934
+ /*
935
+ _dataForkChecksum.Offset == 0 for koly-at-the-end
936
+ _dataForkChecksum.Offset == 512 for koly-at-the-start
937
+ so we can use (_dataForkChecksum.Offset) to detect "koly-at-the-start" mode
938
+ */
939
+
940
+ if (IsKoly((const Byte *)(const void *)buf))
941
+ {
942
+ // it can be normal koly-at-the-end or koly-at-the-start
943
+ headerPos = _startPos;
944
+ /*
945
+ if (_startPos <= (1 << 8))
946
+ {
947
+ // we want to support front_Koly_Mode, even if there is
948
+ // some data before dmg file, like 128 bytes MacBin header
949
+ _dataStartOffset = HEADER_SIZE;
950
+ front_Koly_Mode = true;
951
+ }
952
+ */
953
+ }
954
+ else
955
+ {
956
+ /* we try to open in backward mode only for first attempt
957
+ when (_startPos == 0) */
958
+ if (_startPos != 0)
959
+ return S_FALSE;
960
+ headerPos = fileSize;
961
+ if (headerPos < HEADER_SIZE)
962
+ return S_FALSE;
963
+ headerPos -= HEADER_SIZE;
964
+ RINOK(InStream_SeekSet(stream, headerPos))
965
+ RINOK(ReadStream_FALSE(stream, buf, HEADER_SIZE))
966
+ if (!IsKoly((const Byte *)(const void *)buf))
967
+ return S_FALSE;
968
+ }
969
+
970
+ // UInt32 flags = Get32a((const Byte *)(const void *)buf + 12);
971
+ // _runningDataForkOffset = Get64a((const Byte *)(const void *)buf + 0x10);
972
+ _dataForkPair.Parse((const Byte *)(const void *)buf + 0x18);
973
+ rsrcPair.Parse((const Byte *)(const void *)buf + 0x28);
974
+ // _segmentNumber = Get32a(buf + 0x38); // 0 or 1
975
+ // _segmentCount = Get32a(buf + 0x3C); // 0 (if not set) or 1
976
+ memcpy(_segmentGUID, (const Byte *)(const void *)buf + 0x40, 16);
977
+ _dataForkChecksum.Parse((const Byte *)(const void *)buf + 0x50);
978
+ xmlPair.Parse((const Byte *)(const void *)buf + 0xD8);
979
+ // Byte resereved[]
980
+ blobPair.Parse((const Byte *)(const void *)buf + 0x128);
981
+ _masterChecksum.Parse((const Byte *)(const void *)buf + 0x160);
982
+ // UInt32 imageVariant = Get32a((const Byte *)(const void *)buf + 0x1E8); imageVariant = imageVariant;
983
+ _numSectors = Get64((const Byte *)(const void *)buf + 0x1EC); // it's not aligned for 8-bytes
984
+ // Byte resereved[12];
985
+
986
+ if (_dataForkPair.Offset == HEADER_SIZE
987
+ && headerPos + HEADER_SIZE < fileSize)
988
+ front_Koly_Mode = true;
989
+
990
+ const UInt64 limit = front_Koly_Mode ? fileSize : headerPos;
991
+ UInt64 top = 0;
992
+ if (!_dataForkPair.UpdateTop(limit, top)) return S_FALSE;
993
+ if (!xmlPair.UpdateTop(limit, top)) return S_FALSE;
994
+ if (!rsrcPair.UpdateTop(limit, top)) return S_FALSE;
995
+
996
+ /* Some old dmg files contain garbage data in blobPair field.
997
+ So we need to ignore such garbage case;
998
+ And we still need to detect offset of start of archive for "parser" mode. */
999
+ const bool useBlob = blobPair.UpdateTop(limit, top);
1000
+
1001
+ if (front_Koly_Mode)
1002
+ _phySize = top;
1003
+ else
1004
+ {
1005
+ _phySize = headerPos + HEADER_SIZE;
1006
+ _startPos = 0;
1007
+ if (top != headerPos)
1008
+ {
1009
+ /*
1010
+ if expected absolute offset is not equal to real header offset,
1011
+ 2 cases are possible:
1012
+ - additional (unknown) headers
1013
+ - archive with offset.
1014
+ So we try to read XML with absolute offset to select from these two ways.
1015
+ */
1016
+ CForkPair xmlPair2 = xmlPair;
1017
+ const char *sz = "<?xml version";
1018
+ const unsigned len = (unsigned)strlen(sz);
1019
+ if (xmlPair2.Len > len)
1020
+ xmlPair2.Len = len;
1021
+ CByteBuffer buf2;
1022
+ if (xmlPair2.Len < len
1023
+ || ReadData(stream, xmlPair2, buf2) != S_OK
1024
+ || memcmp(buf2, sz, len) != 0)
1025
+ {
1026
+ // if absolute offset is not OK, probably it's archive with offset
1027
+ _startPos = headerPos - top;
1028
+ _phySize = top + HEADER_SIZE;
1029
+ }
1030
+ }
1031
+ }
1032
+
1033
+ if (useBlob
1034
+ && blobPair.Len != 0
1035
+ && blobPair.Len <= (1u << 24)) // we don't want parsing of big blobs
1036
+ {
1037
+ #ifdef DMG_SHOW_RAW
1038
+ CExtraFile &extra = _extras.AddNew();
1039
+ extra.Name = "_blob.bin";
1040
+ CByteBuffer &blobBuf = extra.Data;
1041
+ #else
1042
+ CByteBuffer blobBuf;
1043
+ #endif
1044
+ RINOK(ReadData(stream, blobPair, blobBuf))
1045
+ if (!ParseBlob(blobBuf))
1046
+ _headersError = true;
1047
+ }
1048
+
1049
+
1050
+ UInt64 openTotal = 0;
1051
+ UInt64 openCur = 0;
1052
+ if (_dataForkChecksum.IsCrc32())
1053
+ openTotal = _dataForkPair.Len;
1054
+
1055
+ const UInt32 RSRC_HEAD_SIZE = 0x100;
1056
+
1057
+ /* we have 2 ways to read files and blocks metadata:
1058
+ via Xml or via Rsrc.
1059
+ But some images have no Rsrc fork.
1060
+ Is it possible that there is no Xml?
1061
+ Rsrc method will not work for big files. */
1062
+ // v23.02: we use xml mode by default
1063
+ // if (rsrcPair.Len >= RSRC_HEAD_SIZE && rsrcPair.Len <= ((UInt32)1 << 24)) // for debug
1064
+ if (xmlPair.Len == 0)
1065
+ {
1066
+ // We don't know the size of the field "offset" in Rsrc.
1067
+ // We suppose that it uses 24 bits. So we use Rsrc, only if the rsrcPair.Len <= (1 << 24).
1068
+ const bool canUseRsrc = (rsrcPair.Len >= RSRC_HEAD_SIZE && rsrcPair.Len <= ((UInt32)1 << 24));
1069
+ if (!canUseRsrc)
1070
+ return S_FALSE;
1071
+
1072
+ _rsrcMode_wasUsed = true;
1073
+ #ifdef DMG_SHOW_RAW
1074
+ CExtraFile &extra = _extras.AddNew();
1075
+ extra.Name = "rsrc.bin";
1076
+ CByteBuffer &rsrcBuf = extra.Data;
1077
+ #else
1078
+ CByteBuffer rsrcBuf;
1079
+ #endif
1080
+
1081
+ RINOK(ReadData(stream, rsrcPair, rsrcBuf))
1082
+
1083
+ const Byte *p = rsrcBuf;
1084
+ const UInt32 headSize = Get32a(p + 0);
1085
+ const UInt32 footerOffset = Get32a(p + 4);
1086
+ const UInt32 mainDataSize = Get32a(p + 8);
1087
+ const UInt32 footerSize = Get32a(p + 12);
1088
+ if (headSize != RSRC_HEAD_SIZE
1089
+ || footerOffset >= rsrcPair.Len
1090
+ || mainDataSize >= rsrcPair.Len
1091
+ || footerOffset < mainDataSize
1092
+ || footerOffset != headSize + mainDataSize)
1093
+ return S_FALSE;
1094
+
1095
+ {
1096
+ const UInt32 footerEnd = footerOffset + footerSize;
1097
+ if (footerEnd != rsrcPair.Len)
1098
+ {
1099
+ // there is rare case dmg example, where there are 4 additional bytes
1100
+ const UInt64 rem = rsrcPair.Len - footerOffset;
1101
+ if (rem < footerSize
1102
+ || rem - footerSize != 4
1103
+ || Get32(p + footerEnd) != 0)
1104
+ return S_FALSE;
1105
+ }
1106
+ }
1107
+
1108
+ if (footerSize < 0x1e)
1109
+ return S_FALSE;
1110
+ if (memcmp(p, p + footerOffset, 16) != 0)
1111
+ return S_FALSE;
1112
+
1113
+ p += footerOffset;
1114
+
1115
+ if ((UInt32)Get16(p + 0x18) != 0x1c)
1116
+ return S_FALSE;
1117
+ const UInt32 namesOffset = Get16(p + 0x1a);
1118
+ if (namesOffset > footerSize)
1119
+ return S_FALSE;
1120
+
1121
+ const UInt32 numItems = (UInt32)Get16(p + 0x1c) + 1;
1122
+ if (numItems * 8 + 0x1e > namesOffset)
1123
+ return S_FALSE;
1124
+
1125
+ for (UInt32 i = 0; i < numItems; i++)
1126
+ {
1127
+ const Byte *p2 = p + 0x1e + (size_t)i * 8;
1128
+ const UInt32 typeId = Get32(p2);
1129
+ const UInt32 k_typeId_blkx = 0x626c6b78; // blkx
1130
+ #ifndef DMG_SHOW_RAW
1131
+ if (typeId != k_typeId_blkx)
1132
+ continue;
1133
+ #endif
1134
+ const UInt32 numFiles = (UInt32)Get16(p2 + 4) + 1;
1135
+ const UInt32 offs = Get16(p2 + 6);
1136
+ if (0x1c + offs + 12 * numFiles > namesOffset)
1137
+ return S_FALSE;
1138
+
1139
+ for (UInt32 k = 0; k < numFiles; k++)
1140
+ {
1141
+ const Byte *p3 = p + 0x1c + offs + k * 12;
1142
+ // UInt32 id = Get16(p3);
1143
+ const UInt32 namePos = Get16(p3 + 2);
1144
+ // Byte attributes = p3[4]; // = 0x50 for blkx #define (ATTRIBUTE_HDIUTIL)
1145
+ // we don't know how many bits we can use. So we use 24 bits only
1146
+ UInt32 blockOffset = Get32(p3 + 4);
1147
+ blockOffset &= ((UInt32)1 << 24) - 1;
1148
+ // UInt32 unknown2 = Get32(p3 + 8); // ???
1149
+ if (blockOffset + 4 >= mainDataSize)
1150
+ return S_FALSE;
1151
+ const Byte *pBlock = rsrcBuf + headSize + blockOffset;
1152
+ const UInt32 blockSize = Get32(pBlock);
1153
+ if (mainDataSize - (blockOffset + 4) < blockSize)
1154
+ return S_FALSE;
1155
+
1156
+ AString name;
1157
+
1158
+ if (namePos != 0xffff)
1159
+ {
1160
+ const UInt32 namesBlockSize = footerSize - namesOffset;
1161
+ if (namePos >= namesBlockSize)
1162
+ return S_FALSE;
1163
+ const Byte *namePtr = p + namesOffset + namePos;
1164
+ const UInt32 nameLen = *namePtr;
1165
+ if (namesBlockSize - namePos <= nameLen)
1166
+ return S_FALSE;
1167
+ for (UInt32 r = 1; r <= nameLen; r++)
1168
+ {
1169
+ const Byte c = namePtr[r];
1170
+ if (c < 0x20 || c >= 0x80)
1171
+ break;
1172
+ name += (char)c;
1173
+ }
1174
+ }
1175
+
1176
+ if (typeId == k_typeId_blkx)
1177
+ {
1178
+ CFile &file = _files.AddNew();
1179
+ file.Name = name;
1180
+ RINOK(file.Parse(pBlock + 4, blockSize))
1181
+ if (!file.IsCorrect)
1182
+ _headersError = true;
1183
+ }
1184
+
1185
+ #ifdef DMG_SHOW_RAW
1186
+ {
1187
+ AString name2;
1188
+ name2.Add_UInt32(i);
1189
+ name2 += '_';
1190
+ {
1191
+ char temp[4 + 1] = { 0 };
1192
+ memcpy(temp, p2, 4);
1193
+ name2 += temp;
1194
+ }
1195
+ name2.Trim();
1196
+ name2 += '_';
1197
+ name2.Add_UInt32(k);
1198
+ if (!name.IsEmpty())
1199
+ {
1200
+ name2 += '_';
1201
+ name2 += name;
1202
+ }
1203
+ CExtraFile &extra2 = _extras.AddNew();
1204
+ extra2.Name = name2;
1205
+ extra2.Data.CopyFrom(pBlock + 4, blockSize);
1206
+ }
1207
+ #endif
1208
+ }
1209
+ }
1210
+ }
1211
+ else
1212
+ {
1213
+ if (xmlPair.Len > k_XmlSize_MAX)
1214
+ return S_FALSE;
1215
+ // if (!canUseXml) return S_FALSE;
1216
+ const size_t size = (size_t)xmlPair.Len;
1217
+ // if (size + 1 <= xmlPair.Len) return S_FALSE; // optional check
1218
+ RINOK(InStream_SeekSet(stream, _startPos + xmlPair.Offset))
1219
+ CXml xml;
1220
+ {
1221
+ openTotal += size;
1222
+ if (openArchiveCallback)
1223
+ {
1224
+ RINOK(openArchiveCallback->SetTotal(NULL, &openTotal))
1225
+ }
1226
+ size_t pos = 0;
1227
+ CAlignedBuffer1 xmlStr(size + 1);
1228
+ for (;;)
1229
+ {
1230
+ const size_t k_OpenStep = 1 << 24;
1231
+ const size_t cur = MyMin(k_OpenStep, size - pos);
1232
+ RINOK(ReadStream_FALSE(stream, xmlStr + pos, cur))
1233
+ pos += cur;
1234
+ openCur += cur;
1235
+ if (pos == size)
1236
+ break;
1237
+ if (openArchiveCallback)
1238
+ {
1239
+ RINOK(openArchiveCallback->SetCompleted(NULL, &openCur))
1240
+ }
1241
+ }
1242
+ xmlStr[size] = 0;
1243
+ // if (strlen((const char *)(const void *)(const Byte *)xmlStr) != size) return S_FALSE;
1244
+ if (!xml.Parse((char *)(void *)(Byte *)xmlStr))
1245
+ return S_FALSE;
1246
+
1247
+ #ifdef DMG_SHOW_RAW
1248
+ CExtraFile &extra = _extras.AddNew();
1249
+ extra.Name = "a.xml";
1250
+ extra.Data.CopyFrom(xmlStr, size);
1251
+ #endif
1252
+ }
1253
+
1254
+ if (!xml.Root.Name.IsEqualTo("plist"))
1255
+ return S_FALSE;
1256
+
1257
+ const CXmlItem *dictItem = xml.Root.FindSubTag_GetPtr("dict");
1258
+ if (!dictItem)
1259
+ return S_FALSE;
1260
+
1261
+ const CXmlItem *rfDictItem = FindKeyPair(*dictItem, "resource-fork", "dict");
1262
+ if (!rfDictItem)
1263
+ return S_FALSE;
1264
+
1265
+ const CXmlItem *arrItem = FindKeyPair(*rfDictItem, "blkx", "array");
1266
+ if (!arrItem)
1267
+ return S_FALSE;
1268
+
1269
+ FOR_VECTOR (i, arrItem->SubItems)
1270
+ {
1271
+ const CXmlItem &item = arrItem->SubItems[i];
1272
+ if (!item.IsTagged("dict"))
1273
+ continue;
1274
+
1275
+ CByteBuffer rawBuf;
1276
+ unsigned destLen = 0;
1277
+ {
1278
+ const AString *dataString = GetStringFromKeyPair(item, "Data", "data");
1279
+ if (!dataString)
1280
+ return S_FALSE;
1281
+ destLen = dataString->Len() / 4 * 3 + 4;
1282
+ rawBuf.Alloc(destLen);
1283
+ {
1284
+ const Byte *endPtr = Base64ToBin(rawBuf, *dataString);
1285
+ if (!endPtr)
1286
+ return S_FALSE;
1287
+ destLen = (unsigned)(endPtr - (const Byte *)rawBuf);
1288
+ }
1289
+
1290
+ #ifdef DMG_SHOW_RAW
1291
+ CExtraFile &extra = _extras.AddNew();
1292
+ extra.Name.Add_UInt32(_files.Size());
1293
+ extra.Data.CopyFrom(rawBuf, destLen);
1294
+ #endif
1295
+ }
1296
+ CFile &file = _files.AddNew();
1297
+ {
1298
+ /* xml code removes front space for such string:
1299
+ <string> (Apple_Free : 3)</string>
1300
+ maybe we shoud fix xml code and return full string with space.
1301
+ */
1302
+ const AString *name = GetStringFromKeyPair(item, "Name", "string");
1303
+ if (!name || name->IsEmpty())
1304
+ name = GetStringFromKeyPair(item, "CFName", "string");
1305
+ if (name)
1306
+ file.Name = *name;
1307
+ }
1308
+ /*
1309
+ {
1310
+ const AString *s = GetStringFromKeyPair(item, "ID", "string");
1311
+ if (s)
1312
+ file.Id = *s;
1313
+ }
1314
+ */
1315
+ RINOK(file.Parse(rawBuf, destLen))
1316
+ if (!file.IsCorrect)
1317
+ _headersError = true;
1318
+ }
1319
+ }
1320
+
1321
+ if (_masterChecksum.IsCrc32())
1322
+ {
1323
+ UInt32 crc = CRC_INIT_VAL;
1324
+ unsigned i;
1325
+ for (i = 0; i < _files.Size(); i++)
1326
+ {
1327
+ const CChecksum &cs = _files[i].Checksum;
1328
+ if ((cs.NumBits & 0x7) != 0)
1329
+ break;
1330
+ const UInt32 len = cs.NumBits >> 3;
1331
+ if (len > kChecksumSize_Max)
1332
+ break;
1333
+ crc = CrcUpdate(crc, cs.Data, (size_t)len);
1334
+ }
1335
+ if (i == _files.Size())
1336
+ _masterCrcError = (CRC_GET_DIGEST(crc) != _masterChecksum.GetCrc32());
1337
+ }
1338
+
1339
+ {
1340
+ UInt64 sec = 0;
1341
+ FOR_VECTOR (i, _files)
1342
+ {
1343
+ const CFile &file = _files[i];
1344
+ /*
1345
+ if (file.Descriptor != (Int32)i - 1)
1346
+ _headersError = true;
1347
+ */
1348
+ if (file.StartUnpackSector != sec)
1349
+ _headersError = true;
1350
+ if (file.NumUnpackSectors >= kSectorNumber_LIMIT)
1351
+ _headersError = true;
1352
+ sec += file.NumUnpackSectors;
1353
+ if (sec >= kSectorNumber_LIMIT)
1354
+ _headersError = true;
1355
+ }
1356
+ if (sec != _numSectors)
1357
+ _headersError = true;
1358
+ }
1359
+
1360
+ // data checksum calculation can be slow for big dmg file
1361
+ if (_dataForkChecksum.IsCrc32())
1362
+ {
1363
+ UInt64 endPos;
1364
+ if (!_dataForkPair.GetEndPos(endPos)
1365
+ || _dataForkPair.Offset >= ((UInt64)1 << 63))
1366
+ _headersError = true;
1367
+ else
1368
+ {
1369
+ const UInt64 seekPos = _startPos + _dataForkPair.Offset;
1370
+ if (seekPos > fileSize
1371
+ || endPos > fileSize - _startPos)
1372
+ {
1373
+ _headersError = true;
1374
+ // kpv_ErrorFlags_UnexpectedEnd
1375
+ }
1376
+ else
1377
+ {
1378
+ const size_t kBufSize = 1 << 15;
1379
+ CAlignedBuffer1 buf2(kBufSize);
1380
+ RINOK(InStream_SeekSet(stream, seekPos))
1381
+ if (openArchiveCallback)
1382
+ {
1383
+ RINOK(openArchiveCallback->SetTotal(NULL, &openTotal))
1384
+ }
1385
+ UInt32 crc = CRC_INIT_VAL;
1386
+ UInt64 pos = 0;
1387
+ for (;;)
1388
+ {
1389
+ const UInt64 rem = _dataForkPair.Len - pos;
1390
+ size_t cur = kBufSize;
1391
+ if (cur > rem)
1392
+ cur = (UInt32)rem;
1393
+ if (cur == 0)
1394
+ break;
1395
+ RINOK(ReadStream_FALSE(stream, buf2, cur))
1396
+ crc = CrcUpdate(crc, buf2, cur);
1397
+ pos += cur;
1398
+ openCur += cur;
1399
+ if ((pos & ((1 << 24) - 1)) == 0 && openArchiveCallback)
1400
+ {
1401
+ RINOK(openArchiveCallback->SetCompleted(NULL, &openCur))
1402
+ }
1403
+ }
1404
+ if (_dataForkChecksum.GetCrc32() != CRC_GET_DIGEST(crc))
1405
+ _dataForkError = true;
1406
+ }
1407
+ }
1408
+ }
1409
+
1410
+ return S_OK;
1411
+ }
1412
+
1413
+
1414
+
1415
+ Z7_COM7F_IMF(CHandler::Open(IInStream *stream,
1416
+ const UInt64 * /* maxCheckStartPosition */,
1417
+ IArchiveOpenCallback *openArchiveCallback))
1418
+ {
1419
+ COM_TRY_BEGIN
1420
+ Close();
1421
+ RINOK(Open2(stream, openArchiveCallback))
1422
+ _inStream = stream;
1423
+ return S_OK;
1424
+ COM_TRY_END
1425
+ }
1426
+
1427
+ Z7_COM7F_IMF(CHandler::Close())
1428
+ {
1429
+ _masterCrcError = false;
1430
+ _headersError = false;
1431
+ _dataForkError = false;
1432
+ _rsrcMode_wasUsed = false;
1433
+ _phySize = 0;
1434
+ _startPos = 0;
1435
+ _name.Empty();
1436
+ _inStream.Release();
1437
+ _files.Clear();
1438
+ #ifdef DMG_SHOW_RAW
1439
+ _extras.Clear();
1440
+ #endif
1441
+ return S_OK;
1442
+ }
1443
+
1444
+ Z7_COM7F_IMF(CHandler::GetNumberOfItems(UInt32 *numItems))
1445
+ {
1446
+ *numItems = _files.Size()
1447
+ #ifdef DMG_SHOW_RAW
1448
+ + _extras.Size()
1449
+ #endif
1450
+ ;
1451
+ return S_OK;
1452
+ }
1453
+
1454
+ #ifdef DMG_SHOW_RAW
1455
+ #define RAW_PREFIX "raw" STRING_PATH_SEPARATOR
1456
+ #endif
1457
+
1458
+ Z7_COM7F_IMF(CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value))
1459
+ {
1460
+ COM_TRY_BEGIN
1461
+ NWindows::NCOM::CPropVariant prop;
1462
+
1463
+ #ifdef DMG_SHOW_RAW
1464
+ if (index >= _files.Size())
1465
+ {
1466
+ const CExtraFile &extra = _extras[index - _files.Size()];
1467
+ switch (propID)
1468
+ {
1469
+ case kpidPath:
1470
+ prop = (AString)RAW_PREFIX + extra.Name;
1471
+ break;
1472
+ case kpidSize:
1473
+ case kpidPackSize:
1474
+ prop = (UInt64)extra.Data.Size();
1475
+ break;
1476
+ }
1477
+ }
1478
+ else
1479
+ #endif
1480
+ {
1481
+ const CFile &item = _files[index];
1482
+ switch (propID)
1483
+ {
1484
+ case kpidSize: prop = item.Size; break;
1485
+ case kpidPackSize: prop = item.PackSize; break;
1486
+ case kpidCRC:
1487
+ {
1488
+ if (item.Checksum.IsCrc32() && item.FullFileChecksum)
1489
+ prop = item.Checksum.GetCrc32();
1490
+ break;
1491
+ }
1492
+ case kpidChecksum:
1493
+ {
1494
+ AString s;
1495
+ item.Checksum.Print(s);
1496
+ if (!s.IsEmpty())
1497
+ prop = s;
1498
+ break;
1499
+ }
1500
+
1501
+ /*
1502
+ case kpidOffset:
1503
+ {
1504
+ prop = item.StartPackPos;
1505
+ break;
1506
+ }
1507
+ */
1508
+
1509
+ case kpidNumBlocks:
1510
+ prop = (UInt32)item.Blocks.Size();
1511
+ break;
1512
+ case kpidClusterSize:
1513
+ prop = item.BlockSize_MAX;
1514
+ break;
1515
+
1516
+ case kpidMethod:
1517
+ {
1518
+ AString s;
1519
+ if (!item.IsCorrect)
1520
+ s.Add_OptSpaced("CORRUPTED");
1521
+ CMethods m;
1522
+ m.Update(item);
1523
+ m.AddToString(s);
1524
+ {
1525
+ AString s2;
1526
+ item.Checksum.PrintType(s2);
1527
+ if (!s2.IsEmpty())
1528
+ s.Add_OptSpaced(s2);
1529
+ }
1530
+ if (!s.IsEmpty())
1531
+ prop = s;
1532
+ break;
1533
+ }
1534
+
1535
+ case kpidPath:
1536
+ {
1537
+ #ifdef Z7_DMG_SINGLE_FILE_MODE
1538
+ prop = "a.img";
1539
+ #else
1540
+ UString name;
1541
+ name.Add_UInt32(index);
1542
+ unsigned num = 10;
1543
+ unsigned numDigits;
1544
+ for (numDigits = 1; num < _files.Size(); numDigits++)
1545
+ num *= 10;
1546
+ while (name.Len() < numDigits)
1547
+ name.InsertAtFront(L'0');
1548
+
1549
+ AString subName;
1550
+ int pos1 = item.Name.Find('(');
1551
+ if (pos1 >= 0)
1552
+ {
1553
+ pos1++;
1554
+ const int pos2 = item.Name.Find(')', pos1);
1555
+ if (pos2 >= 0)
1556
+ {
1557
+ subName.SetFrom(item.Name.Ptr(pos1), pos2 - pos1);
1558
+ pos1 = subName.Find(':');
1559
+ if (pos1 >= 0)
1560
+ subName.DeleteFrom(pos1);
1561
+ }
1562
+ }
1563
+ else
1564
+ subName = item.Name; // new apfs dmg can be without braces
1565
+ subName.Trim();
1566
+ if (!subName.IsEmpty())
1567
+ {
1568
+ const char *ext = Find_Apple_FS_Ext(subName);
1569
+ if (ext)
1570
+ subName = ext;
1571
+ UString name2;
1572
+ ConvertUTF8ToUnicode(subName, name2);
1573
+ name.Add_Dot();
1574
+ name += name2;
1575
+ }
1576
+ else
1577
+ {
1578
+ UString name2;
1579
+ ConvertUTF8ToUnicode(item.Name, name2);
1580
+ if (!name2.IsEmpty())
1581
+ name += "_";
1582
+ name += name2;
1583
+ }
1584
+ prop = name;
1585
+ #endif
1586
+
1587
+ break;
1588
+ }
1589
+
1590
+ case kpidComment:
1591
+ {
1592
+ UString name;
1593
+ ConvertUTF8ToUnicode(item.Name, name);
1594
+ prop = name;
1595
+ break;
1596
+ }
1597
+ case kpidId:
1598
+ {
1599
+ prop.Set_Int32((Int32)item.Descriptor);
1600
+ /*
1601
+ if (!item.Id.IsEmpty())
1602
+ {
1603
+ UString s;
1604
+ ConvertUTF8ToUnicode(item.Id, s);
1605
+ prop = s;
1606
+ }
1607
+ */
1608
+ break;
1609
+ }
1610
+ #ifdef Z7_DMG_SINGLE_FILE_MODE
1611
+ case kpidPosition:
1612
+ prop = item.StartUnpackSector << 9;
1613
+ break;
1614
+ #endif
1615
+ }
1616
+ }
1617
+ prop.Detach(value);
1618
+ return S_OK;
1619
+ COM_TRY_END
1620
+ }
1621
+
1622
+
1623
+ class CAdcDecoder
1624
+ {
1625
+ CLzOutWindow m_OutWindowStream;
1626
+ CInBuffer m_InStream;
1627
+
1628
+ class CCoderReleaser Z7_final
1629
+ {
1630
+ CAdcDecoder *m_Coder;
1631
+ public:
1632
+ bool NeedFlush;
1633
+ CCoderReleaser(CAdcDecoder *coder Z7_lifetimebound): m_Coder(coder), NeedFlush(true) {}
1634
+ ~CCoderReleaser()
1635
+ {
1636
+ if (NeedFlush)
1637
+ m_Coder->m_OutWindowStream.Flush();
1638
+ }
1639
+ };
1640
+ friend class CCoderReleaser;
1641
+
1642
+ public:
1643
+ HRESULT Code(ISequentialInStream * const inStream,
1644
+ ISequentialOutStream *outStream,
1645
+ const UInt64 * const inSize,
1646
+ const UInt64 * const outSize,
1647
+ ICompressProgressInfo * const progress);
1648
+ };
1649
+
1650
+
1651
+ HRESULT CAdcDecoder::Code(ISequentialInStream * const inStream,
1652
+ ISequentialOutStream *outStream,
1653
+ const UInt64 * const inSize,
1654
+ const UInt64 * const outSizePtr,
1655
+ ICompressProgressInfo * const progress)
1656
+ {
1657
+ try {
1658
+
1659
+ if (!m_OutWindowStream.Create(1 << 18)) // at least (1 << 16) is required here
1660
+ return E_OUTOFMEMORY;
1661
+ if (!m_InStream.Create(1 << 18))
1662
+ return E_OUTOFMEMORY;
1663
+
1664
+ m_OutWindowStream.SetStream(outStream);
1665
+ m_OutWindowStream.Init(false);
1666
+ m_InStream.SetStream(inStream);
1667
+ m_InStream.Init();
1668
+
1669
+ CCoderReleaser coderReleaser(this);
1670
+
1671
+ const UInt32 kStep = 1 << 22;
1672
+ UInt64 nextLimit = kStep;
1673
+ const UInt64 outSize = *outSizePtr;
1674
+ UInt64 pos = 0;
1675
+ /* match sequences and literal sequences do not cross 64KB range
1676
+ in some dmg archive examples. But is it so for any Adc stream? */
1677
+
1678
+ while (pos < outSize)
1679
+ {
1680
+ if (pos >= nextLimit && progress)
1681
+ {
1682
+ nextLimit += kStep;
1683
+ const UInt64 packSize = m_InStream.GetProcessedSize();
1684
+ RINOK(progress->SetRatioInfo(&packSize, &pos))
1685
+ }
1686
+ Byte b;
1687
+ if (!m_InStream.ReadByte(b))
1688
+ return S_FALSE;
1689
+ const UInt64 rem = outSize - pos;
1690
+ if (b & 0x80)
1691
+ {
1692
+ unsigned num = (unsigned)b - 0x80 + 1;
1693
+ if (num > rem)
1694
+ return S_FALSE;
1695
+ pos += num;
1696
+ do
1697
+ {
1698
+ if (!m_InStream.ReadByte(b))
1699
+ return S_FALSE;
1700
+ m_OutWindowStream.PutByte(b);
1701
+ }
1702
+ while (--num);
1703
+ continue;
1704
+ }
1705
+ Byte b1;
1706
+ if (!m_InStream.ReadByte(b1))
1707
+ return S_FALSE;
1708
+
1709
+ UInt32 len, dist;
1710
+
1711
+ if (b & 0x40)
1712
+ {
1713
+ len = (UInt32)b - 0x40 + 4;
1714
+ Byte b2;
1715
+ if (!m_InStream.ReadByte(b2))
1716
+ return S_FALSE;
1717
+ dist = ((UInt32)b1 << 8) + b2;
1718
+ }
1719
+ else
1720
+ {
1721
+ len = ((UInt32)b >> 2) + 3;
1722
+ dist = (((UInt32)b & 3) << 8) + b1;
1723
+ }
1724
+
1725
+ if (/* dist >= pos || */ len > rem)
1726
+ return S_FALSE;
1727
+ if (!m_OutWindowStream.CopyBlock(dist, len))
1728
+ return S_FALSE;
1729
+ pos += len;
1730
+ }
1731
+ if (*inSize != m_InStream.GetProcessedSize())
1732
+ return S_FALSE;
1733
+ coderReleaser.NeedFlush = false;
1734
+ return m_OutWindowStream.Flush();
1735
+
1736
+ }
1737
+ catch(const CInBufferException &e) { return e.ErrorCode; }
1738
+ catch(const CLzOutWindowException &e) { return e.ErrorCode; }
1739
+ catch(...) { return S_FALSE; }
1740
+ }
1741
+
1742
+
1743
+
1744
+ struct CDecoders
1745
+ {
1746
+ CMyComPtr2<ICompressCoder, NCompress::NZlib::CDecoder> zlib;
1747
+ CMyComPtr2<ICompressCoder, NCompress::NBZip2::CDecoder> bzip2;
1748
+ CMyComPtr2<ICompressCoder, NCompress::NLzfse::CDecoder> lzfse;
1749
+ CMyUniquePtr<NCompress::NXz::CDecoder> xz;
1750
+ CMyUniquePtr<CAdcDecoder> adc;
1751
+
1752
+ HRESULT Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
1753
+ const CBlock &block, const UInt64 *unpSize, ICompressProgressInfo *progress);
1754
+ };
1755
+
1756
+ HRESULT CDecoders::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
1757
+ const CBlock &block, const UInt64 *unpSize, ICompressProgressInfo *progress)
1758
+ {
1759
+ HRESULT hres;
1760
+ UInt64 processed;
1761
+ switch (block.Type)
1762
+ {
1763
+ case METHOD_ADC:
1764
+ adc.Create_if_Empty();
1765
+ return adc->Code(inStream, outStream, &block.PackSize, unpSize, progress);
1766
+ case METHOD_LZFSE:
1767
+ lzfse.Create_if_Empty();
1768
+ return lzfse.Interface()->Code(inStream, outStream, &block.PackSize, unpSize, progress);
1769
+ case METHOD_ZLIB:
1770
+ zlib.Create_if_Empty();
1771
+ hres = zlib.Interface()->Code(inStream, outStream, NULL, unpSize, progress);
1772
+ processed = zlib->GetInputProcessedSize();
1773
+ break;
1774
+ case METHOD_BZIP2:
1775
+ bzip2.Create_if_Empty();
1776
+ hres = bzip2.Interface()->Code(inStream, outStream, NULL, unpSize, progress);
1777
+ processed = bzip2->GetInputProcessedSize();
1778
+ break;
1779
+ case METHOD_XZ:
1780
+ xz.Create_if_Empty();
1781
+ hres = xz->Decode(inStream, outStream, unpSize, true, progress);
1782
+ processed = xz->Stat.InSize;
1783
+ break;
1784
+ default:
1785
+ return E_NOTIMPL;
1786
+ }
1787
+ if (hres == S_OK && processed != block.PackSize)
1788
+ hres = S_FALSE;
1789
+ return hres;
1790
+ }
1791
+
1792
+
1793
+ Z7_COM7F_IMF(CHandler::Extract(const UInt32 *indices, UInt32 numItems,
1794
+ Int32 testMode, IArchiveExtractCallback *extractCallback))
1795
+ {
1796
+ COM_TRY_BEGIN
1797
+ const bool allFilesMode = (numItems == (UInt32)(Int32)-1);
1798
+ if (allFilesMode)
1799
+ numItems = _files.Size()
1800
+ #ifdef DMG_SHOW_RAW
1801
+ + _extras.Size()
1802
+ #endif
1803
+ ;
1804
+ if (numItems == 0)
1805
+ return S_OK;
1806
+ UInt64 totalSize = 0;
1807
+ UInt32 i;
1808
+
1809
+ for (i = 0; i < numItems; i++)
1810
+ {
1811
+ const UInt32 index = allFilesMode ? i : indices[i];
1812
+ #ifdef DMG_SHOW_RAW
1813
+ if (index >= _files.Size())
1814
+ totalSize += _extras[index - _files.Size()].Data.Size();
1815
+ else
1816
+ #endif
1817
+ totalSize += _files[index].Size;
1818
+ }
1819
+ RINOK(extractCallback->SetTotal(totalSize))
1820
+
1821
+ const size_t kZeroBufSize = 1 << 14;
1822
+ CAlignedBuffer1 zeroBuf(kZeroBufSize);
1823
+ memset(zeroBuf, 0, kZeroBufSize);
1824
+
1825
+ CDecoders decoders;
1826
+ CMyComPtr2_Create<ICompressCoder, NCompress::CCopyCoder> copyCoder;
1827
+ CMyComPtr2_Create<ICompressProgressInfo, CLocalProgress> lps;
1828
+ lps->Init(extractCallback, false);
1829
+ CMyComPtr2_Create<ISequentialInStream, CLimitedSequentialInStream> inStream;
1830
+ inStream->SetStream(_inStream);
1831
+
1832
+ UInt64 total_PackSize = 0;
1833
+ UInt64 total_UnpackSize = 0;
1834
+ UInt64 cur_PackSize = 0;
1835
+ UInt64 cur_UnpackSize = 0;
1836
+
1837
+ for (i = 0;; i++,
1838
+ total_PackSize += cur_PackSize,
1839
+ total_UnpackSize += cur_UnpackSize)
1840
+ {
1841
+ lps->InSize = total_PackSize;
1842
+ lps->OutSize = total_UnpackSize;
1843
+ cur_PackSize = 0;
1844
+ cur_UnpackSize = 0;
1845
+ RINOK(lps->SetCur())
1846
+ if (i >= numItems)
1847
+ return S_OK;
1848
+
1849
+ Int32 opRes = NExtract::NOperationResult::kOK;
1850
+ {
1851
+ CMyComPtr<ISequentialOutStream> realOutStream;
1852
+ const Int32 askMode = testMode ?
1853
+ NExtract::NAskMode::kTest :
1854
+ NExtract::NAskMode::kExtract;
1855
+ const UInt32 index = allFilesMode ? i : indices[i];
1856
+ RINOK(extractCallback->GetStream(index, &realOutStream, askMode))
1857
+
1858
+ if (!testMode && !realOutStream)
1859
+ continue;
1860
+ RINOK(extractCallback->PrepareOperation(askMode))
1861
+
1862
+ #ifdef DMG_SHOW_RAW
1863
+ if (index >= _files.Size())
1864
+ {
1865
+ const CByteBuffer &buf = _extras[index - _files.Size()].Data;
1866
+ if (realOutStream)
1867
+ RINOK(WriteStream(realOutStream, buf, buf.Size()))
1868
+ cur_PackSize = cur_UnpackSize = buf.Size();
1869
+ }
1870
+ else
1871
+ #endif
1872
+ {
1873
+ const CFile &item = _files[index];
1874
+ cur_PackSize = item.PackSize;
1875
+ cur_UnpackSize = item.Size;
1876
+
1877
+ if (!item.IsCorrect)
1878
+ opRes = NExtract::NOperationResult::kHeadersError;
1879
+ else
1880
+ {
1881
+ CMyComPtr2_Create<ISequentialOutStream, COutStreamWithCRC> outCrcStream;
1882
+ outCrcStream->SetStream(realOutStream);
1883
+ // realOutStream.Release();
1884
+ const bool needCrc = item.Checksum.IsCrc32();
1885
+ outCrcStream->Init(needCrc);
1886
+
1887
+ CMyComPtr2_Create<ISequentialOutStream, CLimitedSequentialOutStream> outStream;
1888
+ outStream->SetStream(outCrcStream);
1889
+
1890
+ UInt64 unpPos = 0;
1891
+ UInt64 packPos = 0;
1892
+
1893
+ FOR_VECTOR (blockIndex, item.Blocks)
1894
+ {
1895
+ lps->InSize = total_PackSize + packPos;
1896
+ lps->OutSize = total_UnpackSize + unpPos;
1897
+ RINOK(lps->SetCur())
1898
+
1899
+ const CBlock &block = item.Blocks[blockIndex];
1900
+ // if (!block.ThereAreDataInBlock()) continue;
1901
+
1902
+ packPos += block.PackSize;
1903
+ if (block.UnpPos != unpPos)
1904
+ {
1905
+ opRes = NExtract::NOperationResult::kHeadersError;
1906
+ break;
1907
+ }
1908
+
1909
+ RINOK(InStream_SeekSet(_inStream, _startPos + _dataForkPair.Offset + item.StartPackPos + block.PackPos))
1910
+ inStream->Init(block.PackSize);
1911
+
1912
+ const UInt64 unpSize = item.GetUnpackSize_of_Block(blockIndex);
1913
+
1914
+ outStream->Init(unpSize);
1915
+ HRESULT res = S_OK;
1916
+
1917
+ outCrcStream->EnableCalc(needCrc && block.NeedCrc());
1918
+
1919
+ if (block.IsZeroMethod())
1920
+ {
1921
+ if (block.PackSize != 0)
1922
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
1923
+ }
1924
+ else if (block.Type == METHOD_COPY)
1925
+ {
1926
+ if (unpSize != block.PackSize)
1927
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
1928
+ else
1929
+ res = copyCoder.Interface()->Code(inStream, outStream, NULL, NULL, lps);
1930
+ }
1931
+ else
1932
+ res = decoders.Code(inStream, outStream, block, &unpSize, lps);
1933
+
1934
+ if (res != S_OK)
1935
+ {
1936
+ if (res != S_FALSE)
1937
+ {
1938
+ if (res != E_NOTIMPL)
1939
+ return res;
1940
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
1941
+ }
1942
+ if (opRes == NExtract::NOperationResult::kOK)
1943
+ opRes = NExtract::NOperationResult::kDataError;
1944
+ }
1945
+
1946
+ unpPos += unpSize;
1947
+
1948
+ if (!outStream->IsFinishedOK())
1949
+ {
1950
+ if (!block.IsZeroMethod() && opRes == NExtract::NOperationResult::kOK)
1951
+ opRes = NExtract::NOperationResult::kDataError;
1952
+
1953
+ for (unsigned k = 0;;)
1954
+ {
1955
+ const UInt64 rem = outStream->GetRem();
1956
+ if (rem == 0)
1957
+ break;
1958
+ size_t size = kZeroBufSize;
1959
+ if (size > rem)
1960
+ size = (size_t)rem;
1961
+ RINOK(WriteStream(outStream, zeroBuf, size))
1962
+ k++;
1963
+ if ((k & 0xfff) == 0)
1964
+ {
1965
+ lps->OutSize = total_UnpackSize + unpPos - outStream->GetRem();
1966
+ RINOK(lps->SetCur())
1967
+ }
1968
+ }
1969
+ }
1970
+ }
1971
+ if (needCrc && opRes == NExtract::NOperationResult::kOK)
1972
+ {
1973
+ if (outCrcStream->GetCRC() != item.Checksum.GetCrc32())
1974
+ opRes = NExtract::NOperationResult::kCRCError;
1975
+ }
1976
+ }
1977
+ }
1978
+ }
1979
+ RINOK(extractCallback->SetOperationResult(opRes))
1980
+ }
1981
+
1982
+ COM_TRY_END
1983
+ }
1984
+
1985
+
1986
+
1987
+
1988
+ struct CChunk
1989
+ {
1990
+ int BlockIndex;
1991
+ UInt64 AccessMark;
1992
+ Byte *Buf;
1993
+ size_t BufSize;
1994
+
1995
+ void Free()
1996
+ {
1997
+ z7_AlignedFree(Buf);
1998
+ Buf = NULL;
1999
+ BufSize = 0;
2000
+ }
2001
+ void Alloc(size_t size)
2002
+ {
2003
+ Buf = (Byte *)z7_AlignedAlloc(size);
2004
+ }
2005
+ };
2006
+
2007
+
2008
+ Z7_CLASS_IMP_IInStream(
2009
+ CInStream
2010
+ )
2011
+ bool _errorMode;
2012
+ UInt64 _virtPos;
2013
+ int _latestChunk;
2014
+ int _latestBlock;
2015
+ UInt64 _accessMark;
2016
+ UInt64 _chunks_TotalSize;
2017
+ CRecordVector<CChunk> _chunks;
2018
+
2019
+ public:
2020
+ CMyComPtr<IInStream> Stream;
2021
+ const CFile *File;
2022
+ UInt64 Size;
2023
+ private:
2024
+ UInt64 _startPos;
2025
+
2026
+ ~CInStream();
2027
+ CMyComPtr2<ISequentialOutStream, CBufPtrSeqOutStream> outStream;
2028
+ CMyComPtr2<ISequentialInStream, CLimitedSequentialInStream> inStream;
2029
+ CDecoders decoders;
2030
+ public:
2031
+
2032
+ // HRESULT
2033
+ void Init(UInt64 startPos)
2034
+ {
2035
+ _errorMode = false;
2036
+ _startPos = startPos;
2037
+ _virtPos = 0;
2038
+ _latestChunk = -1;
2039
+ _latestBlock = -1;
2040
+ _accessMark = 0;
2041
+ _chunks_TotalSize = 0;
2042
+
2043
+ inStream.Create_if_Empty();
2044
+ inStream->SetStream(Stream);
2045
+
2046
+ outStream.Create_if_Empty();
2047
+ // return S_OK;
2048
+ }
2049
+ };
2050
+
2051
+
2052
+ CInStream::~CInStream()
2053
+ {
2054
+ unsigned i = _chunks.Size();
2055
+ while (i)
2056
+ _chunks[--i].Free();
2057
+ }
2058
+
2059
+ static unsigned FindBlock(const CRecordVector<CBlock> &blocks, UInt64 pos)
2060
+ {
2061
+ unsigned left = 0, right = blocks.Size();
2062
+ for (;;)
2063
+ {
2064
+ const unsigned mid = (left + right) / 2;
2065
+ if (mid == left)
2066
+ return left;
2067
+ if (pos < blocks[mid].UnpPos)
2068
+ right = mid;
2069
+ else
2070
+ left = mid;
2071
+ }
2072
+ }
2073
+
2074
+ Z7_COM7F_IMF(CInStream::Read(void *data, UInt32 size, UInt32 *processedSize))
2075
+ {
2076
+ // COM_TRY_BEGIN
2077
+ try {
2078
+
2079
+ if (_errorMode)
2080
+ return E_OUTOFMEMORY;
2081
+
2082
+ if (processedSize)
2083
+ *processedSize = 0;
2084
+ if (size == 0)
2085
+ return S_OK;
2086
+ if (_virtPos >= Size)
2087
+ return S_OK; // (Size == _virtPos) ? S_OK: E_FAIL;
2088
+ {
2089
+ const UInt64 rem = Size - _virtPos;
2090
+ if (size > rem)
2091
+ size = (UInt32)rem;
2092
+ }
2093
+
2094
+ if (_latestBlock >= 0)
2095
+ {
2096
+ const CBlock &block = File->Blocks[(unsigned)_latestBlock];
2097
+ if (_virtPos < block.UnpPos ||
2098
+ _virtPos - block.UnpPos >= File->GetUnpackSize_of_Block((unsigned)_latestBlock))
2099
+ _latestBlock = -1;
2100
+ }
2101
+
2102
+ if (_latestBlock < 0)
2103
+ {
2104
+ _latestChunk = -1;
2105
+ const unsigned blockIndex = FindBlock(File->Blocks, _virtPos);
2106
+ const CBlock &block = File->Blocks[blockIndex];
2107
+ const UInt64 unpSize = File->GetUnpackSize_of_Block(blockIndex);
2108
+
2109
+ if (block.NeedAllocateBuffer()
2110
+ && unpSize <= k_Chunk_Size_MAX)
2111
+ {
2112
+ unsigned i = 0;
2113
+ {
2114
+ unsigned numChunks = _chunks.Size();
2115
+ if (numChunks)
2116
+ {
2117
+ const CChunk *chunk = _chunks.ConstData();
2118
+ do
2119
+ {
2120
+ if (chunk->BlockIndex == (int)blockIndex)
2121
+ break;
2122
+ chunk++;
2123
+ }
2124
+ while (--numChunks);
2125
+ i = _chunks.Size() - numChunks;
2126
+ }
2127
+ }
2128
+ if (i != _chunks.Size())
2129
+ _latestChunk = (int)i;
2130
+ else
2131
+ {
2132
+ unsigned chunkIndex;
2133
+ for (;;)
2134
+ {
2135
+ if (_chunks.IsEmpty() ||
2136
+ (_chunks.Size() < k_NumChunks_MAX
2137
+ && _chunks_TotalSize + unpSize <= k_Chunks_TotalSize_MAX))
2138
+ {
2139
+ CChunk chunk;
2140
+ chunk.Buf = NULL;
2141
+ chunk.BufSize = 0;
2142
+ chunk.BlockIndex = -1;
2143
+ chunk.AccessMark = 0;
2144
+ chunkIndex = _chunks.Add(chunk);
2145
+ break;
2146
+ }
2147
+ chunkIndex = 0;
2148
+ if (_chunks.Size() == 1)
2149
+ break;
2150
+ {
2151
+ const CChunk *chunks = _chunks.ConstData();
2152
+ UInt64 accessMark_min = chunks[chunkIndex].AccessMark;
2153
+ const unsigned numChunks = _chunks.Size();
2154
+ for (i = 1; i < numChunks; i++)
2155
+ {
2156
+ if (chunks[i].AccessMark < accessMark_min)
2157
+ {
2158
+ chunkIndex = i;
2159
+ accessMark_min = chunks[i].AccessMark;
2160
+ }
2161
+ }
2162
+ }
2163
+ {
2164
+ CChunk &chunk = _chunks[chunkIndex];
2165
+ const UInt64 newTotalSize = _chunks_TotalSize - chunk.BufSize;
2166
+ if (newTotalSize + unpSize <= k_Chunks_TotalSize_MAX)
2167
+ break;
2168
+ _chunks_TotalSize = newTotalSize;
2169
+ chunk.Free();
2170
+ }
2171
+ // we have called chunk.Free() before, because
2172
+ // _chunks.Delete() doesn't call chunk.Free().
2173
+ _chunks.Delete(chunkIndex);
2174
+ PRF(printf("\n++num_chunks=%u, _chunks_TotalSize = %u\n", (unsigned)_chunks.Size(), (unsigned)_chunks_TotalSize);)
2175
+ }
2176
+
2177
+ CChunk &chunk = _chunks[chunkIndex];
2178
+ chunk.BlockIndex = -1;
2179
+ chunk.AccessMark = 0;
2180
+
2181
+ if (chunk.BufSize < unpSize)
2182
+ {
2183
+ _chunks_TotalSize -= chunk.BufSize;
2184
+ chunk.Free();
2185
+ // if (unpSize > k_Chunk_Size_MAX) return E_FAIL;
2186
+ chunk.Alloc((size_t)unpSize);
2187
+ if (!chunk.Buf)
2188
+ return E_OUTOFMEMORY;
2189
+ chunk.BufSize = (size_t)unpSize;
2190
+ _chunks_TotalSize += chunk.BufSize;
2191
+ }
2192
+
2193
+ RINOK(InStream_SeekSet(Stream, _startPos + File->StartPackPos + block.PackPos))
2194
+
2195
+ inStream->Init(block.PackSize);
2196
+ #ifdef Z7_DMG_USE_CACHE_FOR_COPY_BLOCKS
2197
+ if (block.Type == METHOD_COPY)
2198
+ {
2199
+ if (block.PackSize != unpSize)
2200
+ return E_FAIL;
2201
+ RINOK(ReadStream_FAIL(inStream, chunk.Buf, (size_t)unpSize))
2202
+ }
2203
+ else
2204
+ #endif
2205
+ {
2206
+ outStream->Init(chunk.Buf, (size_t)unpSize);
2207
+ RINOK(decoders.Code(inStream, outStream, block, &unpSize, NULL))
2208
+ if (outStream->GetPos() != unpSize)
2209
+ return E_FAIL;
2210
+ }
2211
+ chunk.BlockIndex = (int)blockIndex;
2212
+ _latestChunk = (int)chunkIndex;
2213
+ }
2214
+
2215
+ _chunks[_latestChunk].AccessMark = _accessMark++;
2216
+ }
2217
+
2218
+ _latestBlock = (int)blockIndex;
2219
+ }
2220
+
2221
+ const CBlock &block = File->Blocks[(unsigned)_latestBlock];
2222
+ const UInt64 offset = _virtPos - block.UnpPos;
2223
+ {
2224
+ const UInt64 rem = File->GetUnpackSize_of_Block((unsigned)_latestBlock) - offset;
2225
+ if (size > rem)
2226
+ size = (UInt32)rem;
2227
+ if (size == 0) // it's unexpected case. but we check it.
2228
+ return S_OK;
2229
+ }
2230
+ HRESULT res = S_OK;
2231
+
2232
+ if (block.IsZeroMethod())
2233
+ memset(data, 0, size);
2234
+ else if (_latestChunk >= 0)
2235
+ memcpy(data, _chunks[_latestChunk].Buf + (size_t)offset, size);
2236
+ else
2237
+ {
2238
+ if (block.Type != METHOD_COPY)
2239
+ return E_FAIL;
2240
+ RINOK(InStream_SeekSet(Stream, _startPos + File->StartPackPos + block.PackPos + offset))
2241
+ res = Stream->Read(data, size, &size);
2242
+ }
2243
+
2244
+ _virtPos += size;
2245
+ if (processedSize)
2246
+ *processedSize = size;
2247
+ return res;
2248
+ // COM_TRY_END
2249
+ }
2250
+ catch(...)
2251
+ {
2252
+ _errorMode = true;
2253
+ return E_OUTOFMEMORY;
2254
+ }
2255
+ }
2256
+
2257
+
2258
+ Z7_COM7F_IMF(CInStream::Seek(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition))
2259
+ {
2260
+ switch (seekOrigin)
2261
+ {
2262
+ case STREAM_SEEK_SET: break;
2263
+ case STREAM_SEEK_CUR: offset += _virtPos; break;
2264
+ case STREAM_SEEK_END: offset += Size; break;
2265
+ default: return STG_E_INVALIDFUNCTION;
2266
+ }
2267
+ if (offset < 0)
2268
+ return HRESULT_WIN32_ERROR_NEGATIVE_SEEK;
2269
+ _virtPos = (UInt64)offset;
2270
+ if (newPosition)
2271
+ *newPosition = (UInt64)offset;
2272
+ return S_OK;
2273
+ }
2274
+
2275
+ Z7_COM7F_IMF(CHandler::GetStream(UInt32 index, ISequentialInStream **stream))
2276
+ {
2277
+ COM_TRY_BEGIN
2278
+
2279
+ #ifdef DMG_SHOW_RAW
2280
+ if (index >= _files.Size())
2281
+ return S_FALSE;
2282
+ #endif
2283
+
2284
+ CMyComPtr2<ISequentialInStream, CInStream> spec;
2285
+ spec.Create_if_Empty();
2286
+ spec->File = &_files[index];
2287
+ const CFile &file = *spec->File;
2288
+
2289
+ if (!file.IsCorrect)
2290
+ return S_FALSE;
2291
+
2292
+ FOR_VECTOR (i, file.Blocks)
2293
+ {
2294
+ const CBlock &block = file.Blocks[i];
2295
+ if (!block.NeedAllocateBuffer())
2296
+ continue;
2297
+
2298
+ switch (block.Type)
2299
+ {
2300
+ #ifdef Z7_DMG_USE_CACHE_FOR_COPY_BLOCKS
2301
+ case METHOD_COPY:
2302
+ break;
2303
+ #endif
2304
+ case METHOD_ADC:
2305
+ case METHOD_ZLIB:
2306
+ case METHOD_BZIP2:
2307
+ case METHOD_LZFSE:
2308
+ case METHOD_XZ:
2309
+ // case METHOD_END:
2310
+ if (file.GetUnpackSize_of_Block(i) > k_Chunk_Size_MAX)
2311
+ return S_FALSE;
2312
+ break;
2313
+ default:
2314
+ return S_FALSE;
2315
+ }
2316
+ }
2317
+
2318
+ spec->Stream = _inStream;
2319
+ spec->Size = spec->File->Size;
2320
+ // RINOK(
2321
+ spec->Init(_startPos + _dataForkPair.Offset);
2322
+ *stream = spec.Detach();
2323
+ return S_OK;
2324
+
2325
+ COM_TRY_END
2326
+ }
2327
+
2328
+ REGISTER_ARC_I(
2329
+ "Dmg", "dmg", NULL, 0xE4,
2330
+ k_Signature,
2331
+ 0,
2332
+ NArcInfoFlags::kBackwardOpen |
2333
+ NArcInfoFlags::kUseGlobalOffset,
2334
+ NULL)
2335
+
2336
+ }}