multi_compress 0.1.0

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 (219) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +116 -0
  5. data/ext/multi_compress/extconf.rb +171 -0
  6. data/ext/multi_compress/multi_compress.c +1534 -0
  7. data/ext/multi_compress/vendor/brotli/c/common/constants.c +15 -0
  8. data/ext/multi_compress/vendor/brotli/c/common/constants.h +201 -0
  9. data/ext/multi_compress/vendor/brotli/c/common/context.c +156 -0
  10. data/ext/multi_compress/vendor/brotli/c/common/context.h +113 -0
  11. data/ext/multi_compress/vendor/brotli/c/common/dictionary.c +5916 -0
  12. data/ext/multi_compress/vendor/brotli/c/common/dictionary.h +64 -0
  13. data/ext/multi_compress/vendor/brotli/c/common/platform.c +23 -0
  14. data/ext/multi_compress/vendor/brotli/c/common/platform.h +541 -0
  15. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary.c +521 -0
  16. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary_internal.h +75 -0
  17. data/ext/multi_compress/vendor/brotli/c/common/transform.c +291 -0
  18. data/ext/multi_compress/vendor/brotli/c/common/transform.h +85 -0
  19. data/ext/multi_compress/vendor/brotli/c/common/version.h +51 -0
  20. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.c +78 -0
  21. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.h +423 -0
  22. data/ext/multi_compress/vendor/brotli/c/dec/decode.c +2875 -0
  23. data/ext/multi_compress/vendor/brotli/c/dec/huffman.c +342 -0
  24. data/ext/multi_compress/vendor/brotli/c/dec/huffman.h +122 -0
  25. data/ext/multi_compress/vendor/brotli/c/dec/prefix.h +733 -0
  26. data/ext/multi_compress/vendor/brotli/c/dec/state.c +183 -0
  27. data/ext/multi_compress/vendor/brotli/c/dec/state.h +400 -0
  28. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.c +207 -0
  29. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.h +40 -0
  30. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.c +939 -0
  31. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.h +96 -0
  32. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_inc.h +189 -0
  33. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.c +36 -0
  34. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.h +64 -0
  35. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  36. data/ext/multi_compress/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  37. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.c +217 -0
  38. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.h +52 -0
  39. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter_inc.h +481 -0
  40. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.c +1336 -0
  41. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.h +89 -0
  42. data/ext/multi_compress/vendor/brotli/c/enc/cluster.c +57 -0
  43. data/ext/multi_compress/vendor/brotli/c/enc/cluster.h +49 -0
  44. data/ext/multi_compress/vendor/brotli/c/enc/cluster_inc.h +325 -0
  45. data/ext/multi_compress/vendor/brotli/c/enc/command.c +28 -0
  46. data/ext/multi_compress/vendor/brotli/c/enc/command.h +191 -0
  47. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.c +207 -0
  48. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.h +74 -0
  49. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.c +800 -0
  50. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.h +86 -0
  51. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.c +657 -0
  52. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.h +72 -0
  53. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.c +1848 -0
  54. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  55. data/ext/multi_compress/vendor/brotli/c/enc/encode.c +1996 -0
  56. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.c +640 -0
  57. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.h +157 -0
  58. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.c +504 -0
  59. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.h +123 -0
  60. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode_static.h +542 -0
  61. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.c +105 -0
  62. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.h +67 -0
  63. data/ext/multi_compress/vendor/brotli/c/enc/find_match_length.h +72 -0
  64. data/ext/multi_compress/vendor/brotli/c/enc/hash.h +728 -0
  65. data/ext/multi_compress/vendor/brotli/c/enc/hash_composite_inc.h +140 -0
  66. data/ext/multi_compress/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +295 -0
  67. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_inc.h +262 -0
  68. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_inc.h +258 -0
  69. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  70. data/ext/multi_compress/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  71. data/ext/multi_compress/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +330 -0
  72. data/ext/multi_compress/vendor/brotli/c/enc/histogram.c +100 -0
  73. data/ext/multi_compress/vendor/brotli/c/enc/histogram.h +64 -0
  74. data/ext/multi_compress/vendor/brotli/c/enc/histogram_inc.h +51 -0
  75. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.c +180 -0
  76. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.h +32 -0
  77. data/ext/multi_compress/vendor/brotli/c/enc/memory.c +194 -0
  78. data/ext/multi_compress/vendor/brotli/c/enc/memory.h +131 -0
  79. data/ext/multi_compress/vendor/brotli/c/enc/metablock.c +677 -0
  80. data/ext/multi_compress/vendor/brotli/c/enc/metablock.h +106 -0
  81. data/ext/multi_compress/vendor/brotli/c/enc/metablock_inc.h +185 -0
  82. data/ext/multi_compress/vendor/brotli/c/enc/params.h +47 -0
  83. data/ext/multi_compress/vendor/brotli/c/enc/prefix.h +54 -0
  84. data/ext/multi_compress/vendor/brotli/c/enc/quality.h +202 -0
  85. data/ext/multi_compress/vendor/brotli/c/enc/ringbuffer.h +168 -0
  86. data/ext/multi_compress/vendor/brotli/c/enc/state.h +104 -0
  87. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.c +542 -0
  88. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.h +41 -0
  89. data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.h +5866 -0
  90. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.c +85 -0
  91. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.h +33 -0
  92. data/ext/multi_compress/vendor/brotli/c/enc/write_bits.h +88 -0
  93. data/ext/multi_compress/vendor/brotli/c/include/brotli/decode.h +409 -0
  94. data/ext/multi_compress/vendor/brotli/c/include/brotli/encode.h +501 -0
  95. data/ext/multi_compress/vendor/brotli/c/include/brotli/port.h +305 -0
  96. data/ext/multi_compress/vendor/brotli/c/include/brotli/shared_dictionary.h +100 -0
  97. data/ext/multi_compress/vendor/brotli/c/include/brotli/types.h +83 -0
  98. data/ext/multi_compress/vendor/lz4/lib/LICENSE +24 -0
  99. data/ext/multi_compress/vendor/lz4/lib/Makefile +244 -0
  100. data/ext/multi_compress/vendor/lz4/lib/README.md +193 -0
  101. data/ext/multi_compress/vendor/lz4/lib/dll/example/Makefile +63 -0
  102. data/ext/multi_compress/vendor/lz4/lib/dll/example/README.md +69 -0
  103. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.sln +25 -0
  104. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.vcxproj +182 -0
  105. data/ext/multi_compress/vendor/lz4/lib/liblz4-dll.rc.in +35 -0
  106. data/ext/multi_compress/vendor/lz4/lib/liblz4.pc.in +14 -0
  107. data/ext/multi_compress/vendor/lz4/lib/lz4.c +2829 -0
  108. data/ext/multi_compress/vendor/lz4/lib/lz4.h +884 -0
  109. data/ext/multi_compress/vendor/lz4/lib/lz4file.c +341 -0
  110. data/ext/multi_compress/vendor/lz4/lib/lz4file.h +93 -0
  111. data/ext/multi_compress/vendor/lz4/lib/lz4frame.c +2136 -0
  112. data/ext/multi_compress/vendor/lz4/lib/lz4frame.h +751 -0
  113. data/ext/multi_compress/vendor/lz4/lib/lz4frame_static.h +47 -0
  114. data/ext/multi_compress/vendor/lz4/lib/lz4hc.c +2192 -0
  115. data/ext/multi_compress/vendor/lz4/lib/lz4hc.h +414 -0
  116. data/ext/multi_compress/vendor/lz4/lib/xxhash.c +1030 -0
  117. data/ext/multi_compress/vendor/lz4/lib/xxhash.h +328 -0
  118. data/ext/multi_compress/vendor/zstd/lib/BUCK +232 -0
  119. data/ext/multi_compress/vendor/zstd/lib/Makefile +369 -0
  120. data/ext/multi_compress/vendor/zstd/lib/README.md +237 -0
  121. data/ext/multi_compress/vendor/zstd/lib/common/allocations.h +55 -0
  122. data/ext/multi_compress/vendor/zstd/lib/common/bits.h +200 -0
  123. data/ext/multi_compress/vendor/zstd/lib/common/bitstream.h +457 -0
  124. data/ext/multi_compress/vendor/zstd/lib/common/compiler.h +450 -0
  125. data/ext/multi_compress/vendor/zstd/lib/common/cpu.h +249 -0
  126. data/ext/multi_compress/vendor/zstd/lib/common/debug.c +30 -0
  127. data/ext/multi_compress/vendor/zstd/lib/common/debug.h +116 -0
  128. data/ext/multi_compress/vendor/zstd/lib/common/entropy_common.c +340 -0
  129. data/ext/multi_compress/vendor/zstd/lib/common/error_private.c +63 -0
  130. data/ext/multi_compress/vendor/zstd/lib/common/error_private.h +168 -0
  131. data/ext/multi_compress/vendor/zstd/lib/common/fse.h +640 -0
  132. data/ext/multi_compress/vendor/zstd/lib/common/fse_decompress.c +313 -0
  133. data/ext/multi_compress/vendor/zstd/lib/common/huf.h +286 -0
  134. data/ext/multi_compress/vendor/zstd/lib/common/mem.h +426 -0
  135. data/ext/multi_compress/vendor/zstd/lib/common/pool.c +371 -0
  136. data/ext/multi_compress/vendor/zstd/lib/common/pool.h +90 -0
  137. data/ext/multi_compress/vendor/zstd/lib/common/portability_macros.h +158 -0
  138. data/ext/multi_compress/vendor/zstd/lib/common/threading.c +182 -0
  139. data/ext/multi_compress/vendor/zstd/lib/common/threading.h +150 -0
  140. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.c +18 -0
  141. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.h +7020 -0
  142. data/ext/multi_compress/vendor/zstd/lib/common/zstd_common.c +48 -0
  143. data/ext/multi_compress/vendor/zstd/lib/common/zstd_deps.h +111 -0
  144. data/ext/multi_compress/vendor/zstd/lib/common/zstd_internal.h +392 -0
  145. data/ext/multi_compress/vendor/zstd/lib/common/zstd_trace.h +163 -0
  146. data/ext/multi_compress/vendor/zstd/lib/compress/clevels.h +134 -0
  147. data/ext/multi_compress/vendor/zstd/lib/compress/fse_compress.c +625 -0
  148. data/ext/multi_compress/vendor/zstd/lib/compress/hist.c +181 -0
  149. data/ext/multi_compress/vendor/zstd/lib/compress/hist.h +75 -0
  150. data/ext/multi_compress/vendor/zstd/lib/compress/huf_compress.c +1464 -0
  151. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress.c +7153 -0
  152. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_internal.h +1534 -0
  153. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
  154. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
  155. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
  156. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.h +54 -0
  157. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
  158. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  159. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_cwksp.h +748 -0
  160. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.c +770 -0
  161. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.h +50 -0
  162. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.c +968 -0
  163. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.h +38 -0
  164. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.c +2199 -0
  165. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.h +202 -0
  166. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.c +730 -0
  167. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.h +117 -0
  168. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
  169. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.c +1576 -0
  170. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.h +80 -0
  171. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.c +1882 -0
  172. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.h +113 -0
  173. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress.c +1944 -0
  174. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress_amd64.S +595 -0
  175. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
  176. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
  177. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress.c +2407 -0
  178. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.c +2215 -0
  179. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
  180. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
  181. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff.h +214 -0
  182. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
  183. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
  184. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
  185. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.c +1261 -0
  186. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.h +152 -0
  187. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
  188. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.h +67 -0
  189. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/fastcover.c +766 -0
  190. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/zdict.c +1133 -0
  191. data/ext/multi_compress/vendor/zstd/lib/dll/example/Makefile +48 -0
  192. data/ext/multi_compress/vendor/zstd/lib/dll/example/README.md +63 -0
  193. data/ext/multi_compress/vendor/zstd/lib/dll/example/build_package.bat +20 -0
  194. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
  195. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
  196. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
  197. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.c +2127 -0
  198. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
  199. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
  200. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
  201. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
  202. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
  203. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
  204. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
  205. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
  206. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
  207. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.c +4106 -0
  208. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
  209. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
  210. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
  211. data/ext/multi_compress/vendor/zstd/lib/libzstd.mk +237 -0
  212. data/ext/multi_compress/vendor/zstd/lib/libzstd.pc.in +16 -0
  213. data/ext/multi_compress/vendor/zstd/lib/module.modulemap +35 -0
  214. data/ext/multi_compress/vendor/zstd/lib/zdict.h +474 -0
  215. data/ext/multi_compress/vendor/zstd/lib/zstd.h +3089 -0
  216. data/ext/multi_compress/vendor/zstd/lib/zstd_errors.h +114 -0
  217. data/lib/multi_compress/version.rb +5 -0
  218. data/lib/multi_compress.rb +329 -0
  219. metadata +322 -0
@@ -0,0 +1,305 @@
1
+ /* Copyright 2016 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /* Macros for compiler / platform specific API declarations. */
8
+
9
+ #ifndef BROTLI_COMMON_PORT_H_
10
+ #define BROTLI_COMMON_PORT_H_
11
+
12
+ /* The following macros were borrowed from https://github.com/nemequ/hedley
13
+ * with permission of original author - Evan Nemerson <evan@nemerson.com> */
14
+
15
+ /* >>> >>> >>> hedley macros */
16
+
17
+ #define BROTLI_MAKE_VERSION(major, minor, revision) \
18
+ (((major) * 1000000) + ((minor) * 1000) + (revision))
19
+
20
+ #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
21
+ #define BROTLI_GNUC_VERSION \
22
+ BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
23
+ #elif defined(__GNUC__)
24
+ #define BROTLI_GNUC_VERSION BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, 0)
25
+ #endif
26
+
27
+ #if defined(BROTLI_GNUC_VERSION)
28
+ #define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) \
29
+ (BROTLI_GNUC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
30
+ #else
31
+ #define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) (0)
32
+ #endif
33
+
34
+ #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)
35
+ #define BROTLI_MSVC_VERSION \
36
+ BROTLI_MAKE_VERSION((_MSC_FULL_VER / 10000000), \
37
+ (_MSC_FULL_VER % 10000000) / 100000, \
38
+ (_MSC_FULL_VER % 100000) / 100)
39
+ #elif defined(_MSC_FULL_VER)
40
+ #define BROTLI_MSVC_VERSION \
41
+ BROTLI_MAKE_VERSION((_MSC_FULL_VER / 1000000), \
42
+ (_MSC_FULL_VER % 1000000) / 10000, \
43
+ (_MSC_FULL_VER % 10000) / 10)
44
+ #elif defined(_MSC_VER)
45
+ #define BROTLI_MSVC_VERSION \
46
+ BROTLI_MAKE_VERSION(_MSC_VER / 100, _MSC_VER % 100, 0)
47
+ #endif
48
+
49
+ #if !defined(_MSC_VER)
50
+ #define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) (0)
51
+ #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
52
+ #define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
53
+ (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
54
+ #elif defined(_MSC_VER) && (_MSC_VER >= 1200)
55
+ #define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
56
+ (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
57
+ #else
58
+ #define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
59
+ (_MSC_VER >= ((major * 100) + (minor)))
60
+ #endif
61
+
62
+ #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
63
+ #define BROTLI_INTEL_VERSION \
64
+ BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100, \
65
+ __INTEL_COMPILER % 100, \
66
+ __INTEL_COMPILER_UPDATE)
67
+ #elif defined(__INTEL_COMPILER)
68
+ #define BROTLI_INTEL_VERSION \
69
+ BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
70
+ #endif
71
+
72
+ #if defined(BROTLI_INTEL_VERSION)
73
+ #define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) \
74
+ (BROTLI_INTEL_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
75
+ #else
76
+ #define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) (0)
77
+ #endif
78
+
79
+ #if defined(__PGI) && \
80
+ defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
81
+ #define BROTLI_PGI_VERSION \
82
+ BROTLI_MAKE_VERSION(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
83
+ #endif
84
+
85
+ #if defined(BROTLI_PGI_VERSION)
86
+ #define BROTLI_PGI_VERSION_CHECK(major, minor, patch) \
87
+ (BROTLI_PGI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
88
+ #else
89
+ #define BROTLI_PGI_VERSION_CHECK(major, minor, patch) (0)
90
+ #endif
91
+
92
+ #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
93
+ #define BROTLI_SUNPRO_VERSION \
94
+ BROTLI_MAKE_VERSION( \
95
+ (((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), \
96
+ (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), \
97
+ (__SUNPRO_C & 0xf) * 10)
98
+ #elif defined(__SUNPRO_C)
99
+ #define BROTLI_SUNPRO_VERSION \
100
+ BROTLI_MAKE_VERSION((__SUNPRO_C >> 8) & 0xf, \
101
+ (__SUNPRO_C >> 4) & 0xf, \
102
+ (__SUNPRO_C) & 0xf)
103
+ #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
104
+ #define BROTLI_SUNPRO_VERSION \
105
+ BROTLI_MAKE_VERSION( \
106
+ (((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), \
107
+ (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), \
108
+ (__SUNPRO_CC & 0xf) * 10)
109
+ #elif defined(__SUNPRO_CC)
110
+ #define BROTLI_SUNPRO_VERSION \
111
+ BROTLI_MAKE_VERSION((__SUNPRO_CC >> 8) & 0xf, \
112
+ (__SUNPRO_CC >> 4) & 0xf, \
113
+ (__SUNPRO_CC) & 0xf)
114
+ #endif
115
+
116
+ #if defined(BROTLI_SUNPRO_VERSION)
117
+ #define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) \
118
+ (BROTLI_SUNPRO_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
119
+ #else
120
+ #define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) (0)
121
+ #endif
122
+
123
+ #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
124
+ #define BROTLI_ARM_VERSION \
125
+ BROTLI_MAKE_VERSION((__ARMCOMPILER_VERSION / 1000000), \
126
+ (__ARMCOMPILER_VERSION % 1000000) / 10000, \
127
+ (__ARMCOMPILER_VERSION % 10000) / 100)
128
+ #elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
129
+ #define BROTLI_ARM_VERSION \
130
+ BROTLI_MAKE_VERSION((__ARMCC_VERSION / 1000000), \
131
+ (__ARMCC_VERSION % 1000000) / 10000, \
132
+ (__ARMCC_VERSION % 10000) / 100)
133
+ #endif
134
+
135
+ #if defined(BROTLI_ARM_VERSION)
136
+ #define BROTLI_ARM_VERSION_CHECK(major, minor, patch) \
137
+ (BROTLI_ARM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
138
+ #else
139
+ #define BROTLI_ARM_VERSION_CHECK(major, minor, patch) (0)
140
+ #endif
141
+
142
+ #if defined(__ibmxl__)
143
+ #define BROTLI_IBM_VERSION \
144
+ BROTLI_MAKE_VERSION(__ibmxl_version__, \
145
+ __ibmxl_release__, \
146
+ __ibmxl_modification__)
147
+ #elif defined(__xlC__) && defined(__xlC_ver__)
148
+ #define BROTLI_IBM_VERSION \
149
+ BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
150
+ #elif defined(__xlC__)
151
+ #define BROTLI_IBM_VERSION BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, 0)
152
+ #endif
153
+
154
+ #if defined(BROTLI_IBM_VERSION)
155
+ #define BROTLI_IBM_VERSION_CHECK(major, minor, patch) \
156
+ (BROTLI_IBM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
157
+ #else
158
+ #define BROTLI_IBM_VERSION_CHECK(major, minor, patch) (0)
159
+ #endif
160
+
161
+ #if defined(__TI_COMPILER_VERSION__)
162
+ #define BROTLI_TI_VERSION \
163
+ BROTLI_MAKE_VERSION((__TI_COMPILER_VERSION__ / 1000000), \
164
+ (__TI_COMPILER_VERSION__ % 1000000) / 1000, \
165
+ (__TI_COMPILER_VERSION__ % 1000))
166
+ #endif
167
+
168
+ #if defined(BROTLI_TI_VERSION)
169
+ #define BROTLI_TI_VERSION_CHECK(major, minor, patch) \
170
+ (BROTLI_TI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
171
+ #else
172
+ #define BROTLI_TI_VERSION_CHECK(major, minor, patch) (0)
173
+ #endif
174
+
175
+ #if defined(__IAR_SYSTEMS_ICC__)
176
+ #if __VER__ > 1000
177
+ #define BROTLI_IAR_VERSION \
178
+ BROTLI_MAKE_VERSION((__VER__ / 1000000), \
179
+ (__VER__ / 1000) % 1000, \
180
+ (__VER__ % 1000))
181
+ #else
182
+ #define BROTLI_IAR_VERSION BROTLI_MAKE_VERSION(VER / 100, __VER__ % 100, 0)
183
+ #endif
184
+ #endif
185
+
186
+ #if defined(BROTLI_IAR_VERSION)
187
+ #define BROTLI_IAR_VERSION_CHECK(major, minor, patch) \
188
+ (BROTLI_IAR_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
189
+ #else
190
+ #define BROTLI_IAR_VERSION_CHECK(major, minor, patch) (0)
191
+ #endif
192
+
193
+ #if defined(__TINYC__)
194
+ #define BROTLI_TINYC_VERSION \
195
+ BROTLI_MAKE_VERSION(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
196
+ #endif
197
+
198
+ #if defined(BROTLI_TINYC_VERSION)
199
+ #define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) \
200
+ (BROTLI_TINYC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
201
+ #else
202
+ #define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) (0)
203
+ #endif
204
+
205
+ #if defined(__has_attribute)
206
+ #define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \
207
+ __has_attribute(attribute)
208
+ #else
209
+ #define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \
210
+ BROTLI_GNUC_VERSION_CHECK(major, minor, patch)
211
+ #endif
212
+
213
+ #if defined(__has_builtin)
214
+ #define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \
215
+ __has_builtin(builtin)
216
+ #else
217
+ #define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \
218
+ BROTLI_GNUC_VERSION_CHECK(major, minor, patch)
219
+ #endif
220
+
221
+ #if defined(__has_feature)
222
+ #define BROTLI_HAS_FEATURE(feature) __has_feature(feature)
223
+ #else
224
+ #define BROTLI_HAS_FEATURE(feature) (0)
225
+ #endif
226
+
227
+ #if defined(_WIN32) || defined(__CYGWIN__)
228
+ #define BROTLI_PUBLIC
229
+ #elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \
230
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
231
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
232
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
233
+ BROTLI_IBM_VERSION_CHECK(13, 1, 0) || \
234
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
235
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && \
236
+ defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))
237
+ #define BROTLI_PUBLIC __attribute__ ((visibility ("default")))
238
+ #else
239
+ #define BROTLI_PUBLIC
240
+ #endif
241
+
242
+ /* BROTLI_INTERNAL could be defined to override visibility, e.g. for tests. */
243
+ #if !defined(BROTLI_INTERNAL)
244
+ #if defined(_WIN32) || defined(__CYGWIN__)
245
+ #define BROTLI_INTERNAL
246
+ #elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \
247
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
248
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
249
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
250
+ BROTLI_IBM_VERSION_CHECK(13, 1, 0) || \
251
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
252
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && \
253
+ defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))
254
+ #define BROTLI_INTERNAL __attribute__ ((visibility ("hidden")))
255
+ #else
256
+ #define BROTLI_INTERNAL
257
+ #endif
258
+ #endif
259
+
260
+ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
261
+ !defined(__STDC_NO_VLA__) && !defined(__cplusplus) && \
262
+ !defined(__PGI) && !defined(__PGIC__) && !defined(__TINYC__) && \
263
+ !defined(__clang__)
264
+ #define BROTLI_ARRAY_PARAM(name) (name)
265
+ #else
266
+ #define BROTLI_ARRAY_PARAM(name)
267
+ #endif
268
+
269
+ /* <<< <<< <<< end of hedley macros. */
270
+
271
+ #if defined(BROTLI_SHARED_COMPILATION)
272
+ #if defined(_WIN32)
273
+ #if defined(BROTLICOMMON_SHARED_COMPILATION)
274
+ #define BROTLI_COMMON_API __declspec(dllexport)
275
+ #else
276
+ #define BROTLI_COMMON_API __declspec(dllimport)
277
+ #endif /* BROTLICOMMON_SHARED_COMPILATION */
278
+ #if defined(BROTLIDEC_SHARED_COMPILATION)
279
+ #define BROTLI_DEC_API __declspec(dllexport)
280
+ #else
281
+ #define BROTLI_DEC_API __declspec(dllimport)
282
+ #endif /* BROTLIDEC_SHARED_COMPILATION */
283
+ #if defined(BROTLIENC_SHARED_COMPILATION)
284
+ #define BROTLI_ENC_API __declspec(dllexport)
285
+ #else
286
+ #define BROTLI_ENC_API __declspec(dllimport)
287
+ #endif /* BROTLIENC_SHARED_COMPILATION */
288
+ #else /* _WIN32 */
289
+ #define BROTLI_COMMON_API BROTLI_PUBLIC
290
+ #define BROTLI_DEC_API BROTLI_PUBLIC
291
+ #define BROTLI_ENC_API BROTLI_PUBLIC
292
+ #endif /* _WIN32 */
293
+ #else /* BROTLI_SHARED_COMPILATION */
294
+ #define BROTLI_COMMON_API
295
+ #define BROTLI_DEC_API
296
+ #define BROTLI_ENC_API
297
+ #endif
298
+
299
+ #if defined(BROTLI_BUILD_ENC_EXTRA_API)
300
+ #define BROTLI_ENC_EXTRA_API BROTLI_ENC_API
301
+ #else
302
+ #define BROTLI_ENC_EXTRA_API BROTLI_INTERNAL
303
+ #endif
304
+
305
+ #endif /* BROTLI_COMMON_PORT_H_ */
@@ -0,0 +1,100 @@
1
+ /* Copyright 2017 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /* (Opaque) Shared Dictionary definition and utilities. */
8
+
9
+ #ifndef BROTLI_COMMON_SHARED_DICTIONARY_H_
10
+ #define BROTLI_COMMON_SHARED_DICTIONARY_H_
11
+
12
+ #include <brotli/port.h>
13
+ #include <brotli/types.h>
14
+
15
+ #if defined(__cplusplus) || defined(c_plusplus)
16
+ extern "C" {
17
+ #endif
18
+
19
+ #define SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH 4
20
+ #define SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH 31
21
+ #define SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS 64
22
+ #define SHARED_BROTLI_MAX_COMPOUND_DICTS 15
23
+
24
+ /**
25
+ * Opaque structure that holds shared dictionary data.
26
+ *
27
+ * Allocated and initialized with ::BrotliSharedDictionaryCreateInstance.
28
+ * Cleaned up and deallocated with ::BrotliSharedDictionaryDestroyInstance.
29
+ */
30
+ typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionary;
31
+
32
+ /**
33
+ * Input data type for ::BrotliSharedDictionaryAttach.
34
+ */
35
+ typedef enum BrotliSharedDictionaryType {
36
+ /** Raw LZ77 prefix dictionary. */
37
+ BROTLI_SHARED_DICTIONARY_RAW = 0,
38
+ /** Serialized shared dictionary.
39
+ *
40
+ * DO NOT USE: methods accepting this value will fail.
41
+ */
42
+ BROTLI_SHARED_DICTIONARY_SERIALIZED = 1
43
+ } BrotliSharedDictionaryType;
44
+
45
+ /**
46
+ * Creates an instance of ::BrotliSharedDictionary.
47
+ *
48
+ * Fresh instance has default word dictionary and transforms
49
+ * and no LZ77 prefix dictionary.
50
+ *
51
+ * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
52
+ * case they are both zero, default memory allocators are used. @p opaque is
53
+ * passed to @p alloc_func and @p free_func when they are called. @p free_func
54
+ * has to return without doing anything when asked to free a NULL pointer.
55
+ *
56
+ * @param alloc_func custom memory allocation function
57
+ * @param free_func custom memory free function
58
+ * @param opaque custom memory manager handle
59
+ * @returns @c 0 if instance can not be allocated or initialized
60
+ * @returns pointer to initialized ::BrotliSharedDictionary otherwise
61
+ */
62
+ BROTLI_COMMON_API BrotliSharedDictionary* BrotliSharedDictionaryCreateInstance(
63
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
64
+
65
+ /**
66
+ * Deinitializes and frees ::BrotliSharedDictionary instance.
67
+ *
68
+ * @param dict shared dictionary instance to be cleaned up and deallocated
69
+ */
70
+ BROTLI_COMMON_API void BrotliSharedDictionaryDestroyInstance(
71
+ BrotliSharedDictionary* dict);
72
+
73
+ /**
74
+ * Attaches dictionary to a given instance of ::BrotliSharedDictionary.
75
+ *
76
+ * Dictionary to be attached is represented in a serialized format as a region
77
+ * of memory.
78
+ *
79
+ * Provided data it partially referenced by a resulting (compound) dictionary,
80
+ * and should be kept untouched, while at least one compound dictionary uses it.
81
+ * This way memory overhead is kept minimal by the cost of additional resource
82
+ * management.
83
+ *
84
+ * @param dict dictionary to extend
85
+ * @param type type of dictionary to attach
86
+ * @param data_size size of @p data
87
+ * @param data serialized dictionary of type @p type, with at least @p data_size
88
+ * addressable bytes
89
+ * @returns ::BROTLI_TRUE if provided dictionary is successfully attached
90
+ * @returns ::BROTLI_FALSE otherwise
91
+ */
92
+ BROTLI_COMMON_API BROTLI_BOOL BrotliSharedDictionaryAttach(
93
+ BrotliSharedDictionary* dict, BrotliSharedDictionaryType type,
94
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]);
95
+
96
+ #if defined(__cplusplus) || defined(c_plusplus)
97
+ } /* extern "C" */
98
+ #endif
99
+
100
+ #endif /* BROTLI_COMMON_SHARED_DICTIONARY_H_ */
@@ -0,0 +1,83 @@
1
+ /* Copyright 2013 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /**
8
+ * @file
9
+ * Common types used in decoder and encoder API.
10
+ */
11
+
12
+ #ifndef BROTLI_COMMON_TYPES_H_
13
+ #define BROTLI_COMMON_TYPES_H_
14
+
15
+ #include <stddef.h> /* for size_t */
16
+
17
+ #if defined(_MSC_VER) && (_MSC_VER < 1600)
18
+ typedef __int8 int8_t;
19
+ typedef unsigned __int8 uint8_t;
20
+ typedef __int16 int16_t;
21
+ typedef unsigned __int16 uint16_t;
22
+ typedef __int32 int32_t;
23
+ typedef unsigned __int32 uint32_t;
24
+ typedef unsigned __int64 uint64_t;
25
+ typedef __int64 int64_t;
26
+ #else
27
+ #include <stdint.h>
28
+ #endif /* defined(_MSC_VER) && (_MSC_VER < 1600) */
29
+
30
+ /**
31
+ * A portable @c bool replacement.
32
+ *
33
+ * ::BROTLI_BOOL is a "documentation" type: actually it is @c int, but in API it
34
+ * denotes a type, whose only values are ::BROTLI_TRUE and ::BROTLI_FALSE.
35
+ *
36
+ * ::BROTLI_BOOL values passed to Brotli should either be ::BROTLI_TRUE or
37
+ * ::BROTLI_FALSE, or be a result of ::TO_BROTLI_BOOL macros.
38
+ *
39
+ * ::BROTLI_BOOL values returned by Brotli should not be tested for equality
40
+ * with @c true, @c false, ::BROTLI_TRUE, ::BROTLI_FALSE, but rather should be
41
+ * evaluated, for example: @code{.cpp}
42
+ * if (SomeBrotliFunction(encoder, BROTLI_TRUE) &&
43
+ * !OtherBrotliFunction(decoder, BROTLI_FALSE)) {
44
+ * bool x = !!YetAnotherBrotliFunction(encoder, TO_BROLTI_BOOL(2 * 2 == 4));
45
+ * DoSomething(x);
46
+ * }
47
+ * @endcode
48
+ */
49
+ #define BROTLI_BOOL int
50
+ /** Portable @c true replacement. */
51
+ #define BROTLI_TRUE 1
52
+ /** Portable @c false replacement. */
53
+ #define BROTLI_FALSE 0
54
+ /** @c bool to ::BROTLI_BOOL conversion macros. */
55
+ #define TO_BROTLI_BOOL(X) (!!(X) ? BROTLI_TRUE : BROTLI_FALSE)
56
+
57
+ #define BROTLI_MAKE_UINT64_T(high, low) ((((uint64_t)(high)) << 32) | low)
58
+
59
+ #define BROTLI_UINT32_MAX (~((uint32_t)0))
60
+ #define BROTLI_SIZE_MAX (~((size_t)0))
61
+
62
+ /**
63
+ * Allocating function pointer type.
64
+ *
65
+ * @param opaque custom memory manager handle provided by client
66
+ * @param size requested memory region size; can not be @c 0
67
+ * @returns @c 0 in the case of failure
68
+ * @returns a valid pointer to a memory region of at least @p size bytes
69
+ * long otherwise
70
+ */
71
+ typedef void* (*brotli_alloc_func)(void* opaque, size_t size);
72
+
73
+ /**
74
+ * Deallocating function pointer type.
75
+ *
76
+ * This function @b SHOULD do nothing if @p address is @c 0.
77
+ *
78
+ * @param opaque custom memory manager handle provided by client
79
+ * @param address memory region pointer returned by ::brotli_alloc_func, or @c 0
80
+ */
81
+ typedef void (*brotli_free_func)(void* opaque, void* address);
82
+
83
+ #endif /* BROTLI_COMMON_TYPES_H_ */
@@ -0,0 +1,24 @@
1
+ LZ4 Library
2
+ Copyright (c) 2011-2020, Yann Collet
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without modification,
6
+ are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ * Redistributions in binary form must reproduce the above copyright notice, this
12
+ list of conditions and the following disclaimer in the documentation and/or
13
+ other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
19
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.