commit 1b40f0755161394b75657b3d764995a1d61c0791 Author: ModelHub XC Date: Thu Apr 30 00:13:00 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: mradermacher/KarantaOCR-i1-GGUF Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..66ac3f8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,60 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +KarantaOCR.imatrix.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ1_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ1_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ2_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ2_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ2_XS.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ2_XXS.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ3_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ3_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ3_XS.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ3_XXS.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ4_NL.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-IQ4_XS.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q2_K.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q2_K_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q3_K_L.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q3_K_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q3_K_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q4_0.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q4_1.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q4_K_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q5_K_M.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q5_K_S.gguf filter=lfs diff=lfs merge=lfs -text +KarantaOCR.i1-Q6_K.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/KarantaOCR.i1-IQ1_M.gguf b/KarantaOCR.i1-IQ1_M.gguf new file mode 100644 index 0000000..d8afa59 --- /dev/null +++ b/KarantaOCR.i1-IQ1_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d03a364152cb645cd5a0a707360c3a00b957785fb59fcd196f782f91353401a6 +size 850026944 diff --git a/KarantaOCR.i1-IQ1_S.gguf b/KarantaOCR.i1-IQ1_S.gguf new file mode 100644 index 0000000..3a4291d --- /dev/null +++ b/KarantaOCR.i1-IQ1_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f31b1245c76193b1afabed25c668933a555f09040fec8361b65e504a779e2e4c +size 791093696 diff --git a/KarantaOCR.i1-IQ2_M.gguf b/KarantaOCR.i1-IQ2_M.gguf new file mode 100644 index 0000000..67d808e --- /dev/null +++ b/KarantaOCR.i1-IQ2_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89820b3a4ea311638b0ad804c6f41f59b0f165ae86f9e21327f93198e8950f90 +size 1140515264 diff --git a/KarantaOCR.i1-IQ2_S.gguf b/KarantaOCR.i1-IQ2_S.gguf new file mode 100644 index 0000000..1e81c0a --- /dev/null +++ b/KarantaOCR.i1-IQ2_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2427a9a7c4972668601c41dfa399a3a7ffb9ecdfd9917ed6e16818275afa636c +size 1061937600 diff --git a/KarantaOCR.i1-IQ2_XS.gguf b/KarantaOCR.i1-IQ2_XS.gguf new file mode 100644 index 0000000..178c367 --- /dev/null +++ b/KarantaOCR.i1-IQ2_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3b61c1aadaf98e3ce11e22feeb70ae1cfc9e820d90c9b09e8ca536204c2e906 +size 1031545280 diff --git a/KarantaOCR.i1-IQ2_XXS.gguf b/KarantaOCR.i1-IQ2_XXS.gguf new file mode 100644 index 0000000..d4fe6b7 --- /dev/null +++ b/KarantaOCR.i1-IQ2_XXS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e59a4b62fa5634f74f639cc8bbea126d11d9cccacb66623f733db4511861cced +size 948249024 diff --git a/KarantaOCR.i1-IQ3_M.gguf b/KarantaOCR.i1-IQ3_M.gguf new file mode 100644 index 0000000..fbe02d1 --- /dev/null +++ b/KarantaOCR.i1-IQ3_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e719ce793a76ed576056c08d271f9b1c1a693f4895d3598ec1c36f681d91a91 +size 1488894400 diff --git a/KarantaOCR.i1-IQ3_S.gguf b/KarantaOCR.i1-IQ3_S.gguf new file mode 100644 index 0000000..e4fce35 --- /dev/null +++ b/KarantaOCR.i1-IQ3_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1e7f7c7ee9ce49f0f0386b9ef8d8cd102aea89958689ee460a158430abd12db +size 1456863680 diff --git a/KarantaOCR.i1-IQ3_XS.gguf b/KarantaOCR.i1-IQ3_XS.gguf new file mode 100644 index 0000000..b28562c --- /dev/null +++ b/KarantaOCR.i1-IQ3_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3d9bee29a6586679395879d6144eab6b3f09df36afd1083601cf063ef2fb2b0 +size 1391835584 diff --git a/KarantaOCR.i1-IQ3_XXS.gguf b/KarantaOCR.i1-IQ3_XXS.gguf new file mode 100644 index 0000000..240cf4c --- /dev/null +++ b/KarantaOCR.i1-IQ3_XXS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b9b4efe2fb0306049a5bcf5896356b944b9e44056e18eea5a5f18add27589d +size 1282826688 diff --git a/KarantaOCR.i1-IQ4_NL.gguf b/KarantaOCR.i1-IQ4_NL.gguf new file mode 100644 index 0000000..60020d6 --- /dev/null +++ b/KarantaOCR.i1-IQ4_NL.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:033ac622a0f9df02d6fcd20739b7c154039e080351b03a68f4df6cf119bb0a22 +size 1825208768 diff --git a/KarantaOCR.i1-IQ4_XS.gguf b/KarantaOCR.i1-IQ4_XS.gguf new file mode 100644 index 0000000..dbf81e7 --- /dev/null +++ b/KarantaOCR.i1-IQ4_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31895cf8ee7183d5c43fba8b623b77dde7a2d6b76c39a3f94b8ca039173f912a +size 1739094464 diff --git a/KarantaOCR.i1-Q2_K.gguf b/KarantaOCR.i1-Q2_K.gguf new file mode 100644 index 0000000..f9df612 --- /dev/null +++ b/KarantaOCR.i1-Q2_K.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4142db89e3c349bb1fc37d8c1f4e114e2cd6073ab7478e4172e2dfab5234e22 +size 1274755520 diff --git a/KarantaOCR.i1-Q2_K_S.gguf b/KarantaOCR.i1-Q2_K_S.gguf new file mode 100644 index 0000000..2b65f7f --- /dev/null +++ b/KarantaOCR.i1-Q2_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3776d47a3f01565af5a785a72eee1d0a28a826abcbdcd74cc4859d25e7524809 +size 1198127552 diff --git a/KarantaOCR.i1-Q3_K_L.gguf b/KarantaOCR.i1-Q3_K_L.gguf new file mode 100644 index 0000000..fb783f8 --- /dev/null +++ b/KarantaOCR.i1-Q3_K_L.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fe32983b8b98aa3da82788e9a277e40f83339b68538a9221b1d027439b47427 +size 1707391424 diff --git a/KarantaOCR.i1-Q3_K_M.gguf b/KarantaOCR.i1-Q3_K_M.gguf new file mode 100644 index 0000000..685acc3 --- /dev/null +++ b/KarantaOCR.i1-Q3_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fdb156c682b2252e8a854ba908d755be46e4785233adfa4c1537e5a7e7db30c +size 1590475200 diff --git a/KarantaOCR.i1-Q3_K_S.gguf b/KarantaOCR.i1-Q3_K_S.gguf new file mode 100644 index 0000000..ed2e723 --- /dev/null +++ b/KarantaOCR.i1-Q3_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f62ff45123ed9f414779e2190c7ee5d432a96ae706eb24ae54bd030956be1e46 +size 1454356928 diff --git a/KarantaOCR.i1-Q4_0.gguf b/KarantaOCR.i1-Q4_0.gguf new file mode 100644 index 0000000..ad7f719 --- /dev/null +++ b/KarantaOCR.i1-Q4_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:485cb0e8d99c1c078edbd7e0b90b3a42a35cf470a987a66aa3d3818967d3dfea +size 1828485568 diff --git a/KarantaOCR.i1-Q4_1.gguf b/KarantaOCR.i1-Q4_1.gguf new file mode 100644 index 0000000..6f594a1 --- /dev/null +++ b/KarantaOCR.i1-Q4_1.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8062c5dc2cf1b525084e84453f9a98a07352419654a72867b558101c16a2ae5 +size 1996257728 diff --git a/KarantaOCR.i1-Q4_K_M.gguf b/KarantaOCR.i1-Q4_K_M.gguf new file mode 100644 index 0000000..a02b45a --- /dev/null +++ b/KarantaOCR.i1-Q4_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7289474268278297a35f59d0e75d14fbdb275e45696fb589ceb8ea116e9463a4 +size 1929902528 diff --git a/KarantaOCR.i1-Q4_K_S.gguf b/KarantaOCR.i1-Q4_K_S.gguf new file mode 100644 index 0000000..f7743d7 --- /dev/null +++ b/KarantaOCR.i1-Q4_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7c59e4bffffda701287ddc65eb5a17170636e343b27230092ea7d475dd7c909 +size 1834383808 diff --git a/KarantaOCR.i1-Q5_K_M.gguf b/KarantaOCR.i1-Q5_K_M.gguf new file mode 100644 index 0000000..cf1a012 --- /dev/null +++ b/KarantaOCR.i1-Q5_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba93eff281009e6174db780b899b12d9fff45ee73389d6719236a61583876a90 +size 2224814528 diff --git a/KarantaOCR.i1-Q5_K_S.gguf b/KarantaOCR.i1-Q5_K_S.gguf new file mode 100644 index 0000000..471dbff --- /dev/null +++ b/KarantaOCR.i1-Q5_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18629ed71ca290af3b1800d3840316cd3ef14b78e2fa7cfda8c5d27e920d5b0b +size 2169665984 diff --git a/KarantaOCR.i1-Q6_K.gguf b/KarantaOCR.i1-Q6_K.gguf new file mode 100644 index 0000000..359890d --- /dev/null +++ b/KarantaOCR.i1-Q6_K.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bb92576ba41789f5569ddd4b34b12c66b84371f08283543b21742235f37fa0b +size 2538158528 diff --git a/KarantaOCR.imatrix.gguf b/KarantaOCR.imatrix.gguf new file mode 100644 index 0000000..a034c88 --- /dev/null +++ b/KarantaOCR.imatrix.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb9f6fb2bfc2322f467e78cdca6d71dcae1d5cdbd2cf555ce7024b80b29bfcfa +size 3393408 diff --git a/README.md b/README.md new file mode 100644 index 0000000..13d9415 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +--- +base_model: taresco/KarantaOCR +datasets: +- allenai/olmOCR-mix-0225 +language: +- yo +- sw +- ig +- ha +- so +- ar +- en +library_name: transformers +license: apache-2.0 +mradermacher: + readme_rev: 1 +quantized_by: mradermacher +tags: +- OCR +- Text-Generation +- Optical-Character-Recognition +- Low-Resource-Languages +--- +## About + + + + + + + + + +weighted/imatrix quants of https://huggingface.co/taresco/KarantaOCR + + + +***For a convenient overview and download list, visit our [model page for this model](https://hf.tst.eu/model#KarantaOCR-i1-GGUF).*** + +static quants are available at https://huggingface.co/mradermacher/KarantaOCR-GGUF + +**This is a vision model - mmproj files (if any) will be in the [static repository](https://huggingface.co/mradermacher/KarantaOCR-GGUF).** +## Usage + +If you are unsure how to use GGUF files, refer to one of [TheBloke's +READMEs](https://huggingface.co/TheBloke/KafkaLM-70B-German-V0.1-GGUF) for +more details, including on how to concatenate multi-part files. + +## Provided Quants + +(sorted by size, not necessarily quality. IQ-quants are often preferable over similar sized non-IQ quants) + +| Link | Type | Size/GB | Notes | +|:-----|:-----|--------:|:------| +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.imatrix.gguf) | imatrix | 0.1 | imatrix file (for creating your own quants) | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ1_S.gguf) | i1-IQ1_S | 0.9 | for the desperate | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ1_M.gguf) | i1-IQ1_M | 1.0 | mostly desperate | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ2_XXS.gguf) | i1-IQ2_XXS | 1.0 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ2_XS.gguf) | i1-IQ2_XS | 1.1 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ2_S.gguf) | i1-IQ2_S | 1.2 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ2_M.gguf) | i1-IQ2_M | 1.2 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q2_K_S.gguf) | i1-Q2_K_S | 1.3 | very low quality | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q2_K.gguf) | i1-Q2_K | 1.4 | IQ3_XXS probably better | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ3_XXS.gguf) | i1-IQ3_XXS | 1.4 | lower quality | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ3_XS.gguf) | i1-IQ3_XS | 1.5 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q3_K_S.gguf) | i1-Q3_K_S | 1.6 | IQ3_XS probably better | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ3_S.gguf) | i1-IQ3_S | 1.6 | beats Q3_K* | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ3_M.gguf) | i1-IQ3_M | 1.6 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q3_K_M.gguf) | i1-Q3_K_M | 1.7 | IQ3_S probably better | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q3_K_L.gguf) | i1-Q3_K_L | 1.8 | IQ3_M probably better | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ4_XS.gguf) | i1-IQ4_XS | 1.8 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-IQ4_NL.gguf) | i1-IQ4_NL | 1.9 | prefer IQ4_XS | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q4_0.gguf) | i1-Q4_0 | 1.9 | fast, low quality | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q4_K_S.gguf) | i1-Q4_K_S | 1.9 | optimal size/speed/quality | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q4_K_M.gguf) | i1-Q4_K_M | 2.0 | fast, recommended | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q4_1.gguf) | i1-Q4_1 | 2.1 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q5_K_S.gguf) | i1-Q5_K_S | 2.3 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q5_K_M.gguf) | i1-Q5_K_M | 2.3 | | +| [GGUF](https://huggingface.co/mradermacher/KarantaOCR-i1-GGUF/resolve/main/KarantaOCR.i1-Q6_K.gguf) | i1-Q6_K | 2.6 | practically like static Q6_K | + +Here is a handy graph by ikawrakow comparing some lower-quality quant +types (lower is better): + +![image.png](https://www.nethype.de/huggingface_embed/quantpplgraph.png) + +And here are Artefact2's thoughts on the matter: +https://gist.github.com/Artefact2/b5f810600771265fc1e39442288e8ec9 + +## FAQ / Model Request + +See https://huggingface.co/mradermacher/model_requests for some answers to +questions you might have and/or if you want some other model quantized. + +## Thanks + +I thank my company, [nethype GmbH](https://www.nethype.de/), for letting +me use its servers and providing upgrades to my workstation to enable +this work in my free time. Additional thanks to [@nicoboss](https://huggingface.co/nicoboss) for giving me access to his private supercomputer, enabling me to provide many more imatrix quants, at much higher quality, than I would otherwise be able to. + +