mikunyan 3.9.6 → 3.9.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +103 -76
- data/Rakefile +14 -6
- data/exe/mikunyan-image +71 -70
- data/exe/mikunyan-json +46 -65
- data/ext/decoders/crunch/crn_decomp.h +3826 -0
- data/ext/decoders/crunch/crn_defs.h +286 -0
- data/ext/decoders/crunch/crnlib.h +642 -0
- data/ext/decoders/crunch/dds_defs.h +149 -0
- data/ext/decoders/crunch/extconf.rb +9 -0
- data/ext/decoders/crunch/main.cpp +174 -0
- data/ext/decoders/native/astc.c +751 -358
- data/ext/decoders/native/astc.h +1 -1
- data/ext/decoders/native/color.h +87 -0
- data/ext/decoders/native/dxtc.c +44 -71
- data/ext/decoders/native/dxtc.h +2 -2
- data/ext/decoders/native/endianness.h +180 -0
- data/ext/decoders/native/etc.c +328 -156
- data/ext/decoders/native/etc.h +8 -4
- data/ext/decoders/native/extconf.rb +1 -1
- data/ext/decoders/native/fp16.h +36 -0
- data/ext/decoders/native/fp16/bitcasts.h +76 -0
- data/ext/decoders/native/fp16/fp16.h +451 -0
- data/ext/decoders/native/main.c +332 -80
- data/ext/decoders/native/pvrtc.c +258 -0
- data/ext/decoders/native/pvrtc.h +29 -0
- data/ext/decoders/native/rgb.c +96 -20
- data/ext/decoders/native/rgb.h +7 -1
- data/lib/mikunyan.rb +3 -7
- data/lib/mikunyan/asset.rb +286 -313
- data/lib/mikunyan/asset_bundle.rb +139 -93
- data/lib/mikunyan/base_object.rb +34 -0
- data/lib/mikunyan/binary_reader.rb +135 -147
- data/lib/mikunyan/constants.rb +506 -340
- data/lib/mikunyan/decoders.rb +7 -3
- data/lib/mikunyan/decoders/image_decoder.rb +499 -462
- data/lib/mikunyan/object_value.rb +96 -79
- data/lib/mikunyan/type_tree.rb +143 -74
- data/lib/mikunyan/types/text_asset.rb +19 -0
- data/lib/mikunyan/types/texture2d.rb +33 -0
- data/lib/mikunyan/typetrees/1/137ce611c2e1d71982d2c84bce12d0d6.json +1 -0
- data/lib/mikunyan/typetrees/1/86e34eb8ee7642b089fb98c9d81dd9b0.json +1 -0
- data/lib/mikunyan/typetrees/1/a372646834bcaf26eab1d21b29e39553.json +1 -0
- data/lib/mikunyan/typetrees/104/00ad972a9b8de1baeacb62e297cbb968.json +1 -0
- data/lib/mikunyan/typetrees/104/30a4b95a67419124ad203faff026115f.json +1 -0
- data/lib/mikunyan/typetrees/109/486ba4e15dbd6aea8ac1a064305889c8.json +1 -0
- data/lib/mikunyan/typetrees/111/9eabac6ec66ffe818e008883728fcc1b.json +1 -0
- data/lib/mikunyan/typetrees/111/cc8f6e05143e049494c7eac0553f3883.json +1 -0
- data/lib/mikunyan/typetrees/115/2da9c96f9efc8b31a480d5b8858755f3.json +1 -0
- data/lib/mikunyan/typetrees/115/f46e8e30ecc293493f18ab27134210ee.json +1 -0
- data/lib/mikunyan/typetrees/121/ec82ba41da8a4a1621af9908b6786836.json +1 -0
- data/lib/mikunyan/typetrees/123/852794becbcf95f66992da2b96a69704.json +1 -0
- data/lib/mikunyan/typetrees/124/e0da148901d81b94249c67d75de59cc6.json +1 -0
- data/lib/mikunyan/typetrees/128/6a15532222689268bc8a148f4e84e7ab.json +1 -0
- data/lib/mikunyan/typetrees/128/9a83846bdc10f24de3183b3d1b510d5c.json +1 -0
- data/lib/mikunyan/typetrees/128/b14bcb0865632d1b2d6e215a000e4c0f.json +1 -0
- data/lib/mikunyan/typetrees/135/8c86f4ac6b7f47c045560d4383aadc8d.json +1 -0
- data/lib/mikunyan/typetrees/136/fbf6b031c32e461ee61be429e5fee7eb.json +1 -0
- data/lib/mikunyan/typetrees/137/96a47566b4e135078f690a4a69935d58.json +1 -0
- data/lib/mikunyan/typetrees/137/b1b907f989fddc2c56485955b540ff3e.json +1 -0
- data/lib/mikunyan/typetrees/137/b78821b6aeb5b79c8961728a9f068024.json +1 -0
- data/lib/mikunyan/typetrees/137/ecc1595a8954f445d7681cf02ea158c2.json +1 -0
- data/lib/mikunyan/typetrees/142/97da5f4688e45a57c8b42d4f42497297.json +1 -0
- data/lib/mikunyan/typetrees/142/f284abb6f2df17ebedae2b6b50436810.json +1 -0
- data/lib/mikunyan/typetrees/150/74d387e7f1b0ef0e146e96940005546f.json +1 -0
- data/lib/mikunyan/typetrees/150/857195b5935cf8fb7c0b98cba9717eac.json +1 -0
- data/lib/mikunyan/typetrees/150/f123b055a61dfa7dc679d78cdaecd383.json +1 -0
- data/lib/mikunyan/typetrees/157/10355709bc95355f57466913ac850d0b.json +1 -0
- data/lib/mikunyan/typetrees/157/69b01db128625aa95f1f92fb890ff045.json +1 -0
- data/lib/mikunyan/typetrees/157/b6ac05d288ffb84268e85f2738366aa7.json +1 -0
- data/lib/mikunyan/typetrees/198/4dbfaa1def6adb569b550804b19b4305.json +1 -0
- data/lib/mikunyan/typetrees/198/879cd82f1c9caa2bb7914c6871319fc0.json +1 -0
- data/lib/mikunyan/typetrees/198/d5d86f79c1252a3e0a705f20245b62b8.json +1 -0
- data/lib/mikunyan/typetrees/198/fa4023d185313a79ec5ee562b614c409.json +1 -0
- data/lib/mikunyan/typetrees/199/1bd80d4f81d414c0d14b0515fd8cd9e5.json +1 -0
- data/lib/mikunyan/typetrees/199/42f950f8898f13af3f02c7244e897db0.json +1 -0
- data/lib/mikunyan/typetrees/199/c96a64061d3e391b7f3309bd4a644969.json +1 -0
- data/lib/mikunyan/typetrees/199/daea1bb1bba6613afb2cb001ca8fa0d4.json +1 -0
- data/lib/mikunyan/typetrees/20/073e485bdb4950dba97985230fc515dd.json +1 -0
- data/lib/mikunyan/typetrees/20/46fda2d131e65f9426462feecebc25c4.json +1 -0
- data/lib/mikunyan/typetrees/20/961be27d12d60b1b3421191d5256a876.json +1 -0
- data/lib/mikunyan/typetrees/200/26165a24a953362edb6a7078f6536c4b.json +1 -0
- data/lib/mikunyan/typetrees/21/225d280603d6b901bb660283ef2dc6c1.json +1 -0
- data/lib/mikunyan/typetrees/21/66405447c6973a81e978410c391172fe.json +1 -0
- data/lib/mikunyan/typetrees/21/d871346d990bbc294d02f4c366bf1b6d.json +1 -0
- data/lib/mikunyan/typetrees/210/1440a9413c35197e76f1f47223d5eab7.json +1 -0
- data/lib/mikunyan/typetrees/212/5fc4a64809a91d647f0b1220ca09f136.json +1 -0
- data/lib/mikunyan/typetrees/212/84c6ac46ef89030991cbbb3fd21d2889.json +1 -0
- data/lib/mikunyan/typetrees/212/91ffea0726900cb751e36f83816df13e.json +1 -0
- data/lib/mikunyan/typetrees/212/a98cccc4ebd5d08ae472761d4f6dc8b2.json +1 -0
- data/lib/mikunyan/typetrees/213/2f0ee1e689a979766d022d88d6007338.json +1 -0
- data/lib/mikunyan/typetrees/213/314dede0713638b3fad1628f6329dc62.json +1 -0
- data/lib/mikunyan/typetrees/213/76ce55d4dbaf38f5c674ea9f0a344951.json +1 -0
- data/lib/mikunyan/typetrees/213/e7c5c01b0369574e9346ce846e1e8e63.json +1 -0
- data/lib/mikunyan/typetrees/222/5750e5904e20e1e9b768424d8704a10d.json +1 -0
- data/lib/mikunyan/typetrees/222/9e0ab8d396f3249a3958dd930f81f61b.json +1 -0
- data/lib/mikunyan/typetrees/223/d8082d7a3661a3f9ca00a93a61606585.json +1 -0
- data/lib/mikunyan/typetrees/224/7e050781d08ca9d10bc74beb7e91c3b5.json +1 -0
- data/lib/mikunyan/typetrees/224/eb5e2816cebf56985ba81ee03349f325.json +1 -0
- data/lib/mikunyan/typetrees/225/5bc42b93159267aabba724a6a7923603.json +1 -0
- data/lib/mikunyan/typetrees/23/2838e2afe8d6a61d270093d4d54eb362.json +1 -0
- data/lib/mikunyan/typetrees/23/af863b6969b9b82be9450f0574339f65.json +1 -0
- data/lib/mikunyan/typetrees/23/c92361750edbfbcada6f2537e8db21ad.json +1 -0
- data/lib/mikunyan/typetrees/23/d618295bd5f15441b5b80b1f57e92d09.json +1 -0
- data/lib/mikunyan/typetrees/241/b55bcb08834f91481d00ecf2baf6b298.json +1 -0
- data/lib/mikunyan/typetrees/243/d68e4f940c79b84a66a3020175a2fc76.json +1 -0
- data/lib/mikunyan/typetrees/245/48b8a458c641bcd5191d251713454097.json +1 -0
- data/lib/mikunyan/typetrees/258/2d2b1d63eb2a68ed94bbf7f50fc21d7b.json +1 -0
- data/lib/mikunyan/typetrees/258/b35bf02952f2946208ff6b4deca3a6a9.json +1 -0
- data/lib/mikunyan/typetrees/28/01053c13f5acc24d9236a5e6e7e1410d.json +1 -0
- data/lib/mikunyan/typetrees/28/11eb3417a626b4b8276ad6fe42d3dbd3.json +1 -0
- data/lib/mikunyan/typetrees/28/1e87d82d4fd058509a3c7866db0e7356.json +1 -0
- data/lib/mikunyan/typetrees/28/7230c9eb36a0c72a7187ad952551e1e5.json +1 -0
- data/lib/mikunyan/typetrees/28/ee6c40817d2951929cdb4f5a60874f5d.json +1 -0
- data/lib/mikunyan/typetrees/320/941d49d79db52b4d31946d5082b518d4.json +1 -0
- data/lib/mikunyan/typetrees/33/9d1630b1d7e3bc24abe46e5860a2a179.json +1 -0
- data/lib/mikunyan/typetrees/331/147b112c44d8942fa03fd5b2db85b74d.json +1 -0
- data/lib/mikunyan/typetrees/4/761ca81f78491542badc37f810ab3455.json +1 -0
- data/lib/mikunyan/typetrees/4/937a6b5c5f5b313185d252e38d145b17.json +1 -0
- data/lib/mikunyan/typetrees/43/3366c840a288282b3b12f2f3e038c473.json +1 -0
- data/lib/mikunyan/typetrees/43/434b934f757d042e20f52d8c2ae20843.json +1 -0
- data/lib/mikunyan/typetrees/43/6d698cb82bd752d1b83575c6e59915a8.json +1 -0
- data/lib/mikunyan/typetrees/43/97ec0712102a3ea3f1cf8c0a4e47c070.json +1 -0
- data/lib/mikunyan/typetrees/48/266d53113fa30d2b858f2768f92eaa14.json +1 -0
- data/lib/mikunyan/typetrees/48/8db760073e1392061e4a36995f0735af.json +1 -0
- data/lib/mikunyan/typetrees/48/a70f7abc6586fb35b3a0641aa81e9375.json +1 -0
- data/lib/mikunyan/typetrees/49/486ba4e15dbd6aea8ac1a064305889c8.json +1 -0
- data/lib/mikunyan/typetrees/49/936739f45f26fd8b81a4ea70f2c8cad4.json +1 -0
- data/lib/mikunyan/typetrees/64/5b7f3f798459ea619e4927106fd1fe4b.json +1 -0
- data/lib/mikunyan/typetrees/64/a4f61324ce0d2adbb58fa519e9537250.json +1 -0
- data/lib/mikunyan/typetrees/65/439e66a89c7fdef6f0927c9256c0773a.json +1 -0
- data/lib/mikunyan/typetrees/687078895/cf2fdd6d6ec48e8832b545670b813675.json +1 -0
- data/lib/mikunyan/typetrees/74/1ece1117b1e6a8b84516b3eb77051cc3.json +1 -0
- data/lib/mikunyan/typetrees/74/81e28d3a4102fabc98ac701e6a192ad4.json +1 -0
- data/lib/mikunyan/typetrees/74/c184743520186f546000de20f4d19736.json +1 -0
- data/lib/mikunyan/typetrees/74/f665ce86182d9caf3ead9030330dcdd1.json +1 -0
- data/lib/mikunyan/typetrees/81/305e4aeacbb64b15862510dad47502cb.json +1 -0
- data/lib/mikunyan/typetrees/82/615d22f1dbb7206b1870a49854e33c55.json +1 -0
- data/lib/mikunyan/typetrees/83/b23449465e3763dd19335a88ea09ae99.json +1 -0
- data/lib/mikunyan/typetrees/89/1ef8dc1e91e0cd01bd07036e6665ea40.json +1 -0
- data/lib/mikunyan/typetrees/89/8ae46eedf9c00edaad35d0d09290bc8b.json +1 -0
- data/lib/mikunyan/typetrees/89/f92d618c5266ea3a8ca770b6eca728c8.json +1 -0
- data/lib/mikunyan/typetrees/90/32844caee83b124ec87852294d39b8b6.json +1 -0
- data/lib/mikunyan/typetrees/90/b6bbd0e88d1feb636d89bd766ea5934f.json +1 -0
- data/lib/mikunyan/typetrees/91/01ccfe05c6fbc7ff03dcf8afa8213ff5.json +1 -0
- data/lib/mikunyan/typetrees/91/12873460c642bda0bf9e3d57283cd673.json +1 -0
- data/lib/mikunyan/typetrees/91/fc82e38aa4ec91a42bead3793b8ad3a8.json +1 -0
- data/lib/mikunyan/typetrees/92/e0da148901d81b94249c67d75de59cc6.json +1 -0
- data/lib/mikunyan/typetrees/95/75f8b558401cf01ba36d0e612cdbd8fa.json +1 -0
- data/lib/mikunyan/typetrees/95/c4c62993971a4c233bae8f8954b4509c.json +1 -0
- data/lib/mikunyan/typetrees/96/178a7faebee648639373e3fc701c4d42.json +1 -0
- data/lib/mikunyan/typetrees/96/a11f8eb485ea905be1a9eb49e42085e7.json +1 -0
- data/lib/mikunyan/typetrees/96/fb00968925d0a9c61e2630478746ac93.json +1 -0
- data/lib/mikunyan/version.rb +4 -2
- data/mikunyan.gemspec +22 -17
- metadata +194 -948
- data/lib/mikunyan/typetrees/0005ee889bd7f6b79a25da117f739c52.dat +0 -0
- data/lib/mikunyan/typetrees/005cae4626b69aa0d1bd6fd3677642d0.dat +0 -0
- data/lib/mikunyan/typetrees/0065ac6da4da61da4e46189f1b77b002.dat +0 -0
- data/lib/mikunyan/typetrees/00ad972a9b8de1baeacb62e297cbb968.dat +0 -0
- data/lib/mikunyan/typetrees/00b2dd52d07280ff931ca2ce840c6c5f.dat +0 -0
- data/lib/mikunyan/typetrees/00f3fced245b297f9ac50a0d4903fb6a.dat +0 -0
- data/lib/mikunyan/typetrees/01053c13f5acc24d9236a5e6e7e1410d.dat +0 -0
- data/lib/mikunyan/typetrees/01266d578502b6b76488f3bd3d604eef.dat +0 -0
- data/lib/mikunyan/typetrees/016a05ed91534852640fa073275aca15.dat +0 -0
- data/lib/mikunyan/typetrees/01ccfe05c6fbc7ff03dcf8afa8213ff5.dat +0 -0
- data/lib/mikunyan/typetrees/02121256d773b25c5090287b274c2b00.dat +0 -0
- data/lib/mikunyan/typetrees/02151504e19732024609e7cca6c0fc96.dat +0 -0
- data/lib/mikunyan/typetrees/026979ad7a2cb1623d33ebc2dcb307bc.dat +0 -0
- data/lib/mikunyan/typetrees/02d4f5f7486a5229b8f5dd49f538d23b.dat +0 -0
- data/lib/mikunyan/typetrees/02ff34fcfecd5a7519f8e4eccfcefc17.dat +0 -0
- data/lib/mikunyan/typetrees/037ba63dcd92d264f6321c61b115c80a.dat +0 -0
- data/lib/mikunyan/typetrees/0384181f7887c2df26d7de81361d3c24.dat +0 -0
- data/lib/mikunyan/typetrees/03882ede131aa51c0b2120a860363c45.dat +0 -0
- data/lib/mikunyan/typetrees/045e54722afb3e5b99ffc842b54ccd04.dat +0 -0
- data/lib/mikunyan/typetrees/046bff2bbcefd18a3c0b4cc1d32a342b.dat +0 -0
- data/lib/mikunyan/typetrees/049f614729255b717181bfd2310bfe39.dat +0 -0
- data/lib/mikunyan/typetrees/04ad34c7fb5894db97cb831635ea9464.dat +0 -0
- data/lib/mikunyan/typetrees/05377b3b7453e5f7a0a753ea7534b4b6.dat +0 -0
- data/lib/mikunyan/typetrees/054d6dd0949fc88be1ece98a89f48175.dat +0 -0
- data/lib/mikunyan/typetrees/06086ac852a0fdd488bb63eeb1a3f7be.dat +0 -0
- data/lib/mikunyan/typetrees/06eb94418931331dd508acc90ef39a0d.dat +0 -0
- data/lib/mikunyan/typetrees/07188f5574f3168b6584882cdc1906e4.dat +0 -0
- data/lib/mikunyan/typetrees/073ba87290db010f9d392b6926f26ffa.dat +0 -0
- data/lib/mikunyan/typetrees/0767fe19945b90006a374575a30a318d.dat +0 -0
- data/lib/mikunyan/typetrees/07b289e80f1d75c9c03ee649281af143.dat +0 -0
- data/lib/mikunyan/typetrees/07e972f95515e2dab33d93f8e59cde4d.dat +0 -0
- data/lib/mikunyan/typetrees/0816a72ba3f00b1bb13b23f8799619af.dat +0 -0
- data/lib/mikunyan/typetrees/0827148b052dd69232c20460ddde3d1a.dat +0 -0
- data/lib/mikunyan/typetrees/0857307b3a8cb783c311d8ff42959462.dat +0 -0
- data/lib/mikunyan/typetrees/086efb68ee41abe4e98e1ae93ae96290.dat +0 -0
- data/lib/mikunyan/typetrees/087e32a39c822978a1c5e410162b381b.dat +0 -0
- data/lib/mikunyan/typetrees/08a0f671ed575df2b956a9523f3389b4.dat +0 -0
- data/lib/mikunyan/typetrees/08b842bfb6779a99abd9772f354c4592.dat +0 -0
- data/lib/mikunyan/typetrees/09218ec64a12208744dfa28d3de424d5.dat +0 -0
- data/lib/mikunyan/typetrees/09403e79c0029e5f17528d3321a9c65a.dat +0 -0
- data/lib/mikunyan/typetrees/09a818b7453024f2d6eda315b98175bf.dat +0 -0
- data/lib/mikunyan/typetrees/0a5826fcb70aafc9a26f5e47e814f052.dat +0 -0
- data/lib/mikunyan/typetrees/0b6483cb76bd6cb09661f1999a14d7c3.dat +0 -0
- data/lib/mikunyan/typetrees/0b8eb6c7354ef2c2627f1911a201b5b2.dat +0 -0
- data/lib/mikunyan/typetrees/0be713b9a525f321879cf7985e5cb6a0.dat +0 -0
- data/lib/mikunyan/typetrees/0d1862c92c0019a9db5f10f5385be1ca.dat +0 -0
- data/lib/mikunyan/typetrees/0d37e988cc66cbb6f84a09d92fcc2fb1.dat +0 -0
- data/lib/mikunyan/typetrees/0d71112c6b0ce418bc75623a52f92e5c.dat +0 -0
- data/lib/mikunyan/typetrees/0dad589c25ae993410daa4813b24a978.dat +0 -0
- data/lib/mikunyan/typetrees/0e7a017b0eef40ee05c8e3355e289d48.dat +0 -0
- data/lib/mikunyan/typetrees/0e8c6e4f803514bccb43b7d8901ed3f3.dat +0 -0
- data/lib/mikunyan/typetrees/0eb12c7055a972aec53d53a646cc4fec.dat +0 -0
- data/lib/mikunyan/typetrees/0f7da8d76d164df704e661b2f926d0ba.dat +0 -0
- data/lib/mikunyan/typetrees/0fdbf6896f263df755a7392766cd7bd5.dat +0 -0
- data/lib/mikunyan/typetrees/10355709bc95355f57466913ac850d0b.dat +0 -0
- data/lib/mikunyan/typetrees/1047dc8a46bd55bbc47ee36971fbc899.dat +0 -0
- data/lib/mikunyan/typetrees/1101c105388a97c11253c9138a48b054.dat +0 -0
- data/lib/mikunyan/typetrees/116f6e5f5e2f9936f14b3e7afdaeebe0.dat +0 -0
- data/lib/mikunyan/typetrees/119a33484a175efb17550e468dab2c29.dat +0 -0
- data/lib/mikunyan/typetrees/11eb3417a626b4b8276ad6fe42d3dbd3.dat +0 -0
- data/lib/mikunyan/typetrees/1209f97dc24e29870a0b4d4c10691c51.dat +0 -0
- data/lib/mikunyan/typetrees/12873460c642bda0bf9e3d57283cd673.dat +0 -0
- data/lib/mikunyan/typetrees/12967e00d88a19565085202f8f7e8aae.dat +0 -0
- data/lib/mikunyan/typetrees/12c502cde72c7fa23c4f00e01ba92852.dat +0 -0
- data/lib/mikunyan/typetrees/136d01abbc91c99a320d66ce5fc6f77f.dat +0 -0
- data/lib/mikunyan/typetrees/137ce611c2e1d71982d2c84bce12d0d6.dat +0 -0
- data/lib/mikunyan/typetrees/13ad0b2f92f4248f339c2652b3f879d6.dat +0 -0
- data/lib/mikunyan/typetrees/13f0890d0c86a09d0cf0942446b5e6d3.dat +0 -0
- data/lib/mikunyan/typetrees/13f9a259302b7e528447dbac68c18621.dat +0 -0
- data/lib/mikunyan/typetrees/143bcbfec35489e37c72eaff4a352ac0.dat +0 -0
- data/lib/mikunyan/typetrees/144607134da52f2b16c382198714d681.dat +0 -0
- data/lib/mikunyan/typetrees/147e16de37e14923a45314e271221c54.dat +0 -0
- data/lib/mikunyan/typetrees/14ea9b41501766e6cda33f69772f1b67.dat +0 -0
- data/lib/mikunyan/typetrees/1547ef62e8cc49596b74b4259299ab7d.dat +0 -0
- data/lib/mikunyan/typetrees/167715f8020989bf87dc860ded480c9f.dat +0 -0
- data/lib/mikunyan/typetrees/168b7ccfe32e20d397ad9cc1ee64e88d.dat +0 -0
- data/lib/mikunyan/typetrees/16998ea62da750122066f949ab50157e.dat +0 -0
- data/lib/mikunyan/typetrees/16b1122494c0e77b196c413ac29842c6.dat +0 -0
- data/lib/mikunyan/typetrees/16e5b1b7ee14464356e9664219da0c82.dat +0 -0
- data/lib/mikunyan/typetrees/1747b0850e27d5e5afe2b3c5588e7181.dat +0 -0
- data/lib/mikunyan/typetrees/1762b46dd7a05651e197ae50eb8dc6ea.dat +0 -0
- data/lib/mikunyan/typetrees/17c3ea4c4fea71108c10fd27f2f36db1.dat +0 -0
- data/lib/mikunyan/typetrees/18372dbbd17b67380e4a62c927380a50.dat +0 -0
- data/lib/mikunyan/typetrees/1893d8e186073d53da657b023dc8bd12.dat +0 -0
- data/lib/mikunyan/typetrees/1980e6a59157d8bdee2bcaa3b7bcab95.dat +0 -0
- data/lib/mikunyan/typetrees/19d012ac862d35ae708b3e9819c144a6.dat +0 -0
- data/lib/mikunyan/typetrees/1a423ac0d72444d8b1e5648eea27de62.dat +0 -0
- data/lib/mikunyan/typetrees/1a443e14c645af0d1c787c747df78c79.dat +0 -0
- data/lib/mikunyan/typetrees/1a4924a6ba27c4cd346c378e252bbcd9.dat +0 -0
- data/lib/mikunyan/typetrees/1a8aa22f22aad282eb5847acc32c48c4.dat +0 -0
- data/lib/mikunyan/typetrees/1b15f8914d09a0f91015c60200600ad1.dat +0 -0
- data/lib/mikunyan/typetrees/1b81c9a9d553d513ad18b473cac9f3e5.dat +0 -0
- data/lib/mikunyan/typetrees/1c28236b6f2e0ac5cb3e915ba08809aa.dat +0 -0
- data/lib/mikunyan/typetrees/1c9aca6db12271b86e4759fcbd47ef4f.dat +0 -0
- data/lib/mikunyan/typetrees/1d188dac655495743ede8bf50e900348.dat +0 -0
- data/lib/mikunyan/typetrees/1d3212ed4ba9330b8cc6a4aa196a2b2f.dat +0 -0
- data/lib/mikunyan/typetrees/1d5aedbe4e95c8322fb5f141098c6e91.dat +0 -0
- data/lib/mikunyan/typetrees/1dd6a73cef747aa451d1eb4bc7ab6ba9.dat +0 -0
- data/lib/mikunyan/typetrees/1df2470081a677848028328c36afe347.dat +0 -0
- data/lib/mikunyan/typetrees/1e347d6a49dd26eca64146d8d1629c16.dat +0 -0
- data/lib/mikunyan/typetrees/1e831f2ccbb8f0cceabd75e4ae614edd.dat +0 -0
- data/lib/mikunyan/typetrees/1e8486720809f1f1134ad46a75855191.dat +0 -0
- data/lib/mikunyan/typetrees/1e87d82d4fd058509a3c7866db0e7356.dat +0 -0
- data/lib/mikunyan/typetrees/1eaa927fe597a5c984688ede0d7e0c46.dat +0 -0
- data/lib/mikunyan/typetrees/1ebcb3bc9f2a38130d9e3274f3c00201.dat +0 -0
- data/lib/mikunyan/typetrees/1ef8dc1e91e0cd01bd07036e6665ea40.dat +0 -0
- data/lib/mikunyan/typetrees/1f1262cc26714f10d5f84e0f8eb03864.dat +0 -0
- data/lib/mikunyan/typetrees/1f168f9bb657a2e84643dbc260a659e5.dat +0 -0
- data/lib/mikunyan/typetrees/1f61f675d1dd7911aa25c13d26476576.dat +0 -0
- data/lib/mikunyan/typetrees/1f6570e305da0841cf9545e1911c898b.dat +0 -0
- data/lib/mikunyan/typetrees/1f77b228205c78ee0df7e2b634863853.dat +0 -0
- data/lib/mikunyan/typetrees/1f994725ca628a20bb0526cedf9cb44b.dat +0 -0
- data/lib/mikunyan/typetrees/2030e4be48f1e6444ee7c802aa6ee04e.dat +0 -0
- data/lib/mikunyan/typetrees/204e3cd3604f3794a9ebc57816470b8b.dat +0 -0
- data/lib/mikunyan/typetrees/214291cadd50789a88176745966ff855.dat +0 -0
- data/lib/mikunyan/typetrees/214cccc3a5487f6e7d0e4dd13d2c7d9f.dat +0 -0
- data/lib/mikunyan/typetrees/2173d638d2217fa07eb74c6944dd831b.dat +0 -0
- data/lib/mikunyan/typetrees/21d00f71a60e4a3591c1c3d3dde7880f.dat +0 -0
- data/lib/mikunyan/typetrees/21d6ee4b99f9cbbf255d69f64c9d1459.dat +0 -0
- data/lib/mikunyan/typetrees/223200cd03b4c76caeaf422122a2b091.dat +0 -0
- data/lib/mikunyan/typetrees/224c10c05e99a377d1e41a2fa1c1dda1.dat +0 -0
- data/lib/mikunyan/typetrees/225d280603d6b901bb660283ef2dc6c1.dat +0 -0
- data/lib/mikunyan/typetrees/22a1ad8b8f62a891ca211417fe8d161b.dat +0 -0
- data/lib/mikunyan/typetrees/22a5fc27bdf2aeb77176acbab394d4f7.dat +0 -0
- data/lib/mikunyan/typetrees/22c6bb27058872e03ec09f60e1f71f77.dat +0 -0
- data/lib/mikunyan/typetrees/22de8a8e6131edd3951ff8d815999077.dat +0 -0
- data/lib/mikunyan/typetrees/22f105beba59b8a348fd1db5e1101ee6.dat +0 -0
- data/lib/mikunyan/typetrees/235608d8b8db7ffe00ee926ad1e4fcfb.dat +0 -0
- data/lib/mikunyan/typetrees/239f5922bb05f812c78d41a84451927a.dat +0 -0
- data/lib/mikunyan/typetrees/23aa0d39991cfaa3b448dc52e1b4e2f1.dat +0 -0
- data/lib/mikunyan/typetrees/23f7a8828f26b85351a2c73b9d042b58.dat +0 -0
- data/lib/mikunyan/typetrees/2409a93f8e4d219a23ac09a3771cd85e.dat +0 -0
- data/lib/mikunyan/typetrees/2413ff22e97a320f3db90e252bed5064.dat +0 -0
- data/lib/mikunyan/typetrees/2490347089301e3db2eac4055fd8f87d.dat +0 -0
- data/lib/mikunyan/typetrees/24e89a7207828509d5c5875a93b2106e.dat +0 -0
- data/lib/mikunyan/typetrees/252b1dbbc4b7cfed2594e04d6ff33e9a.dat +0 -0
- data/lib/mikunyan/typetrees/255352c3db1172a6a9c5c2605486d937.dat +0 -0
- data/lib/mikunyan/typetrees/26165a24a953362edb6a7078f6536c4b.dat +0 -0
- data/lib/mikunyan/typetrees/266d53113fa30d2b858f2768f92eaa14.dat +0 -0
- data/lib/mikunyan/typetrees/26b86854c33bca2efc9692ce14f5966d.dat +0 -0
- data/lib/mikunyan/typetrees/26edfe99eae8bb02d8148494ac056b19.dat +0 -0
- data/lib/mikunyan/typetrees/2706c8356160cd6aaa396532b3ce39ab.dat +0 -0
- data/lib/mikunyan/typetrees/270ad6077395c13a4cfafac5671a5620.dat +0 -0
- data/lib/mikunyan/typetrees/276165a162f9cbfeb3214464b7b8e7af.dat +0 -0
- data/lib/mikunyan/typetrees/27653c16987c2f00f7e701860db978b9.dat +0 -0
- data/lib/mikunyan/typetrees/27e91f156f1a8d11d4bcd66d3d6d52e8.dat +0 -0
- data/lib/mikunyan/typetrees/28460a98ae14a912f5c0393c9ebc21ba.dat +0 -0
- data/lib/mikunyan/typetrees/285301d63833986d582fb1893479d7f0.dat +0 -0
- data/lib/mikunyan/typetrees/2864d30fb7a07ba8c735165d90ed5ff2.dat +0 -0
- data/lib/mikunyan/typetrees/286928b2e061e5b81ab8f7095965a508.dat +0 -0
- data/lib/mikunyan/typetrees/2875b25dc4d545986bf5cb670c3769a0.dat +0 -0
- data/lib/mikunyan/typetrees/2892f2afcbbee74930c24875cff022b3.dat +0 -0
- data/lib/mikunyan/typetrees/28d4502541c70ba42b2303f87d8aea30.dat +0 -0
- data/lib/mikunyan/typetrees/28e15ac090050b5620a2b6b376f6be3d.dat +0 -0
- data/lib/mikunyan/typetrees/28fee9b8bbe71485d2aecff29c338906.dat +0 -0
- data/lib/mikunyan/typetrees/29418211d65c19bd8bd25a6d92cc89e1.dat +0 -0
- data/lib/mikunyan/typetrees/299723c380e0ae74b7740e291f44b5dd.dat +0 -0
- data/lib/mikunyan/typetrees/29a94a8e52beb2ddf2294ee984774759.dat +0 -0
- data/lib/mikunyan/typetrees/29e4301913d608e0be4aa608708bcf04.dat +0 -0
- data/lib/mikunyan/typetrees/2a819caa7d1cb8b5a354b3d2cdc21cf7.dat +0 -0
- data/lib/mikunyan/typetrees/2aa85eb9fb12fbc18406ad844d0dfce4.dat +0 -0
- data/lib/mikunyan/typetrees/2ad38f20aa997894b440f55bb2faa772.dat +0 -0
- data/lib/mikunyan/typetrees/2aebfac28b12b8d6fbf0d97563035a17.dat +0 -0
- data/lib/mikunyan/typetrees/2b9a59c22c5788fb05c2751753769e73.dat +0 -0
- data/lib/mikunyan/typetrees/2bf1eebd069f0d939216d45cc299be85.dat +0 -0
- data/lib/mikunyan/typetrees/2c303ef7be71806aaffa0121527d7fea.dat +0 -0
- data/lib/mikunyan/typetrees/2d0f68bd23c44c2815f9d5376ace084f.dat +0 -0
- data/lib/mikunyan/typetrees/2d2b1d63eb2a68ed94bbf7f50fc21d7b.dat +0 -0
- data/lib/mikunyan/typetrees/2d33f228d257f7b0b88c98914786292c.dat +0 -0
- data/lib/mikunyan/typetrees/2da9c96f9efc8b31a480d5b8858755f3.dat +0 -0
- data/lib/mikunyan/typetrees/2dbcc357c62060bea7491f02a0a3d0fa.dat +0 -0
- data/lib/mikunyan/typetrees/2dd9afa6072e9ccae001437684a2eae5.dat +0 -0
- data/lib/mikunyan/typetrees/2def4fa21af26d3102178151c2b47141.dat +0 -0
- data/lib/mikunyan/typetrees/2ef918365da75913b10d30a85c9a815e.dat +0 -0
- data/lib/mikunyan/typetrees/2f02075ebca922e67afa3ddddc951609.dat +0 -0
- data/lib/mikunyan/typetrees/2f0ee1e689a979766d022d88d6007338.dat +0 -0
- data/lib/mikunyan/typetrees/2f25cddba4c1ccf16383b175860f1817.dat +0 -0
- data/lib/mikunyan/typetrees/2f3af372d1cb4f523d9b630c7d796e66.dat +0 -0
- data/lib/mikunyan/typetrees/2f903e13950e7204e5adb9d0359bd5b2.dat +0 -0
- data/lib/mikunyan/typetrees/304725e57bc52f76ceaa856632058097.dat +0 -0
- data/lib/mikunyan/typetrees/305e4aeacbb64b15862510dad47502cb.dat +0 -0
- data/lib/mikunyan/typetrees/30667f06a99e7931816757b4b7fbce5c.dat +0 -0
- data/lib/mikunyan/typetrees/306f0c2739dc8ad54fb4a1a44d1a3880.dat +0 -0
- data/lib/mikunyan/typetrees/30a40cec9f8c45e9aeca61bb77e596ec.dat +0 -0
- data/lib/mikunyan/typetrees/30a60d48ac05138e74c99389277a6a1d.dat +0 -0
- data/lib/mikunyan/typetrees/30bd9b8cf9127e0899f5f5ddc0a7ef6b.dat +0 -0
- data/lib/mikunyan/typetrees/30e5283aee3520fef10b77ffad62c83d.dat +0 -0
- data/lib/mikunyan/typetrees/310b66fa6f7980b50a9afc5ae3de4be7.dat +0 -0
- data/lib/mikunyan/typetrees/313e0ef8529b6cf61e4628fea22c1248.dat +0 -0
- data/lib/mikunyan/typetrees/313f624e8093f279302b3b6525bbb83a.dat +0 -0
- data/lib/mikunyan/typetrees/31a3036cdbecf796277c319a4537c802.dat +0 -0
- data/lib/mikunyan/typetrees/32094882bae6171c02d75bd88c4d43e1.dat +0 -0
- data/lib/mikunyan/typetrees/3283853e944bcba5a34dbc0848eec183.dat +0 -0
- data/lib/mikunyan/typetrees/330078ad6b3dd7f2ddb7acc3e27016bd.dat +0 -0
- data/lib/mikunyan/typetrees/3383c534169866b1d8b813ef0c7efa0a.dat +0 -0
- data/lib/mikunyan/typetrees/3383de6791220633b8bf013ca6c7698c.dat +0 -0
- data/lib/mikunyan/typetrees/33c22162b5b5f467fe7a7006ec52a136.dat +0 -0
- data/lib/mikunyan/typetrees/34f82447344517eacb2e4f407ad31706.dat +0 -0
- data/lib/mikunyan/typetrees/35143c3dc21459692fdaf21d2e208b06.dat +0 -0
- data/lib/mikunyan/typetrees/3516f0737a1242d1296fb738f8e40f76.dat +0 -0
- data/lib/mikunyan/typetrees/351ec242900b73e5560978fbb0d0cf82.dat +0 -0
- data/lib/mikunyan/typetrees/351f9bb942a4da561dcc5fef0ef510fa.dat +0 -0
- data/lib/mikunyan/typetrees/35b5aac7e54392457593cab60408b045.dat +0 -0
- data/lib/mikunyan/typetrees/35f443f871a6e42f9927fa28f8624097.dat +0 -0
- data/lib/mikunyan/typetrees/35fe4dba66818845b49463deb48b4734.dat +0 -0
- data/lib/mikunyan/typetrees/3616ba8255b2e0b96f89f1d32a86917d.dat +0 -0
- data/lib/mikunyan/typetrees/36f7b2db46f99efbdbf3c762b0b382d1.dat +0 -0
- data/lib/mikunyan/typetrees/370b0f89c6f401663e2eb09de9796164.dat +0 -0
- data/lib/mikunyan/typetrees/3729a4fed3f20838308759acc8a3f2a4.dat +0 -0
- data/lib/mikunyan/typetrees/37efb94307307a222a4b44847853eb41.dat +0 -0
- data/lib/mikunyan/typetrees/38a0b7bcc276529c80d90d35e4d84b8b.dat +0 -0
- data/lib/mikunyan/typetrees/3a500d83b71456e038d03ae52811afd9.dat +0 -0
- data/lib/mikunyan/typetrees/3a6bcd3696897d807684f3618ad3703c.dat +0 -0
- data/lib/mikunyan/typetrees/3a7ca5d09a7c50a9a8fc4016c0d9eacf.dat +0 -0
- data/lib/mikunyan/typetrees/3acd9a6db557e2793568933508522dff.dat +0 -0
- data/lib/mikunyan/typetrees/3b0d63b530177b95b8456ba44dbbeb5b.dat +0 -0
- data/lib/mikunyan/typetrees/3b26cb0c7d7e87bb45886cb857409b54.dat +0 -0
- data/lib/mikunyan/typetrees/3b43dde4518e4846a3d21126d51cb10f.dat +0 -0
- data/lib/mikunyan/typetrees/3b8b6e6bb5334a23b9fdc673bf73adf7.dat +0 -0
- data/lib/mikunyan/typetrees/3b9086da85ee83d3b154eb2ea7fcba05.dat +0 -0
- data/lib/mikunyan/typetrees/3c11da6c3ab6191099ff9deeef7469ef.dat +0 -0
- data/lib/mikunyan/typetrees/3c22e0cc9d3429687479f46554eab311.dat +0 -0
- data/lib/mikunyan/typetrees/3c2ce35247b35fd2f612ba19e32d5f44.dat +0 -0
- data/lib/mikunyan/typetrees/3c6a89d0e033d366453210256ef1d7d3.dat +0 -0
- data/lib/mikunyan/typetrees/3c7741a17041c5316eee28e6894a1cbd.dat +0 -0
- data/lib/mikunyan/typetrees/3c87bdb0795e3e66f4b309308b847d3c.dat +0 -0
- data/lib/mikunyan/typetrees/3d0a9ade9f227dc11c8b499c261794e8.dat +0 -0
- data/lib/mikunyan/typetrees/3d0f69809d8a2f86ea31f70e7319a44a.dat +0 -0
- data/lib/mikunyan/typetrees/3d612124d62c9db4ff7642f6570decd6.dat +0 -0
- data/lib/mikunyan/typetrees/3d914550764c2274e8c62817ee10d65b.dat +0 -0
- data/lib/mikunyan/typetrees/3e10119f7d2d4d7e643a43d856c0dcfb.dat +0 -0
- data/lib/mikunyan/typetrees/3e26b7a0e24abd3fd61d61cf59b6c4de.dat +0 -0
- data/lib/mikunyan/typetrees/3eced59289a820b4fa3bd784dbcc21f5.dat +0 -0
- data/lib/mikunyan/typetrees/3ffd1baba4bd4f48922b8cbdef0e2a03.dat +0 -0
- data/lib/mikunyan/typetrees/3fffe3ab5176cce0865f5ff4f2fa427d.dat +0 -0
- data/lib/mikunyan/typetrees/406a3dc2b89329c85e3a9847abbe8fe5.dat +0 -0
- data/lib/mikunyan/typetrees/40da10691c0dcc34b5660762da133b32.dat +0 -0
- data/lib/mikunyan/typetrees/412c400c20dea4a9fc447f1a44404e68.dat +0 -0
- data/lib/mikunyan/typetrees/418787f0cbb25432ee54f9837940729a.dat +0 -0
- data/lib/mikunyan/typetrees/4197459266a6342554ae11d2361e03bd.dat +0 -0
- data/lib/mikunyan/typetrees/41c90ae9d2ff8f897261f8d5233c154e.dat +0 -0
- data/lib/mikunyan/typetrees/41cdd7329b57ba13590d9321a595218f.dat +0 -0
- data/lib/mikunyan/typetrees/41fae1321bd7ad1650d7cecc8b7738f4.dat +0 -0
- data/lib/mikunyan/typetrees/42cb37e0be59eee623e414924928a40b.dat +0 -0
- data/lib/mikunyan/typetrees/434b934f757d042e20f52d8c2ae20843.dat +0 -0
- data/lib/mikunyan/typetrees/43688f077be008681d7eb9c994a18319.dat +0 -0
- data/lib/mikunyan/typetrees/43796121850ca62303af099e74b78099.dat +0 -0
- data/lib/mikunyan/typetrees/439e66a89c7fdef6f0927c9256c0773a.dat +0 -0
- data/lib/mikunyan/typetrees/442339d34eb0fadbe32ec143c60178f9.dat +0 -0
- data/lib/mikunyan/typetrees/448f646b445110ec08e0fa261c60874b.dat +0 -0
- data/lib/mikunyan/typetrees/44e2e865d4b8ca1e2ff1a674fe72520c.dat +0 -0
- data/lib/mikunyan/typetrees/45346f514b26cc508276ebd72faa6efc.dat +0 -0
- data/lib/mikunyan/typetrees/45b09dc0aed1f613c87ca0244816df75.dat +0 -0
- data/lib/mikunyan/typetrees/46236a8c8f841316135a0708a271d46b.dat +0 -0
- data/lib/mikunyan/typetrees/46c7e33b8dcc4199930c0b6e936c806d.dat +0 -0
- data/lib/mikunyan/typetrees/46cbdd6fc1deba025fb300d3ab19d3f1.dat +0 -0
- data/lib/mikunyan/typetrees/46e5682e0f5a4297bf46ffb5fe276535.dat +0 -0
- data/lib/mikunyan/typetrees/46fda2d131e65f9426462feecebc25c4.dat +0 -0
- data/lib/mikunyan/typetrees/471d5e9908ef24e3f514e9c015278dcc.dat +0 -0
- data/lib/mikunyan/typetrees/47e415e4ded437316718ef638dadd1bb.dat +0 -0
- data/lib/mikunyan/typetrees/47ec19649a1286158a8473b98a437ad9.dat +0 -0
- data/lib/mikunyan/typetrees/4837f860c05f8a94a4f956b92e3dad20.dat +0 -0
- data/lib/mikunyan/typetrees/4855c8964e40430d995b0b5a16b06c29.dat +0 -0
- data/lib/mikunyan/typetrees/486ba4e15dbd6aea8ac1a064305889c8.dat +0 -0
- data/lib/mikunyan/typetrees/486fa2a06d3c4322486ff9d1ae9a91d8.dat +0 -0
- data/lib/mikunyan/typetrees/48d16bd72d4e00f18fcf7f164ca78fcf.dat +0 -0
- data/lib/mikunyan/typetrees/4978b2bc5bfb76f1d26d687ea1bd8be3.dat +0 -0
- data/lib/mikunyan/typetrees/49bb43122aea696618d75afae92c2b3d.dat +0 -0
- data/lib/mikunyan/typetrees/49ff511929094ac12ffaa4ab38ed7bd1.dat +0 -0
- data/lib/mikunyan/typetrees/4b93aa1a138b912b0c421019169acf04.dat +0 -0
- data/lib/mikunyan/typetrees/4bb640239fe9179b3fe914ef2ad73248.dat +0 -0
- data/lib/mikunyan/typetrees/4bfc6b1eb274517782a296ebc8d1af84.dat +0 -0
- data/lib/mikunyan/typetrees/4c4cafd75c2bdccfb2af56ac8cc9c6de.dat +0 -0
- data/lib/mikunyan/typetrees/4c974799da79b8bb90685d05d744a927.dat +0 -0
- data/lib/mikunyan/typetrees/4c9ee0b79c5e5bcbd0628aa9ea5398e4.dat +0 -0
- data/lib/mikunyan/typetrees/4c9efaab9658908236c454765ba987c8.dat +0 -0
- data/lib/mikunyan/typetrees/4d47eb52c44b5042b1d33f9885218658.dat +0 -0
- data/lib/mikunyan/typetrees/4da3f794df175c929b97594573801119.dat +0 -0
- data/lib/mikunyan/typetrees/4dbfaa1def6adb569b550804b19b4305.dat +0 -0
- data/lib/mikunyan/typetrees/4e2656508795cad0cb5c8aa02bd550b6.dat +0 -0
- data/lib/mikunyan/typetrees/4e3ad1f5059719dbf410367459b499a5.dat +0 -0
- data/lib/mikunyan/typetrees/4e588b6332554634ea7e07f6680f0582.dat +0 -0
- data/lib/mikunyan/typetrees/4ea79602e4aa87588eee6d1905d8cb7a.dat +0 -0
- data/lib/mikunyan/typetrees/4eabbb423148bfffb763dbee212b366b.dat +0 -0
- data/lib/mikunyan/typetrees/4f127c0d7cb01c946ae357e54fae15e1.dat +0 -0
- data/lib/mikunyan/typetrees/4f92691a2b77d52dbc397527bff35e5a.dat +0 -0
- data/lib/mikunyan/typetrees/5092b508377b9c6d5ad9895b3d286788.dat +0 -0
- data/lib/mikunyan/typetrees/515d8c2462ffd1457616311bf40b514f.dat +0 -0
- data/lib/mikunyan/typetrees/51963c3dcc24197eabb30cc6868420d9.dat +0 -0
- data/lib/mikunyan/typetrees/51a13aeaa0d05081dc075fcbb2f63ef8.dat +0 -0
- data/lib/mikunyan/typetrees/51c84e1e88d9b0111efef8b6e10c4a32.dat +0 -0
- data/lib/mikunyan/typetrees/52b9481201679837cd249e4a88b7e191.dat +0 -0
- data/lib/mikunyan/typetrees/52e5341311c906096706ed87a43d93a7.dat +0 -0
- data/lib/mikunyan/typetrees/5306e362d8eb0dd3ad5636b4ed4552a7.dat +0 -0
- data/lib/mikunyan/typetrees/538345acf19ef6ab1d9baaa1fa798ea4.dat +0 -0
- data/lib/mikunyan/typetrees/53dd52a23ef6605f90d1e659f26de1d7.dat +0 -0
- data/lib/mikunyan/typetrees/549eb077bec973227cd80a75ad8936ee.dat +0 -0
- data/lib/mikunyan/typetrees/54ec8f0635016644e98d13e28d89a99f.dat +0 -0
- data/lib/mikunyan/typetrees/54f9e32744f326f7a0bad79d35247e39.dat +0 -0
- data/lib/mikunyan/typetrees/5540f11fd4650f927a3ddea613e3fac4.dat +0 -0
- data/lib/mikunyan/typetrees/5627f7a0d565659b25cb38a17f6465cd.dat +0 -0
- data/lib/mikunyan/typetrees/56afddc7f2dabfd6c1b92f818c212973.dat +0 -0
- data/lib/mikunyan/typetrees/571c0f2afe47acf1cd520f332d803b55.dat +0 -0
- data/lib/mikunyan/typetrees/578296e9395d8cd2cdb48a693fbcef63.dat +0 -0
- data/lib/mikunyan/typetrees/581f43365e98d398f5a716a8662bb6c2.dat +0 -0
- data/lib/mikunyan/typetrees/5839854f435cc7e9094966fb28f1d4fd.dat +0 -0
- data/lib/mikunyan/typetrees/583dd2bd3110da224e35404a92a6b223.dat +0 -0
- data/lib/mikunyan/typetrees/58ef73d2332f4214c1edee344bebe42a.dat +0 -0
- data/lib/mikunyan/typetrees/59827bcd10f00f02e580cc25fd9b35dd.dat +0 -0
- data/lib/mikunyan/typetrees/5a49bcd872a89bb1868c4eff8906b310.dat +0 -0
- data/lib/mikunyan/typetrees/5aa0b5d1e3115ca6e2087ab05a7bba32.dat +0 -0
- data/lib/mikunyan/typetrees/5b1b6bf0de1c285996cbfcf535f79a8b.dat +0 -0
- data/lib/mikunyan/typetrees/5bbb1d896df4d71b93d2eb023283c967.dat +0 -0
- data/lib/mikunyan/typetrees/5bc42b93159267aabba724a6a7923603.dat +0 -0
- data/lib/mikunyan/typetrees/5bcd76d798e7b9f2f3ffd398fd2aa6d0.dat +0 -0
- data/lib/mikunyan/typetrees/5be518883c8348ae95891bc413f25d9a.dat +0 -0
- data/lib/mikunyan/typetrees/5c5443aa48dc982498dc45b407dd366c.dat +0 -0
- data/lib/mikunyan/typetrees/5c56c5326122dbfc17f05b4bd1073819.dat +0 -0
- data/lib/mikunyan/typetrees/5db1b04c981af23853d34d9c3b3e4e04.dat +0 -0
- data/lib/mikunyan/typetrees/5e04ed38a99206bb912ef5540d987422.dat +0 -0
- data/lib/mikunyan/typetrees/5e3043c1e8b48dc540b5587049a5652a.dat +0 -0
- data/lib/mikunyan/typetrees/5e4ba266c81110b8a145f252b27434fe.dat +0 -0
- data/lib/mikunyan/typetrees/5e6c5cfe60546fff82d8f510201e1333.dat +0 -0
- data/lib/mikunyan/typetrees/5efa4c14815cf0fce98ec9ccc0a5cd0f.dat +0 -0
- data/lib/mikunyan/typetrees/5efb55d345c70f1e0ab1086d54664f1b.dat +0 -0
- data/lib/mikunyan/typetrees/5fab403b08c59ff6a1cae93a9297e7ea.dat +0 -0
- data/lib/mikunyan/typetrees/5fb5352926a129871956f20d77d944ea.dat +0 -0
- data/lib/mikunyan/typetrees/5fc4c3a218278ab4061cbdc2b3421051.dat +0 -0
- data/lib/mikunyan/typetrees/600abd4d46cc5440a8c9fc82e53617c5.dat +0 -0
- data/lib/mikunyan/typetrees/605682f38c4566637070ca76d9c7d2fe.dat +0 -0
- data/lib/mikunyan/typetrees/60dad57ee0f8f8b133ea8cb45b9ec36e.dat +0 -0
- data/lib/mikunyan/typetrees/618e59f5518f89d1b3a5c7394befc2a2.dat +0 -0
- data/lib/mikunyan/typetrees/619374d5c7f049786553fa386d48f88b.dat +0 -0
- data/lib/mikunyan/typetrees/61a1f8107fe55e8dc70b53ee2eff2756.dat +0 -0
- data/lib/mikunyan/typetrees/61ac6bba7ed5747525d406d2d0585a95.dat +0 -0
- data/lib/mikunyan/typetrees/61fe5cedbfcc1fc0104298e4c582bfac.dat +0 -0
- data/lib/mikunyan/typetrees/620f42f8420121766d34f6447784f183.dat +0 -0
- data/lib/mikunyan/typetrees/626e47f12c9e82cbe8d22e58e9c22441.dat +0 -0
- data/lib/mikunyan/typetrees/6286036292a215a5bb0bcb1dd22f9363.dat +0 -0
- data/lib/mikunyan/typetrees/62e541c3b7db7e26fd3d18076463a677.dat +0 -0
- data/lib/mikunyan/typetrees/62fa22027c3b351611164287e25fd49f.dat +0 -0
- data/lib/mikunyan/typetrees/6348b3796b6b02138fc1dfafb5b20b0d.dat +0 -0
- data/lib/mikunyan/typetrees/63f2ec883b52eee871736caedebed659.dat +0 -0
- data/lib/mikunyan/typetrees/641020e7e2ce4264829d051c6fe93352.dat +0 -0
- data/lib/mikunyan/typetrees/6435a529e2ad3f76e629c15d69227f03.dat +0 -0
- data/lib/mikunyan/typetrees/643e11867d6e720ee84a107eb84644bd.dat +0 -0
- data/lib/mikunyan/typetrees/645b27b9c2e45aeb8f35a172ff464989.dat +0 -0
- data/lib/mikunyan/typetrees/6485f962bc35ac4b9c73ccc6e9a54a91.dat +0 -0
- data/lib/mikunyan/typetrees/64eff32a9399a62c0c1ff38ffc206094.dat +0 -0
- data/lib/mikunyan/typetrees/657663fcc23615b4f420398b9cf66800.dat +0 -0
- data/lib/mikunyan/typetrees/65d43587d7c352e4bd0630c5e2d2b298.dat +0 -0
- data/lib/mikunyan/typetrees/66405447c6973a81e978410c391172fe.dat +0 -0
- data/lib/mikunyan/typetrees/66699f4e7c97d82ff8b9383b2509b87e.dat +0 -0
- data/lib/mikunyan/typetrees/668204d5ecec40adf49520ed6a9025d2.dat +0 -0
- data/lib/mikunyan/typetrees/66c04efe53dbe7127cfdf869a8f95b15.dat +0 -0
- data/lib/mikunyan/typetrees/66e56c6f103e8a727c7ae530a8f7455d.dat +0 -0
- data/lib/mikunyan/typetrees/66fcee7a9b922f2ff5b0d9b52d46547c.dat +0 -0
- data/lib/mikunyan/typetrees/6764d788de27a14bb8ce1638fde37482.dat +0 -0
- data/lib/mikunyan/typetrees/676cc4c231281a90a6a7cd15c124eff4.dat +0 -0
- data/lib/mikunyan/typetrees/676f41d3949568666a56b6761578e00c.dat +0 -0
- data/lib/mikunyan/typetrees/678a2b17764e129def610fbc5b8c42bf.dat +0 -0
- data/lib/mikunyan/typetrees/67dc4bcb545456d2d3c96334a159cc9a.dat +0 -0
- data/lib/mikunyan/typetrees/67de679f93c1a1fada22b4ffaafbf382.dat +0 -0
- data/lib/mikunyan/typetrees/6826552d2f82ad461f4aef84f4d94ea3.dat +0 -0
- data/lib/mikunyan/typetrees/6883009ec58a82ea61000b9c42c5c162.dat +0 -0
- data/lib/mikunyan/typetrees/68d2447015cd020e38d89e52e297f90b.dat +0 -0
- data/lib/mikunyan/typetrees/68dffa1eee93c91703996387b600aa7e.dat +0 -0
- data/lib/mikunyan/typetrees/6932d6d1d46264c8680a181056f98be2.dat +0 -0
- data/lib/mikunyan/typetrees/6974f6c74321933ec4ba7437a55be2c3.dat +0 -0
- data/lib/mikunyan/typetrees/69930e70a6ce1751fde0232474bd6ee0.dat +0 -0
- data/lib/mikunyan/typetrees/69b01db128625aa95f1f92fb890ff045.dat +0 -0
- data/lib/mikunyan/typetrees/69c8dbb0802cc4bc9be68d5c7309b764.dat +0 -0
- data/lib/mikunyan/typetrees/69d2caf8f9638b6169d920c89d9ef16f.dat +0 -0
- data/lib/mikunyan/typetrees/6a315ab47bbb18fc937ba08523937b61.dat +0 -0
- data/lib/mikunyan/typetrees/6a6f68020de4f8d31c56c86f0382f285.dat +0 -0
- data/lib/mikunyan/typetrees/6ac2d1181bb850de49408801e9642c7c.dat +0 -0
- data/lib/mikunyan/typetrees/6ad9191fff669ba9974499b49a164eb6.dat +0 -0
- data/lib/mikunyan/typetrees/6b0764702e7fa567f1b7e41c78cc2429.dat +0 -0
- data/lib/mikunyan/typetrees/6bc25415a9108f87531e4c7946928d9b.dat +0 -0
- data/lib/mikunyan/typetrees/6bd7d7520290d78de5f270d96e24bb2b.dat +0 -0
- data/lib/mikunyan/typetrees/6bdc295cd9692eca0774303098f1d146.dat +0 -0
- data/lib/mikunyan/typetrees/6bf84760b5b66259d18266ef96ef7de1.dat +0 -0
- data/lib/mikunyan/typetrees/6c0f58fbee223f3b8a8fac3394f703bf.dat +0 -0
- data/lib/mikunyan/typetrees/6c7dcb0569480fe5a3393817b73dc97e.dat +0 -0
- data/lib/mikunyan/typetrees/6caeaf097185ade2eb31f23d1085537f.dat +0 -0
- data/lib/mikunyan/typetrees/6ccd29968422b0c727655900a021b33e.dat +0 -0
- data/lib/mikunyan/typetrees/6d1b97337aac9cb7094c7e1041b3e875.dat +0 -0
- data/lib/mikunyan/typetrees/6d5c997e9b5456804ba113755fc21d77.dat +0 -0
- data/lib/mikunyan/typetrees/6d624ed7be5b7d2bfe7a5333bdd41dae.dat +0 -0
- data/lib/mikunyan/typetrees/6dc0d34c2c0e79e0039a0ce24b8d7ad7.dat +0 -0
- data/lib/mikunyan/typetrees/6dcbd8595bad0e6a28405a02cf214475.dat +0 -0
- data/lib/mikunyan/typetrees/6e5277573492549897ee4815066ae959.dat +0 -0
- data/lib/mikunyan/typetrees/6ec5696dc525f7bf85a7bb2e1ae000a9.dat +0 -0
- data/lib/mikunyan/typetrees/6ed2fb56a9c16fd1781896a923bc5110.dat +0 -0
- data/lib/mikunyan/typetrees/6ef34d0e751e6b1699a5ea302b822e33.dat +0 -0
- data/lib/mikunyan/typetrees/6f0618d26354f0289c7090aaf688981a.dat +0 -0
- data/lib/mikunyan/typetrees/6f10d8f832d5adde6982d4515b3f0bb3.dat +0 -0
- data/lib/mikunyan/typetrees/6f5cd06250f9dcc3ca6c3bca26c54a4a.dat +0 -0
- data/lib/mikunyan/typetrees/6fe7137b38c0f129e598c03aabcd1b7d.dat +0 -0
- data/lib/mikunyan/typetrees/706686d4d71b0e1bf7c80acdaa4ee6f5.dat +0 -0
- data/lib/mikunyan/typetrees/70694abce333e1b33ac59f2073897f8c.dat +0 -0
- data/lib/mikunyan/typetrees/708b7450c6da65399971dc7713450987.dat +0 -0
- data/lib/mikunyan/typetrees/710ba136b5e726ce760e399a154d3147.dat +0 -0
- data/lib/mikunyan/typetrees/715d61497b6835c6d6051c1782d084d8.dat +0 -0
- data/lib/mikunyan/typetrees/7230c9eb36a0c72a7187ad952551e1e5.dat +0 -0
- data/lib/mikunyan/typetrees/72a04b61fcb3921ca9eae80f2e8116f2.dat +0 -0
- data/lib/mikunyan/typetrees/730963c6e93acb528bb26d1152f2f185.dat +0 -0
- data/lib/mikunyan/typetrees/736709e4aa82fa6e43c313608fdab426.dat +0 -0
- data/lib/mikunyan/typetrees/7426e29c09461093e756fbae4d601f21.dat +0 -0
- data/lib/mikunyan/typetrees/742c910494e1117e52cc42600eedf188.dat +0 -0
- data/lib/mikunyan/typetrees/742dfb0ecafe88a375d25ddf3b57c48f.dat +0 -0
- data/lib/mikunyan/typetrees/7487684e77cbd197aaf389864da1d8c7.dat +0 -0
- data/lib/mikunyan/typetrees/74d387e7f1b0ef0e146e96940005546f.dat +0 -0
- data/lib/mikunyan/typetrees/74dee2a3d385f2275898fdb717601239.dat +0 -0
- data/lib/mikunyan/typetrees/74e21134ffaafd89e66055c6276511eb.dat +0 -0
- data/lib/mikunyan/typetrees/7516312baadcdf604129e59e48ddd279.dat +0 -0
- data/lib/mikunyan/typetrees/75545c074fd129c54b22e1a6bcdcb66f.dat +0 -0
- data/lib/mikunyan/typetrees/7596aa057c69a1ec1a3a89ad75428393.dat +0 -0
- data/lib/mikunyan/typetrees/75be9be17431b833cd73a47d360d8ccf.dat +0 -0
- data/lib/mikunyan/typetrees/75d2f1d383a6d305cf13e74d9fbcbe27.dat +0 -0
- data/lib/mikunyan/typetrees/75e5f675169cf0850fafafa08a65cb38.dat +0 -0
- data/lib/mikunyan/typetrees/7602eb8dc1aab6b53a21f0eec61dcf50.dat +0 -0
- data/lib/mikunyan/typetrees/761ca81f78491542badc37f810ab3455.dat +0 -0
- data/lib/mikunyan/typetrees/762765b0cbe6e45e90e5327a46f736f3.dat +0 -0
- data/lib/mikunyan/typetrees/766ecf7bc48297e7896ab27f26a20718.dat +0 -0
- data/lib/mikunyan/typetrees/76ce55d4dbaf38f5c674ea9f0a344951.dat +0 -0
- data/lib/mikunyan/typetrees/76f4b627feb164db63eb7309397cc41c.dat +0 -0
- data/lib/mikunyan/typetrees/774f723655447fbac1acb3d6e2efe779.dat +0 -0
- data/lib/mikunyan/typetrees/77e140a777f2dcacb51121e0a5bd1f53.dat +0 -0
- data/lib/mikunyan/typetrees/7820575911fe2da513f40293adce9a18.dat +0 -0
- data/lib/mikunyan/typetrees/7827d12c70d793eea089e3d7f39d261d.dat +0 -0
- data/lib/mikunyan/typetrees/783160b4237e2d925847373d2e3e1f74.dat +0 -0
- data/lib/mikunyan/typetrees/78b7ad80f74e5183d7232e985f897e07.dat +0 -0
- data/lib/mikunyan/typetrees/78d8adfab8d2f5e87dc9f0940edf643e.dat +0 -0
- data/lib/mikunyan/typetrees/796f96b562ba5f95590515f1ff2b4ad4.dat +0 -0
- data/lib/mikunyan/typetrees/7a8e9c0bbba2cc55cba94498d74ce288.dat +0 -0
- data/lib/mikunyan/typetrees/7a92461726e9f3f6530e31cf5af5d1bf.dat +0 -0
- data/lib/mikunyan/typetrees/7a929c15d05fa9e0429b1b0b1aebc4fa.dat +0 -0
- data/lib/mikunyan/typetrees/7af10101ba0f53047f2ef70d8a9c804b.dat +0 -0
- data/lib/mikunyan/typetrees/7b060099aa81c5b21d273334dca40500.dat +0 -0
- data/lib/mikunyan/typetrees/7b2c23a9c82c5c46e142acfea65b3c97.dat +0 -0
- data/lib/mikunyan/typetrees/7b7447a6cf3fc8277777e805eba85851.dat +0 -0
- data/lib/mikunyan/typetrees/7bc51621c4b5daf39c657881089220a1.dat +0 -0
- data/lib/mikunyan/typetrees/7bdd8f909403558edc7cfc68ea95b815.dat +0 -0
- data/lib/mikunyan/typetrees/7c40ce9e4c671f7594f3d4fae7c32466.dat +0 -0
- data/lib/mikunyan/typetrees/7c5cf6d08d3a08f2a7974b31506de880.dat +0 -0
- data/lib/mikunyan/typetrees/7c6240188efe9290095ed1a669f90ec1.dat +0 -0
- data/lib/mikunyan/typetrees/7c68f879768df44f439ae870b70b6a9e.dat +0 -0
- data/lib/mikunyan/typetrees/7c6dc2b255110b522e6c300e8632f2a1.dat +0 -0
- data/lib/mikunyan/typetrees/7cbb1c953f2ed3ca40125e473bf2fce0.dat +0 -0
- data/lib/mikunyan/typetrees/7cdec7ef01e50eed77502d4e277c3e0d.dat +0 -0
- data/lib/mikunyan/typetrees/7cf0af7e0c7d50808a569121e7a4c0de.dat +0 -0
- data/lib/mikunyan/typetrees/7d2188e085d3917ebec9a1067d74de59.dat +0 -0
- data/lib/mikunyan/typetrees/7d7186ff509eeb1be635ead41f130cbb.dat +0 -0
- data/lib/mikunyan/typetrees/7db9444f76a2b8f439e4581d2274d36b.dat +0 -0
- data/lib/mikunyan/typetrees/7e050781d08ca9d10bc74beb7e91c3b5.dat +0 -0
- data/lib/mikunyan/typetrees/7e328a225b72b97191b52d631ccf62d2.dat +0 -0
- data/lib/mikunyan/typetrees/7ec49b5572da843e0e7d21ab5459a2da.dat +0 -0
- data/lib/mikunyan/typetrees/7ef50d120c6291f8451b25ad8abf0965.dat +0 -0
- data/lib/mikunyan/typetrees/7f52d4deb56f283a259b5e24c4bf3f54.dat +0 -0
- data/lib/mikunyan/typetrees/7f5bc8091a8db0e9aa2b5fbf64e7951b.dat +0 -0
- data/lib/mikunyan/typetrees/7f814eabb66e0fb6a82a15ef17f7e1d3.dat +0 -0
- data/lib/mikunyan/typetrees/7fab9e77215788a4f643d5f7397ffbb3.dat +0 -0
- data/lib/mikunyan/typetrees/7fb1270153bd6ccfa8bc7546dda95254.dat +0 -0
- data/lib/mikunyan/typetrees/805ccd3567f53eef88ad4ad0bfa2d5fe.dat +0 -0
- data/lib/mikunyan/typetrees/806230bcf014183c8e3ad32dfd4280ed.dat +0 -0
- data/lib/mikunyan/typetrees/80ba7945b19e87c90c6aa46fb4c7b9b2.dat +0 -0
- data/lib/mikunyan/typetrees/8146f1f01d4bf220c339260799ed1bb6.dat +0 -0
- data/lib/mikunyan/typetrees/818ddfe606de30c07daa36d729f982e2.dat +0 -0
- data/lib/mikunyan/typetrees/8198e72b2e2a96b9cfa38636b5565e13.dat +0 -0
- data/lib/mikunyan/typetrees/81d6f63da53d28f32efd4d3f6b1d3da8.dat +0 -0
- data/lib/mikunyan/typetrees/81e28d3a4102fabc98ac701e6a192ad4.dat +0 -0
- data/lib/mikunyan/typetrees/827f095b42d421f9185c642342736534.dat +0 -0
- data/lib/mikunyan/typetrees/82cbe6ba9f2fd496d8e14747a764dc4f.dat +0 -0
- data/lib/mikunyan/typetrees/82ef0bad8dda8ba9bd5e1c02d979553c.dat +0 -0
- data/lib/mikunyan/typetrees/833f8aadff717234b49269a5132edc7c.dat +0 -0
- data/lib/mikunyan/typetrees/8401d562403dab942459c07642072dd6.dat +0 -0
- data/lib/mikunyan/typetrees/841a9336c1bf3f743885c5872cc07610.dat +0 -0
- data/lib/mikunyan/typetrees/84441ff585c6e370e29c822a10ffaca8.dat +0 -0
- data/lib/mikunyan/typetrees/845046c14ae4f0948a7d3dbc4a0c539e.dat +0 -0
- data/lib/mikunyan/typetrees/8473edbc0acb04069b62cedcb384b5b3.dat +0 -0
- data/lib/mikunyan/typetrees/849b9d0ee2b45ed2b7ad871a6e9e7829.dat +0 -0
- data/lib/mikunyan/typetrees/849d2b6794bdc167b0ed4680bad500a8.dat +0 -0
- data/lib/mikunyan/typetrees/84c6ac46ef89030991cbbb3fd21d2889.dat +0 -0
- data/lib/mikunyan/typetrees/852794becbcf95f66992da2b96a69704.dat +0 -0
- data/lib/mikunyan/typetrees/863223fe4e4f151f9fac463e584de569.dat +0 -0
- data/lib/mikunyan/typetrees/86897fc97905918dc891437fa7a15696.dat +0 -0
- data/lib/mikunyan/typetrees/86d77ad7cf81dd25dd72cba6c8c6469f.dat +0 -0
- data/lib/mikunyan/typetrees/86e3dfad5ee7276a4684d1a52abff92e.dat +0 -0
- data/lib/mikunyan/typetrees/87a093027ec05bed0b579a2358a5b05d.dat +0 -0
- data/lib/mikunyan/typetrees/87dade7c5c3deedeb0ce5d9a8841f158.dat +0 -0
- data/lib/mikunyan/typetrees/87f77e11a02b179bb214bd76d685b401.dat +0 -0
- data/lib/mikunyan/typetrees/8925033300616905004fa9e086f1cbc9.dat +0 -0
- data/lib/mikunyan/typetrees/896dbaf3b3aebe84868b2f32670d760f.dat +0 -0
- data/lib/mikunyan/typetrees/89e4db8e910533e9ee1d1aea4ff83e90.dat +0 -0
- data/lib/mikunyan/typetrees/8a5260f6b3834d07a94ab067294b0cc5.dat +0 -0
- data/lib/mikunyan/typetrees/8b15ee3625eb1303de45e98f5be1f26a.dat +0 -0
- data/lib/mikunyan/typetrees/8b8d4b439b97c4ced21e607f897bafd8.dat +0 -0
- data/lib/mikunyan/typetrees/8ba111f9d4192ab8bc45d1660fd86fc6.dat +0 -0
- data/lib/mikunyan/typetrees/8c484a566ae9d66ee0aceea5a42e3789.dat +0 -0
- data/lib/mikunyan/typetrees/8c55b3391474b0260c3d86e0c2bcd993.dat +0 -0
- data/lib/mikunyan/typetrees/8c628dc93bfed0b3426a4bac24a61747.dat +0 -0
- data/lib/mikunyan/typetrees/8c76f4279782912a6b3aa48b66ed01b7.dat +0 -0
- data/lib/mikunyan/typetrees/8c86f4ac6b7f47c045560d4383aadc8d.dat +0 -0
- data/lib/mikunyan/typetrees/8d0a59169a1ccf55f552c37131047e9c.dat +0 -0
- data/lib/mikunyan/typetrees/8d3c252a2ef87c9fce3fb31e19ba56a8.dat +0 -0
- data/lib/mikunyan/typetrees/8d9b6bdaddb4b93dfcd710699c75727e.dat +0 -0
- data/lib/mikunyan/typetrees/8dd2e23af15a28379c28908e65221abe.dat +0 -0
- data/lib/mikunyan/typetrees/8df95c0391bc4e4f4e0a42aba29ab8a2.dat +0 -0
- data/lib/mikunyan/typetrees/8ea24924f881c1cd4138c7788c0ef205.dat +0 -0
- data/lib/mikunyan/typetrees/8fbd7a1c59a8d433c600d62fa2740c9d.dat +0 -0
- data/lib/mikunyan/typetrees/904f143a242ea542145368df1fc29c24.dat +0 -0
- data/lib/mikunyan/typetrees/9075bdf87ce7fe1d17fed3456a6a834b.dat +0 -0
- data/lib/mikunyan/typetrees/912cebe0cd9b0a9e0d0a548bfa2fd382.dat +0 -0
- data/lib/mikunyan/typetrees/914d9c276e68b21df32efb3447e983bf.dat +0 -0
- data/lib/mikunyan/typetrees/91ffea0726900cb751e36f83816df13e.dat +0 -0
- data/lib/mikunyan/typetrees/921d3a8ec14bca7a3ac12be64e59d740.dat +0 -0
- data/lib/mikunyan/typetrees/922285a96e080d3b0fb9d1483ace0c71.dat +0 -0
- data/lib/mikunyan/typetrees/924f3272ed53ff58e2379a7684f5069a.dat +0 -0
- data/lib/mikunyan/typetrees/927fb27ec5aa6f52f67992bafc6e1df8.dat +0 -0
- data/lib/mikunyan/typetrees/92a27f6a5e14dc6ab8018923723c818c.dat +0 -0
- data/lib/mikunyan/typetrees/92f1b9794cb255b2fbf962648186a962.dat +0 -0
- data/lib/mikunyan/typetrees/936739f45f26fd8b81a4ea70f2c8cad4.dat +0 -0
- data/lib/mikunyan/typetrees/936ac825c5beb010bed3b6b7953f4dd2.dat +0 -0
- data/lib/mikunyan/typetrees/937a6b5c5f5b313185d252e38d145b17.dat +0 -0
- data/lib/mikunyan/typetrees/93c3d14c8b88c38e3aa39de936d38caa.dat +0 -0
- data/lib/mikunyan/typetrees/940c9db2511f9898769e11849d71f82f.dat +0 -0
- data/lib/mikunyan/typetrees/94a19169d56c4f123092fd0d1e4bdba1.dat +0 -0
- data/lib/mikunyan/typetrees/94d6c861f2b382fd81a12d2a1b1e7ce2.dat +0 -0
- data/lib/mikunyan/typetrees/954706197f5ed745cd14444d281f1516.dat +0 -0
- data/lib/mikunyan/typetrees/959ce281abde8687d3ab1adce9e00f5a.dat +0 -0
- data/lib/mikunyan/typetrees/961be27d12d60b1b3421191d5256a876.dat +0 -0
- data/lib/mikunyan/typetrees/964c223b82bb8bac12cd3e53186a3e13.dat +0 -0
- data/lib/mikunyan/typetrees/9657457af3bc45d81a0b5871a0d18e77.dat +0 -0
- data/lib/mikunyan/typetrees/96785e58aac89a09fce6ca2c9448311b.dat +0 -0
- data/lib/mikunyan/typetrees/96a47566b4e135078f690a4a69935d58.dat +0 -0
- data/lib/mikunyan/typetrees/96bc046967bdbe77c417e21eb49ce1ae.dat +0 -0
- data/lib/mikunyan/typetrees/96c46d945b3cc21e2a5ca09659ae4ef2.dat +0 -0
- data/lib/mikunyan/typetrees/974cb1de01d7acb61e52fe38b84e0ee0.dat +0 -0
- data/lib/mikunyan/typetrees/97da5f4688e45a57c8b42d4f42497297.dat +0 -0
- data/lib/mikunyan/typetrees/97dc11471130df660f6d50adbeb2d686.dat +0 -0
- data/lib/mikunyan/typetrees/97ec0712102a3ea3f1cf8c0a4e47c070.dat +0 -0
- data/lib/mikunyan/typetrees/9805cf0348f163ad092ab00ca9d122d1.dat +0 -0
- data/lib/mikunyan/typetrees/983db003d56cd893ea50a9b80e743a79.dat +0 -0
- data/lib/mikunyan/typetrees/99359255da094b94c150311921ba4420.dat +0 -0
- data/lib/mikunyan/typetrees/996817b009f16e87aaae3624bce113c2.dat +0 -0
- data/lib/mikunyan/typetrees/999a8dbc0e53be755905751739c9e11c.dat +0 -0
- data/lib/mikunyan/typetrees/99bd795c8f9317e294a68c7fbe03ca20.dat +0 -0
- data/lib/mikunyan/typetrees/9a17ee635b6dc8432d0ec80c4ad73e29.dat +0 -0
- data/lib/mikunyan/typetrees/9a83846bdc10f24de3183b3d1b510d5c.dat +0 -0
- data/lib/mikunyan/typetrees/9aed068deda3d33814c4fb67736e29a2.dat +0 -0
- data/lib/mikunyan/typetrees/9af59502167704cb56d2208a8f4cb9d4.dat +0 -0
- data/lib/mikunyan/typetrees/9b387d50420c652bc1655e5246825221.dat +0 -0
- data/lib/mikunyan/typetrees/9b3c138987aed9be83010b14bab944c5.dat +0 -0
- data/lib/mikunyan/typetrees/9ba48aaf9d1e25c3df443b187b038f86.dat +0 -0
- data/lib/mikunyan/typetrees/9bcd9c6543c17c98a8822bd42ec93276.dat +0 -0
- data/lib/mikunyan/typetrees/9ca11a3c3ac28b3faadefc2077eeed2c.dat +0 -0
- data/lib/mikunyan/typetrees/9cd47fa65c9a8be7ae36db2dc33968b2.dat +0 -0
- data/lib/mikunyan/typetrees/9d1630b1d7e3bc24abe46e5860a2a179.dat +0 -0
- data/lib/mikunyan/typetrees/9e0ab8d396f3249a3958dd930f81f61b.dat +0 -0
- data/lib/mikunyan/typetrees/9e26f96591d351c8dfe911b5dc239000.dat +0 -0
- data/lib/mikunyan/typetrees/9eabac6ec66ffe818e008883728fcc1b.dat +0 -0
- data/lib/mikunyan/typetrees/9ec70d7af96c9625d1bfca15d188b85c.dat +0 -0
- data/lib/mikunyan/typetrees/9ee328006f16e91aebcb4f27698f145a.dat +0 -0
- data/lib/mikunyan/typetrees/9f1c6f94c1da7e8f10bb554b37c6790b.dat +0 -0
- data/lib/mikunyan/typetrees/9f459ec8887c3967985546f1fde8df43.dat +0 -0
- data/lib/mikunyan/typetrees/9f6e88bbe6df9df9cf7291b5706b5552.dat +0 -0
- data/lib/mikunyan/typetrees/9fc1437f6cfe5c490d2e978f16ab14c6.dat +0 -0
- data/lib/mikunyan/typetrees/9fc31ad55662eaea988a01e22a644c39.dat +0 -0
- data/lib/mikunyan/typetrees/a02319b1d2e24272d1b421900c6ad759.dat +0 -0
- data/lib/mikunyan/typetrees/a0efb292088d42a70bf1e896a86b432c.dat +0 -0
- data/lib/mikunyan/typetrees/a13e161c148750300e73c4a6fce7bfbd.dat +0 -0
- data/lib/mikunyan/typetrees/a1537a31e824cbbd6c05da4642c985b8.dat +0 -0
- data/lib/mikunyan/typetrees/a1976c4b66d47015022b085de5b49ccb.dat +0 -0
- data/lib/mikunyan/typetrees/a19b930d9a846346a5d8b896c5e96486.dat +0 -0
- data/lib/mikunyan/typetrees/a1ade835112d0f2821871fa3c6e4e587.dat +0 -0
- data/lib/mikunyan/typetrees/a1c1ffb08b1cc7f3f88f09356496a286.dat +0 -0
- data/lib/mikunyan/typetrees/a1d647cb11661f7cf6547453ea5f9861.dat +0 -0
- data/lib/mikunyan/typetrees/a1ed39a19efb6f3ebc0a032dc6d587c9.dat +0 -0
- data/lib/mikunyan/typetrees/a2612890399b22f059e37145e4db6ff9.dat +0 -0
- data/lib/mikunyan/typetrees/a2dc9dbb5b830efd10b60100b47d8d36.dat +0 -0
- data/lib/mikunyan/typetrees/a3125dde8c910a6d078682616f144a80.dat +0 -0
- data/lib/mikunyan/typetrees/a3523f5739a17bb6054dde6c088584ce.dat +0 -0
- data/lib/mikunyan/typetrees/a372646834bcaf26eab1d21b29e39553.dat +0 -0
- data/lib/mikunyan/typetrees/a3c506becc8f7d25351b47778de7ebb5.dat +0 -0
- data/lib/mikunyan/typetrees/a3d63d57b4f43b62a77e83e05699a5f6.dat +0 -0
- data/lib/mikunyan/typetrees/a439ae65edce4289e3ff832904fea27d.dat +0 -0
- data/lib/mikunyan/typetrees/a443a7ce5365c746c6e9c64036662d13.dat +0 -0
- data/lib/mikunyan/typetrees/a46a51168885aa63162102ca3f63007a.dat +0 -0
- data/lib/mikunyan/typetrees/a47e8a7b7a1ef3aba7372439af5d26a7.dat +0 -0
- data/lib/mikunyan/typetrees/a49b27a93f3de2ad5ef668735e5042b2.dat +0 -0
- data/lib/mikunyan/typetrees/a4f194097b08bc4c5019c3a4ea6f5cbd.dat +0 -0
- data/lib/mikunyan/typetrees/a52792d409265e0e596cf29f070ecb5d.dat +0 -0
- data/lib/mikunyan/typetrees/a545a5020d58adc9f675e7c540cc8528.dat +0 -0
- data/lib/mikunyan/typetrees/a5610d8eea1dd355fe6d1abe467ef169.dat +0 -0
- data/lib/mikunyan/typetrees/a5c609a17035f4d56f2ae04d1b39a920.dat +0 -0
- data/lib/mikunyan/typetrees/a5c7631994dff71adc95b7f89031b93b.dat +0 -0
- data/lib/mikunyan/typetrees/a607b371095d71157668890ef7ba9916.dat +0 -0
- data/lib/mikunyan/typetrees/a60842f261bd4d64035c8ec28d3479e8.dat +0 -0
- data/lib/mikunyan/typetrees/a6eed3721efd15a26738b18db46be12f.dat +0 -0
- data/lib/mikunyan/typetrees/a70f7abc6586fb35b3a0641aa81e9375.dat +0 -0
- data/lib/mikunyan/typetrees/a780b20860600360dca50aabf28af3a8.dat +0 -0
- data/lib/mikunyan/typetrees/a7ab35bd41beb7749427a39f92a03d4b.dat +0 -0
- data/lib/mikunyan/typetrees/a83755f3cbd13d1fb2fee65b71f3d548.dat +0 -0
- data/lib/mikunyan/typetrees/a8d5288ef078923b2de828fe161efa45.dat +0 -0
- data/lib/mikunyan/typetrees/a9151a17a865b711150442f2d88c1562.dat +0 -0
- data/lib/mikunyan/typetrees/ab4e5036e05e74cdac2d53b6019bc9eb.dat +0 -0
- data/lib/mikunyan/typetrees/ab84ab1a36bb2a6b65af81284f111350.dat +0 -0
- data/lib/mikunyan/typetrees/abaa04359c1280b858eeac4cd31a7aea.dat +0 -0
- data/lib/mikunyan/typetrees/abce5e1c4492692e276ff3d9365f9465.dat +0 -0
- data/lib/mikunyan/typetrees/abd3c4b2ff616cc78d42c5941d8569e0.dat +0 -0
- data/lib/mikunyan/typetrees/ac0b1a1717abe360c1a00057f5d2abb6.dat +0 -0
- data/lib/mikunyan/typetrees/ac5efb9153fd30cd5e78552e69f83830.dat +0 -0
- data/lib/mikunyan/typetrees/ac907a47e9d727d24ca82a3ee68dd8df.dat +0 -0
- data/lib/mikunyan/typetrees/acf82061a06bb855c2a2a6e73a2b97fb.dat +0 -0
- data/lib/mikunyan/typetrees/ad2ca9a0fe21a7cf9793d8ace16bb3cd.dat +0 -0
- data/lib/mikunyan/typetrees/add53ee9a755d72f14f4d673d2dac56b.dat +0 -0
- data/lib/mikunyan/typetrees/adf5eba4e81b1d740ea0068a30aa8a37.dat +0 -0
- data/lib/mikunyan/typetrees/ae12c8f4663719b3d423361a8b8a62d2.dat +0 -0
- data/lib/mikunyan/typetrees/aeadce2965a198a87587c0beac675004.dat +0 -0
- data/lib/mikunyan/typetrees/aeeebbdbd802239fdfc3aaf98ffc5d01.dat +0 -0
- data/lib/mikunyan/typetrees/af863b6969b9b82be9450f0574339f65.dat +0 -0
- data/lib/mikunyan/typetrees/af9a16c5c3d9f5104290fff6305334e2.dat +0 -0
- data/lib/mikunyan/typetrees/aff142075870161380a891d11baeb767.dat +0 -0
- data/lib/mikunyan/typetrees/b093ef1cb958a6b1cf5a00c31b6e05c4.dat +0 -0
- data/lib/mikunyan/typetrees/b0adafbe24f8148ebf01794ee6679925.dat +0 -0
- data/lib/mikunyan/typetrees/b0f22973848e1cf655dfdf8064bfa400.dat +0 -0
- data/lib/mikunyan/typetrees/b14bcb0865632d1b2d6e215a000e4c0f.dat +0 -0
- data/lib/mikunyan/typetrees/b1fe84b5bfdc47e2b1b930db296afb2f.dat +0 -0
- data/lib/mikunyan/typetrees/b20231c215c4c1b82b98bb49418c5cbe.dat +0 -0
- data/lib/mikunyan/typetrees/b204c22c22b1a08f780435c2cb4e6e36.dat +0 -0
- data/lib/mikunyan/typetrees/b23ac00b23adf1bb2b3d7c5553ad5dad.dat +0 -0
- data/lib/mikunyan/typetrees/b288ea39c72d3b3d238cb4f3fc076d0a.dat +0 -0
- data/lib/mikunyan/typetrees/b2c14391e281903c5a5157289977d33f.dat +0 -0
- data/lib/mikunyan/typetrees/b2cc7a58ffc0556ece83264e81dff623.dat +0 -0
- data/lib/mikunyan/typetrees/b2f39a1d526b8a4c6aad16cff7ca9ea8.dat +0 -0
- data/lib/mikunyan/typetrees/b2fbe9f493982acd18f063f7ab5a81aa.dat +0 -0
- data/lib/mikunyan/typetrees/b31c04cde0ffadc258d46846966594b1.dat +0 -0
- data/lib/mikunyan/typetrees/b3290db9f9d2e2862a1367d32838130e.dat +0 -0
- data/lib/mikunyan/typetrees/b354679381971a70db4d0035cc730543.dat +0 -0
- data/lib/mikunyan/typetrees/b35bf02952f2946208ff6b4deca3a6a9.dat +0 -0
- data/lib/mikunyan/typetrees/b36337bd6d2e99167473b8a383361c21.dat +0 -0
- data/lib/mikunyan/typetrees/b38ca8dbedd791b7ca3ca07095a9f312.dat +0 -0
- data/lib/mikunyan/typetrees/b38d9554723d82e3bc95c076ca902704.dat +0 -0
- data/lib/mikunyan/typetrees/b3fdd03ac222c685fe75187c0b44c489.dat +0 -0
- data/lib/mikunyan/typetrees/b494c2cb6c527914e903d8d6e17f30e9.dat +0 -0
- data/lib/mikunyan/typetrees/b519ba66b3244a4bfaf9a65938d61b67.dat +0 -0
- data/lib/mikunyan/typetrees/b51e06b75a0e28a9f2f242726a3814d4.dat +0 -0
- data/lib/mikunyan/typetrees/b53f2d12e7a6d302f50ad4162070fe13.dat +0 -0
- data/lib/mikunyan/typetrees/b684fb202e70b6d6c9fa64988e29576e.dat +0 -0
- data/lib/mikunyan/typetrees/b6bbd0e88d1feb636d89bd766ea5934f.dat +0 -0
- data/lib/mikunyan/typetrees/b6cc407b2d3c753bf79661a477113977.dat +0 -0
- data/lib/mikunyan/typetrees/b7056b24cf06fc6058b412a2c2dad2bb.dat +0 -0
- data/lib/mikunyan/typetrees/b78821b6aeb5b79c8961728a9f068024.dat +0 -0
- data/lib/mikunyan/typetrees/b79aed1f22f656993386add127833156.dat +0 -0
- data/lib/mikunyan/typetrees/b7b8ff0c7ec96a3bd77eabf9525d4f06.dat +0 -0
- data/lib/mikunyan/typetrees/b7d7910ac57c74d889686f738faa2129.dat +0 -0
- data/lib/mikunyan/typetrees/b7e5c868b4ec8e08bd3742a41789553f.dat +0 -0
- data/lib/mikunyan/typetrees/b927314c9878d83dca779ce9d6fc4903.dat +0 -0
- data/lib/mikunyan/typetrees/b9505154d75e141fc175dd698fcd1cef.dat +0 -0
- data/lib/mikunyan/typetrees/b97c898309dcb4b179b92f5dd4a828aa.dat +0 -0
- data/lib/mikunyan/typetrees/b980908065249a4bec8305d81d7ac7b7.dat +0 -0
- data/lib/mikunyan/typetrees/b9a41dcaf8b39c9e9f35bd4213787e0c.dat +0 -0
- data/lib/mikunyan/typetrees/ba1996aca11b1fbb146d9b0b3d8655ad.dat +0 -0
- data/lib/mikunyan/typetrees/ba26d1ee9f8242f4e94643f714aa18e1.dat +0 -0
- data/lib/mikunyan/typetrees/ba47ad58f6906c6bfe5bbf2de86de146.dat +0 -0
- data/lib/mikunyan/typetrees/ba716592649b6cfbc9f19c254a4d4517.dat +0 -0
- data/lib/mikunyan/typetrees/bb85fb2b191dd4282476910c85388c01.dat +0 -0
- data/lib/mikunyan/typetrees/bbd1f586c5ef70e20cb22656e8ce820b.dat +0 -0
- data/lib/mikunyan/typetrees/bc40049689b7cec9aa3d55e2ea8de2cf.dat +0 -0
- data/lib/mikunyan/typetrees/bc44f3fd1f7a53385f632e6a3ddb1713.dat +0 -0
- data/lib/mikunyan/typetrees/bc55158477811012972fb0d4b572d900.dat +0 -0
- data/lib/mikunyan/typetrees/bc6a0079c1aaf2c88aa0baef8cafb07b.dat +0 -0
- data/lib/mikunyan/typetrees/bc6ec2e437d1c2fdf300138d6cd908c4.dat +0 -0
- data/lib/mikunyan/typetrees/bcbec448e806266dcc4c28030f3860f1.dat +0 -0
- data/lib/mikunyan/typetrees/bcdcbeafe799355f39a43b263d10389b.dat +0 -0
- data/lib/mikunyan/typetrees/bd08188c47e3a9732b1233b9979acead.dat +0 -0
- data/lib/mikunyan/typetrees/bd3e65b436ca9bddcf08b9369dc166c9.dat +0 -0
- data/lib/mikunyan/typetrees/bd9937fc95c43ace4f598498922efdf4.dat +0 -0
- data/lib/mikunyan/typetrees/bda8c24186074c70bb3983fe48af6d0a.dat +0 -0
- data/lib/mikunyan/typetrees/bdad82ac8e818a48cc8c8c353fd1b232.dat +0 -0
- data/lib/mikunyan/typetrees/be2b49e54ae8d3aac75bd34a6d87e5e5.dat +0 -0
- data/lib/mikunyan/typetrees/be521590c2a7e119c31979e36c98789e.dat +0 -0
- data/lib/mikunyan/typetrees/be9c29138eea51e485e58ae7d0ee5eda.dat +0 -0
- data/lib/mikunyan/typetrees/bea7fa6dbf25a492093fec0b0b12c49f.dat +0 -0
- data/lib/mikunyan/typetrees/bea915a8ab3d9b55e80c969a22e692d3.dat +0 -0
- data/lib/mikunyan/typetrees/bf70bb56d86ace6047252688d663d8c4.dat +0 -0
- data/lib/mikunyan/typetrees/bf9dd695d7f2b4c1f07279f58362d4a5.dat +0 -0
- data/lib/mikunyan/typetrees/bfc41466cf63095c9a89e4defeea56f5.dat +0 -0
- data/lib/mikunyan/typetrees/c097c2178bc05715274a8513f32f5e2d.dat +0 -0
- data/lib/mikunyan/typetrees/c135fdff1ecf351ff2968c0c575a93fc.dat +0 -0
- data/lib/mikunyan/typetrees/c184743520186f546000de20f4d19736.dat +0 -0
- data/lib/mikunyan/typetrees/c1bd7854033214a22ac0e141089fbb2d.dat +0 -0
- data/lib/mikunyan/typetrees/c1e394cb8e3b83562307194fb6d429af.dat +0 -0
- data/lib/mikunyan/typetrees/c2c15e3018e440dfbc88ab67b75f4c1d.dat +0 -0
- data/lib/mikunyan/typetrees/c2ca897ba3f0d195562afbc35c837335.dat +0 -0
- data/lib/mikunyan/typetrees/c31b92b7eee9c5c57313fb562eba9dc2.dat +0 -0
- data/lib/mikunyan/typetrees/c3a49c5484231f188d2dbf0ce906983e.dat +0 -0
- data/lib/mikunyan/typetrees/c3a8bc8f5809ef66c48301555ad887c9.dat +0 -0
- data/lib/mikunyan/typetrees/c3bd45c36189c3769b3605e3e68074b6.dat +0 -0
- data/lib/mikunyan/typetrees/c3d60ce6816f9ca79e378c42fa1dce89.dat +0 -0
- data/lib/mikunyan/typetrees/c40f47d114996fd5b6fcad6dccf63698.dat +0 -0
- data/lib/mikunyan/typetrees/c42229e0ac25eba7b65d00c6bf5a14c4.dat +0 -0
- data/lib/mikunyan/typetrees/c45f92b4ac045c96d0360b5f6a3b1dc4.dat +0 -0
- data/lib/mikunyan/typetrees/c4aa8047d41bec5b2fa0fafd4d334064.dat +0 -0
- data/lib/mikunyan/typetrees/c4c62993971a4c233bae8f8954b4509c.dat +0 -0
- data/lib/mikunyan/typetrees/c545e03ac5b8e05354a606a32d652451.dat +0 -0
- data/lib/mikunyan/typetrees/c58ca61dd3a7ba754ce32006f4824d1c.dat +0 -0
- data/lib/mikunyan/typetrees/c593e13a55803ee78c43e19ed6675bcb.dat +0 -0
- data/lib/mikunyan/typetrees/c63da93518d9d5df594b4099f3e01567.dat +0 -0
- data/lib/mikunyan/typetrees/c65c019fd81d3915b9a3c8051b15953f.dat +0 -0
- data/lib/mikunyan/typetrees/c714531f729b9151841641b4bdd70994.dat +0 -0
- data/lib/mikunyan/typetrees/c8300105c5f2c3f44c2e11603f5ed908.dat +0 -0
- data/lib/mikunyan/typetrees/c838052a240cb84f4f6e2439f5bbdc53.dat +0 -0
- data/lib/mikunyan/typetrees/c91cee33fcf7382fead17e755bd7d40c.dat +0 -0
- data/lib/mikunyan/typetrees/c9531c7582f449d66888b906ac3c1d52.dat +0 -0
- data/lib/mikunyan/typetrees/c963ff70381de0acb5457051e36286c3.dat +0 -0
- data/lib/mikunyan/typetrees/c96a64061d3e391b7f3309bd4a644969.dat +0 -0
- data/lib/mikunyan/typetrees/ca2b42eb4ee5875caf48adf3239dd23b.dat +0 -0
- data/lib/mikunyan/typetrees/caeb4cbab1b7b97f81befe2c8e3f8f3f.dat +0 -0
- data/lib/mikunyan/typetrees/cb2bfcd356194433b46de145d0dfc4d8.dat +0 -0
- data/lib/mikunyan/typetrees/cb419960ac03a9307354fbf2ad2bda01.dat +0 -0
- data/lib/mikunyan/typetrees/cba283a78b20bbd9f0dd18c977b69d8e.dat +0 -0
- data/lib/mikunyan/typetrees/cbd196f0addd9143d0c36315c3c00349.dat +0 -0
- data/lib/mikunyan/typetrees/cbd6b8b86e0d05798e704eb7c8fff126.dat +0 -0
- data/lib/mikunyan/typetrees/cc38b2aee76814e979699396b0a1cfdf.dat +0 -0
- data/lib/mikunyan/typetrees/cc8f6e05143e049494c7eac0553f3883.dat +0 -0
- data/lib/mikunyan/typetrees/ccafc28ff2fb62c0cdf1694dddad079b.dat +0 -0
- data/lib/mikunyan/typetrees/ccd083c7c396a7a74c669ea21372897b.dat +0 -0
- data/lib/mikunyan/typetrees/cd04f39396ad93511bc1502e8e00ebb4.dat +0 -0
- data/lib/mikunyan/typetrees/cd0b1e6d795a4dc2b94ed471a625657e.dat +0 -0
- data/lib/mikunyan/typetrees/cd1cec16765c251d9e919147cf6d75c7.dat +0 -0
- data/lib/mikunyan/typetrees/cd299f8158c5d24d299bc2279a86222d.dat +0 -0
- data/lib/mikunyan/typetrees/cd3b5a93c404b34df1fac33b45db8014.dat +0 -0
- data/lib/mikunyan/typetrees/cd7036db3b0bbff750fff707bdce6daf.dat +0 -0
- data/lib/mikunyan/typetrees/cdecd039c577a343625b366d85a65f6b.dat +0 -0
- data/lib/mikunyan/typetrees/cdf9eaa879b1eb8edb28e8d7fa3781ce.dat +0 -0
- data/lib/mikunyan/typetrees/ce791e8dc4d4746cf247a6ac354e6f3e.dat +0 -0
- data/lib/mikunyan/typetrees/ce9c15fa0aa98a21872deef3bb0abf34.dat +0 -0
- data/lib/mikunyan/typetrees/ceb5d2c8db7960822dc7d09aa88560e9.dat +0 -0
- data/lib/mikunyan/typetrees/cf068435a0d00c8aed4a68588d17d84d.dat +0 -0
- data/lib/mikunyan/typetrees/cfcb6a2bde1d6c4a4d79aeda69a03c07.dat +0 -0
- data/lib/mikunyan/typetrees/cfcf0bf1fa4aa6ec8af172c71511c4c5.dat +0 -0
- data/lib/mikunyan/typetrees/d09ffdff0a7e59357e132c6ae6fbc684.dat +0 -0
- data/lib/mikunyan/typetrees/d0c0ea0c6027a67ea3393d78532a38fb.dat +0 -0
- data/lib/mikunyan/typetrees/d19c5b14d3d7fe6cdbba6b28f26bc5f4.dat +0 -0
- data/lib/mikunyan/typetrees/d1e5ac65e1fefbcda6d8529c7ccda50b.dat +0 -0
- data/lib/mikunyan/typetrees/d2235066094fe1c59efb053510588202.dat +0 -0
- data/lib/mikunyan/typetrees/d2e60ea70fea8a46f75f8a0b79e37085.dat +0 -0
- data/lib/mikunyan/typetrees/d327ffd20422395c6d4d0c7a2c64a4a4.dat +0 -0
- data/lib/mikunyan/typetrees/d34b5033c863b49dfd4099d9f3e33fe3.dat +0 -0
- data/lib/mikunyan/typetrees/d3e0b0fbe2d0a17d3800a352918ab265.dat +0 -0
- data/lib/mikunyan/typetrees/d463e5d17a1b3f4e2e2f1eb758afc38e.dat +0 -0
- data/lib/mikunyan/typetrees/d49ddfcb81983289b99cecbffd99d8d2.dat +0 -0
- data/lib/mikunyan/typetrees/d4e580aaf357b26f4871f454ab582ad2.dat +0 -0
- data/lib/mikunyan/typetrees/d50ed13362e98df8096b2f735131fce5.dat +0 -0
- data/lib/mikunyan/typetrees/d5b7bfdef1a7f9dcf49d5de2c66fb8fd.dat +0 -0
- data/lib/mikunyan/typetrees/d5d86f79c1252a3e0a705f20245b62b8.dat +0 -0
- data/lib/mikunyan/typetrees/d5e4d09396f117b44668f6c8641951fc.dat +0 -0
- data/lib/mikunyan/typetrees/d618295bd5f15441b5b80b1f57e92d09.dat +0 -0
- data/lib/mikunyan/typetrees/d624d87c75f079cf5797d57ac192e10d.dat +0 -0
- data/lib/mikunyan/typetrees/d666be4e5ffab140996a508b8f06b603.dat +0 -0
- data/lib/mikunyan/typetrees/d677ef142571961a07528e617aae530a.dat +0 -0
- data/lib/mikunyan/typetrees/d67a1e2b0bd2c0b45c1a642fa73fd86e.dat +0 -0
- data/lib/mikunyan/typetrees/d6b5627bef78f5332bb56ae8c96f34ab.dat +0 -0
- data/lib/mikunyan/typetrees/d6d471fc0db035cd0defecbfa79a4e28.dat +0 -0
- data/lib/mikunyan/typetrees/d77f09bf46daff2b01a707c22fcbc7ce.dat +0 -0
- data/lib/mikunyan/typetrees/d7aa5e4b473e8db1304692781a1f3b36.dat +0 -0
- data/lib/mikunyan/typetrees/d7beb51f676a59524f08312b07fa50f7.dat +0 -0
- data/lib/mikunyan/typetrees/d8082d7a3661a3f9ca00a93a61606585.dat +0 -0
- data/lib/mikunyan/typetrees/d8129cfedf80a401fc1b3ce0483b6193.dat +0 -0
- data/lib/mikunyan/typetrees/d819fe24897f62ed37bcd142f64cec80.dat +0 -0
- data/lib/mikunyan/typetrees/d82c324c1e384bdc4d7aabbdbf8dd810.dat +0 -0
- data/lib/mikunyan/typetrees/d871346d990bbc294d02f4c366bf1b6d.dat +0 -0
- data/lib/mikunyan/typetrees/d898fab65c5d063bc9112924123b5a04.dat +0 -0
- data/lib/mikunyan/typetrees/d8e8eeb43589ccd7019398e56f6c16b0.dat +0 -0
- data/lib/mikunyan/typetrees/d8f1b25bf145804bd41da2d64684d605.dat +0 -0
- data/lib/mikunyan/typetrees/d9333d68827fe2bdc8fa96fe1ce7999e.dat +0 -0
- data/lib/mikunyan/typetrees/d9b4fdc987ccf6d8f51cad51e0c670c6.dat +0 -0
- data/lib/mikunyan/typetrees/d9b73d39e28f3c5a204fa213d75eaea7.dat +0 -0
- data/lib/mikunyan/typetrees/da0763bf72eacb89ecd40739beb1ba31.dat +0 -0
- data/lib/mikunyan/typetrees/da3150094bf1eec8e02a26c939a77d05.dat +0 -0
- data/lib/mikunyan/typetrees/da594265aaa32ec1513c20e38a22fa2e.dat +0 -0
- data/lib/mikunyan/typetrees/da773af1b759eb7b7e78287900688f5d.dat +0 -0
- data/lib/mikunyan/typetrees/dad240b3d990c591b278699ec10e2713.dat +0 -0
- data/lib/mikunyan/typetrees/daea1bb1bba6613afb2cb001ca8fa0d4.dat +0 -0
- data/lib/mikunyan/typetrees/dafc7f89ba2f5601cd2526021334cfcd.dat +0 -0
- data/lib/mikunyan/typetrees/db088f9c2f2224da9f488879467856e5.dat +0 -0
- data/lib/mikunyan/typetrees/db262b9303bf96c55e2659bd9160e777.dat +0 -0
- data/lib/mikunyan/typetrees/db26e3ff617afe3cca8a02d00552384e.dat +0 -0
- data/lib/mikunyan/typetrees/dbc0e1ec44a805978e86400d908d4d5a.dat +0 -0
- data/lib/mikunyan/typetrees/dc20bb5dce8aed56990dd70f922fead8.dat +0 -0
- data/lib/mikunyan/typetrees/dc400e4ff2bb2f6cdca60904df0222f2.dat +0 -0
- data/lib/mikunyan/typetrees/dca16d4c10b4556ce0e9c6c86477b440.dat +0 -0
- data/lib/mikunyan/typetrees/dca74f64d0c6c5f509f6c2ce5004d66c.dat +0 -0
- data/lib/mikunyan/typetrees/dcc6d28c8eb43df915f267cc86333b22.dat +0 -0
- data/lib/mikunyan/typetrees/dccb16892b1b29f371d169ba3aadeb12.dat +0 -0
- data/lib/mikunyan/typetrees/dd60b1a6007dbd03008831cfd65e8022.dat +0 -0
- data/lib/mikunyan/typetrees/dd7e75f0d9d8a22fbe5235e6a80fc5ea.dat +0 -0
- data/lib/mikunyan/typetrees/dd8a8dc899d108bd73ea860b3c7b4b15.dat +0 -0
- data/lib/mikunyan/typetrees/ddb7ea81de202d2cefc209032a964347.dat +0 -0
- data/lib/mikunyan/typetrees/de60f732e8b03f6e641f80eccb420cce.dat +0 -0
- data/lib/mikunyan/typetrees/de8a0e72e5ae4d3290885d747ee2f795.dat +0 -0
- data/lib/mikunyan/typetrees/dedb7920e007cccc3ca975508f6311cd.dat +0 -0
- data/lib/mikunyan/typetrees/df01f78f4cb2cbed36b07db19999441e.dat +0 -0
- data/lib/mikunyan/typetrees/df2881fda3119da4394887df7b8e88de.dat +0 -0
- data/lib/mikunyan/typetrees/df50c70d41d6f24fa723847c2c7407f6.dat +0 -0
- data/lib/mikunyan/typetrees/df54f5406f3668f71b1ece65e3d4562f.dat +0 -0
- data/lib/mikunyan/typetrees/dfccf24e87b7a76d31300cfce8a0c8c3.dat +0 -0
- data/lib/mikunyan/typetrees/dff9668a0370d6e3f16d48d636add5bf.dat +0 -0
- data/lib/mikunyan/typetrees/e03bc577acb91ed2706fbeb58f51241a.dat +0 -0
- data/lib/mikunyan/typetrees/e0cc825cdb14661932d6c4bf8eeb597a.dat +0 -0
- data/lib/mikunyan/typetrees/e0da148901d81b94249c67d75de59cc6.dat +0 -0
- data/lib/mikunyan/typetrees/e13585c1bbc23c440db580ed3d0362dd.dat +0 -0
- data/lib/mikunyan/typetrees/e1931794ed428aa347fe3d987a8b5e6d.dat +0 -0
- data/lib/mikunyan/typetrees/e1e986a1b885972b1ff7b6905a2afbea.dat +0 -0
- data/lib/mikunyan/typetrees/e232e87951beb0fc3097191cb5aa968f.dat +0 -0
- data/lib/mikunyan/typetrees/e241f28178d3e724ea66416e5fe2736e.dat +0 -0
- data/lib/mikunyan/typetrees/e28c7475d2cb1a19cc7d210255f13d9a.dat +0 -0
- data/lib/mikunyan/typetrees/e28e40019ee35b908e56695a08f3c2dd.dat +0 -0
- data/lib/mikunyan/typetrees/e2dc296f9670fe78e3841d5fb16526f9.dat +0 -0
- data/lib/mikunyan/typetrees/e35dc2334427143c92b135fe05dc7499.dat +0 -0
- data/lib/mikunyan/typetrees/e4184d1639fc6d9a8101b66019fdb80b.dat +0 -0
- data/lib/mikunyan/typetrees/e42d5322b636717b1e982e6b9c08157e.dat +0 -0
- data/lib/mikunyan/typetrees/e4de96c0565383286459bb71ac3d4b85.dat +0 -0
- data/lib/mikunyan/typetrees/e5c6784d6aabe45f9896a4e094d5d72d.dat +0 -0
- data/lib/mikunyan/typetrees/e5f032f87a6e3b55a01f41073c64f14c.dat +0 -0
- data/lib/mikunyan/typetrees/e5f31cd4b52fedfd9e332593b92efbf2.dat +0 -0
- data/lib/mikunyan/typetrees/e605ecd82fcbccc59af10e5c18e21be0.dat +0 -0
- data/lib/mikunyan/typetrees/e66580394f7a6f4e216dbea294359b03.dat +0 -0
- data/lib/mikunyan/typetrees/e684e7e25dd1208ec3941c7772968ada.dat +0 -0
- data/lib/mikunyan/typetrees/e6b0a13d67395893ae32d073391c98af.dat +0 -0
- data/lib/mikunyan/typetrees/e6ccb0d2545a8b68470d8d4d75d1f393.dat +0 -0
- data/lib/mikunyan/typetrees/e70da99ccfbec08ec2d115a9f0ef2fd5.dat +0 -0
- data/lib/mikunyan/typetrees/e7920ac1d49d79dc3f687686799e0ecb.dat +0 -0
- data/lib/mikunyan/typetrees/e7c5c01b0369574e9346ce846e1e8e63.dat +0 -0
- data/lib/mikunyan/typetrees/e81731c627c30de466ff682b23d7c632.dat +0 -0
- data/lib/mikunyan/typetrees/e82f8100e40450d13763382e74934faa.dat +0 -0
- data/lib/mikunyan/typetrees/e8745221bf0bd118c59f77acbe2de613.dat +0 -0
- data/lib/mikunyan/typetrees/e8dfd8445172115d9ccd6f118c1beaef.dat +0 -0
- data/lib/mikunyan/typetrees/e913b190fb6ca58cd5cbb51754561bd1.dat +0 -0
- data/lib/mikunyan/typetrees/e91d61574d8fb627100d63a6ad9bfcab.dat +0 -0
- data/lib/mikunyan/typetrees/e95f93e7dffba80b23fbc5b44496b51e.dat +0 -0
- data/lib/mikunyan/typetrees/e96e85f943700fbdb57bb61d19aa730d.dat +0 -0
- data/lib/mikunyan/typetrees/e9c3c929e25ebe9de9505392a9426ec4.dat +0 -0
- data/lib/mikunyan/typetrees/e9f83061bf74a880b666d0539803c172.dat +0 -0
- data/lib/mikunyan/typetrees/ea9335449f130234d8486da657354acd.dat +0 -0
- data/lib/mikunyan/typetrees/eaf04b5cbffbbebfe7fe8a866f5ed3e3.dat +0 -0
- data/lib/mikunyan/typetrees/eb2806c128b82c691ff963bc0fa37038.dat +0 -0
- data/lib/mikunyan/typetrees/eb4711bbcbb00a279d29cd0cb734f6f1.dat +0 -0
- data/lib/mikunyan/typetrees/eb4bb38a272b5d85f159bc696932c343.dat +0 -0
- data/lib/mikunyan/typetrees/eb5cf6f66af0538b78f704b634162faa.dat +0 -0
- data/lib/mikunyan/typetrees/eb5e2816cebf56985ba81ee03349f325.dat +0 -0
- data/lib/mikunyan/typetrees/eb86f10c75a157897597106e42951b00.dat +0 -0
- data/lib/mikunyan/typetrees/eba8e3a474fde830eedf44a13f03493b.dat +0 -0
- data/lib/mikunyan/typetrees/ebc5a7a5411c30dea91bd80b1fcb71dd.dat +0 -0
- data/lib/mikunyan/typetrees/ebd4d04d411da3b590de51463d7584f6.dat +0 -0
- data/lib/mikunyan/typetrees/ec25d4a542c858ee7230bd1ff1768977.dat +0 -0
- data/lib/mikunyan/typetrees/ec6c2973d8ad71bc666598added919e2.dat +0 -0
- data/lib/mikunyan/typetrees/eca5aeef2c82a4fdf70258dadca6323a.dat +0 -0
- data/lib/mikunyan/typetrees/ed16c17652451d76127c1d415347ed23.dat +0 -0
- data/lib/mikunyan/typetrees/ed679b72116efeb79d041d5e3dee85ca.dat +0 -0
- data/lib/mikunyan/typetrees/ed76a79b75aebeb69ee5ad327b2c26d5.dat +0 -0
- data/lib/mikunyan/typetrees/ee8f51d166e4c36c87fa7528d9466862.dat +0 -0
- data/lib/mikunyan/typetrees/eebf7a0e1e861754c32f9d1e60da7441.dat +0 -0
- data/lib/mikunyan/typetrees/eef9fa4e8d272cd355b412791b976ddc.dat +0 -0
- data/lib/mikunyan/typetrees/ef03a9a9742d133cf3384f086e38d520.dat +0 -0
- data/lib/mikunyan/typetrees/ef442cab6e5b2a46e824bfc89123f18d.dat +0 -0
- data/lib/mikunyan/typetrees/f096c494641d018027771df703dae7e6.dat +0 -0
- data/lib/mikunyan/typetrees/f0b195f17349096039608cb289e89556.dat +0 -0
- data/lib/mikunyan/typetrees/f0c6a3bed58042425e17e3588613bb51.dat +0 -0
- data/lib/mikunyan/typetrees/f0dca30b01b82a4ab96277658e0d881b.dat +0 -0
- data/lib/mikunyan/typetrees/f0e0e320fc2816897ac3195551d8e4c5.dat +0 -0
- data/lib/mikunyan/typetrees/f0e3106a5e7d38edfe031abc0c11ce2a.dat +0 -0
- data/lib/mikunyan/typetrees/f123b055a61dfa7dc679d78cdaecd383.dat +0 -0
- data/lib/mikunyan/typetrees/f18647acbd67659ea3f45a97872f757b.dat +0 -0
- data/lib/mikunyan/typetrees/f1d3f171c0a6aa755d45ffe681516b65.dat +0 -0
- data/lib/mikunyan/typetrees/f2357d4424504d3797409ff6565e8e68.dat +0 -0
- data/lib/mikunyan/typetrees/f262f66cbdb4e8ec53bc0c21902fff33.dat +0 -0
- data/lib/mikunyan/typetrees/f26318c9a762d9dfe2990bc5c55b5210.dat +0 -0
- data/lib/mikunyan/typetrees/f284abb6f2df17ebedae2b6b50436810.dat +0 -0
- data/lib/mikunyan/typetrees/f2962bad2e61ec5e86287cfa284af6b4.dat +0 -0
- data/lib/mikunyan/typetrees/f2f0f99209263f27fcf761c6c20c5f2a.dat +0 -0
- data/lib/mikunyan/typetrees/f334a53f9a22db7ab446d9e59e60e53f.dat +0 -0
- data/lib/mikunyan/typetrees/f3998c4215bd94309ae5a56c52838094.dat +0 -0
- data/lib/mikunyan/typetrees/f42ed84d2873663c47f7c18efd8435c2.dat +0 -0
- data/lib/mikunyan/typetrees/f46f884b442e214dc17a8df302020320.dat +0 -0
- data/lib/mikunyan/typetrees/f532b7426ff24ff9247beee7720e3f42.dat +0 -0
- data/lib/mikunyan/typetrees/f54f7f1d24fb230b26b5fcfdf259cbe5.dat +0 -0
- data/lib/mikunyan/typetrees/f560c0e71bafc0222f509e6af590fed6.dat +0 -0
- data/lib/mikunyan/typetrees/f5b27e405af2e548e271d0f29a4fc21c.dat +0 -0
- data/lib/mikunyan/typetrees/f5b5fea04cce293cc62cf0f76ec5de49.dat +0 -0
- data/lib/mikunyan/typetrees/f5b73814acb8f989f4895cdcf9e3adfe.dat +0 -0
- data/lib/mikunyan/typetrees/f615a0c0f5849665cedca12a8fd64020.dat +0 -0
- data/lib/mikunyan/typetrees/f628e2d5cd5f7460380920e45b6a9266.dat +0 -0
- data/lib/mikunyan/typetrees/f6718cde49aeab7f67aefb7da858bbab.dat +0 -0
- data/lib/mikunyan/typetrees/f6ac78e7f50065f7c64f720fdeaa9390.dat +0 -0
- data/lib/mikunyan/typetrees/f6cd0e46d404dd7cbd7ad89ae2a4d7a9.dat +0 -0
- data/lib/mikunyan/typetrees/f7ea57efda613d6963a53144446638cf.dat +0 -0
- data/lib/mikunyan/typetrees/f7f1afe8ae04ddc34d023a09ed279e8d.dat +0 -0
- data/lib/mikunyan/typetrees/f811a923135bc4ee86dd31237b2ab06a.dat +0 -0
- data/lib/mikunyan/typetrees/f8377d7fe2ca5564e137d9f82a5b7fe5.dat +0 -0
- data/lib/mikunyan/typetrees/f83f9a801dfbac3b28bcee57ff29182f.dat +0 -0
- data/lib/mikunyan/typetrees/f92d618c5266ea3a8ca770b6eca728c8.dat +0 -0
- data/lib/mikunyan/typetrees/f983b0102ccb04ded5fd745943e862be.dat +0 -0
- data/lib/mikunyan/typetrees/f9a5bbb8c5391b4f94fc32542ab1f981.dat +0 -0
- data/lib/mikunyan/typetrees/faa71a41455d0e928529ff5b0b036af3.dat +0 -0
- data/lib/mikunyan/typetrees/fab5d0fd4c471ada3931c6ec7cf983ec.dat +0 -0
- data/lib/mikunyan/typetrees/fab9ae76e42df0fda7b88a0b103ac202.dat +0 -0
- data/lib/mikunyan/typetrees/face58ace35dbc4d23883cc9f9625a4f.dat +0 -0
- data/lib/mikunyan/typetrees/fad2d0a58e9174708176102b418facf1.dat +0 -0
- data/lib/mikunyan/typetrees/faf23bf08eb2a9759598748b2ed55c7a.dat +0 -0
- data/lib/mikunyan/typetrees/fb0635f60817266fc2448281f0e1bf8e.dat +0 -0
- data/lib/mikunyan/typetrees/fb734904d47701a0f2042181d6018c2f.dat +0 -0
- data/lib/mikunyan/typetrees/fbc6f8d82d3c39fe76174186e3b47e3b.dat +0 -0
- data/lib/mikunyan/typetrees/fbf6b031c32e461ee61be429e5fee7eb.dat +0 -0
- data/lib/mikunyan/typetrees/fc3125dbdb8e1f0607d135c1ae3414cb.dat +0 -0
- data/lib/mikunyan/typetrees/fc4d5e15f8c386c584aba84f72df32a6.dat +0 -0
- data/lib/mikunyan/typetrees/fccd9eb5f018e78d8dca6e9a2b63d656.dat +0 -0
- data/lib/mikunyan/typetrees/fcd09d1b65ada0699f1ee9ef752d98bb.dat +0 -0
- data/lib/mikunyan/typetrees/fce816c697c05580074a53812ffb4d26.dat +0 -0
- data/lib/mikunyan/typetrees/fcf3c3ff8300095cad677c7d6fcad3c1.dat +0 -0
- data/lib/mikunyan/typetrees/fd27a2cde103557bda73e902a622cd9d.dat +0 -0
- data/lib/mikunyan/typetrees/fd6f5cd3c75d7a3b4be7ca15f4d7ae9e.dat +0 -0
- data/lib/mikunyan/typetrees/fd961e9e4f3f3e5a32d3a30299105968.dat +0 -0
- data/lib/mikunyan/typetrees/fdd42e830fb415af977c2b2222b5d948.dat +0 -0
- data/lib/mikunyan/typetrees/fe0412c56eaa9e664d20b9ae98864e48.dat +0 -0
- data/lib/mikunyan/typetrees/fe3443710f1e93ed0fdb39a499dcad2e.dat +0 -0
- data/lib/mikunyan/typetrees/fe69769eea751f4dae4470a2d2a4f033.dat +0 -0
- data/lib/mikunyan/typetrees/fe94ca842ca0f4d66581e7d021fc5445.dat +0 -0
- data/lib/mikunyan/typetrees/feb462635cb14d7fc886781f76647359.dat +0 -0
- data/lib/mikunyan/typetrees/febce05d662e846d44276cb3ead554a9.dat +0 -0
- data/lib/mikunyan/typetrees/fefc3f27b196eb018086c22cba376f75.dat +0 -0
- data/lib/mikunyan/typetrees/ff001a2e51937aa5add9eaf9cd3d8ae4.dat +0 -0
- data/lib/mikunyan/typetrees/ff382d6c2780a3e68481688cce904104.dat +0 -0
- data/lib/mikunyan/typetrees/ff3a8cf3da343f8722464c416e3479ee.dat +0 -0
- data/lib/mikunyan/typetrees/ff8fa01e9243c910f7d7301b7586a1b1.dat +0 -0
- data/lib/mikunyan/typetrees/ffdc51773b4c4ce79ff982449bbbabff.dat +0 -0
- data/lib/mikunyan/typetrees/ffe1577ae998664adc2a48d23e3af64e.dat +0 -0
data/ext/decoders/native/astc.h
CHANGED
@@ -0,0 +1,87 @@
|
|
1
|
+
#ifndef COLOR_H
|
2
|
+
#define COLOR_H
|
3
|
+
|
4
|
+
#include <stdint.h>
|
5
|
+
#include <string.h>
|
6
|
+
#include "endianness.h"
|
7
|
+
|
8
|
+
#ifdef __LITTLE_ENDIAN__
|
9
|
+
static const uint_fast32_t TRANSPARENT_MASK = 0x00ffffff;
|
10
|
+
#else
|
11
|
+
static const uint_fast32_t TRANSPARENT_MASK = 0xffffff00;
|
12
|
+
#endif
|
13
|
+
|
14
|
+
static inline uint_fast32_t color(uint8_t r, uint8_t g, uint8_t b, uint8_t a) {
|
15
|
+
#ifdef __LITTLE_ENDIAN__
|
16
|
+
return r | g << 8 | b << 16 | a << 24;
|
17
|
+
#else
|
18
|
+
return a | b << 8 | g << 16 | r << 24;
|
19
|
+
#endif
|
20
|
+
}
|
21
|
+
|
22
|
+
static inline uint_fast32_t alpha_mask(uint8_t a) {
|
23
|
+
#ifdef __LITTLE_ENDIAN__
|
24
|
+
return TRANSPARENT_MASK | a << 24;
|
25
|
+
#else
|
26
|
+
return TRANSPARENT_MASK | a;
|
27
|
+
#endif
|
28
|
+
}
|
29
|
+
|
30
|
+
static inline void rgb565_le(const uint16_t d, uint8_t *r, uint8_t *g, uint8_t *b) {
|
31
|
+
#ifdef __LITTLE_ENDIAN__
|
32
|
+
*r = (d >> 8 & 0xf8) | (d >> 13);
|
33
|
+
*g = (d >> 3 & 0xfc) | (d >> 9 & 3);
|
34
|
+
*b = (d << 3) | (d >> 2 & 7);
|
35
|
+
#else
|
36
|
+
*r = (d & 0xf8) | (d >> 5 & 7);
|
37
|
+
*g = (d << 5 & 0xe0) | (d >> 11 & 0x1c) | (d >> 1 & 3);
|
38
|
+
*b = (d >> 5 & 0xf8) | (d >> 10 & 0x7);
|
39
|
+
#endif
|
40
|
+
}
|
41
|
+
|
42
|
+
static inline void rgb565_be(const uint16_t d, uint8_t *r, uint8_t *g, uint8_t *b) {
|
43
|
+
#ifdef __BIG_ENDIAN__
|
44
|
+
*r = (d >> 8 & 0xf8) | (d >> 13);
|
45
|
+
*g = (d >> 3 & 0xfc) | (d >> 9 & 3);
|
46
|
+
*b = (d << 3) | (d >> 2 & 7);
|
47
|
+
#else
|
48
|
+
*r = (d & 0xf8) | (d >> 5 & 7);
|
49
|
+
*g = (d << 5 & 0xe0) | (d >> 11 & 0x1c) | (d >> 1 & 3);
|
50
|
+
*b = (d >> 5 & 0xf8) | (d >> 10 & 0x7);
|
51
|
+
#endif
|
52
|
+
}
|
53
|
+
|
54
|
+
static inline void rgb565_lep(const uint16_t d, uint8_t *c) {
|
55
|
+
#ifdef __LITTLE_ENDIAN__
|
56
|
+
*(c++) = (d >> 8 & 0xf8) | (d >> 13);
|
57
|
+
*(c++) = (d >> 3 & 0xfc) | (d >> 9 & 3);
|
58
|
+
*(c++) = (d << 3) | (d >> 2 & 7);
|
59
|
+
#else
|
60
|
+
*(c++) = (d & 0xf8) | (d >> 5 & 7);
|
61
|
+
*(c++) = (d << 5 & 0xe0) | (d >> 11 & 0x1c) | (d >> 1 & 3);
|
62
|
+
*(c++) = (d >> 5 & 0xf8) | (d >> 10 & 0x7);
|
63
|
+
#endif
|
64
|
+
}
|
65
|
+
|
66
|
+
static inline void rgb565_bep(const uint16_t d, uint8_t *c) {
|
67
|
+
#ifdef __BIG_ENDIAN__
|
68
|
+
*(c++) = (d >> 8 & 0xf8) | (d >> 13);
|
69
|
+
*(c++) = (d >> 3 & 0xfc) | (d >> 9 & 3);
|
70
|
+
*(c++) = (d << 3) | (d >> 2 & 7);
|
71
|
+
#else
|
72
|
+
*(c++) = (d & 0xf8) | (d >> 5 & 7);
|
73
|
+
*(c++) = (d << 5 & 0xe0) | (d >> 11 & 0x1c) | (d >> 1 & 3);
|
74
|
+
*(c++) = (d >> 5 & 0xf8) | (d >> 10 & 0x7);
|
75
|
+
#endif
|
76
|
+
}
|
77
|
+
|
78
|
+
static inline void copy_block_buffer(const long bx, const long by, const long w, const long h, const long bw,
|
79
|
+
const long bh, const uint32_t *buffer, uint32_t *image) {
|
80
|
+
long x = bw * bx;
|
81
|
+
long xl = (bw * (bx + 1) > w ? w - bw * bx : bw) * 4;
|
82
|
+
const uint32_t *buffer_end = buffer + bw * bh;
|
83
|
+
for (long y = h - by * bh; buffer < buffer_end && y-- > 0; buffer += bw)
|
84
|
+
memcpy(image + y * w + x, buffer, xl);
|
85
|
+
}
|
86
|
+
|
87
|
+
#endif /* end of include guard: COLOR_H */
|
data/ext/decoders/native/dxtc.c
CHANGED
@@ -1,104 +1,77 @@
|
|
1
|
+
#include "dxtc.h"
|
1
2
|
#include <stdint.h>
|
2
3
|
#include <string.h>
|
3
|
-
#include "
|
4
|
-
|
5
|
-
static inline uint_fast32_t color(uint_fast32_t r, uint_fast32_t g, uint_fast32_t b, uint_fast32_t a) {
|
6
|
-
return r | g << 8 | b << 16 | a << 24;
|
7
|
-
}
|
8
|
-
|
9
|
-
static inline void rgb565(const uint_fast16_t c, int *r, int *g, int *b) {
|
10
|
-
*r = (c & 0xf800) >> 8;
|
11
|
-
*g = (c & 0x07e0) >> 3;
|
12
|
-
*b = (c & 0x001f) << 3;
|
13
|
-
*r |= *r >> 5;
|
14
|
-
*g |= *g >> 6;
|
15
|
-
*b |= *b >> 5;
|
16
|
-
}
|
4
|
+
#include "color.h"
|
5
|
+
#include "endianness.h"
|
17
6
|
|
18
|
-
static inline void decode_dxt1_block(const
|
19
|
-
|
20
|
-
int q0 = (
|
21
|
-
int q1 = (
|
22
|
-
|
23
|
-
|
24
|
-
uint_fast32_t c[4] = {
|
7
|
+
static inline void decode_dxt1_block(const uint8_t *data, uint32_t *outbuf) {
|
8
|
+
uint8_t r0, g0, b0, r1, g1, b1;
|
9
|
+
int q0 = *(uint16_t *)(data);
|
10
|
+
int q1 = *(uint16_t *)(data + 2);
|
11
|
+
rgb565_le(q0, &r0, &g0, &b0);
|
12
|
+
rgb565_le(q1, &r1, &g1, &b1);
|
13
|
+
uint_fast32_t c[4] = {color(r0, g0, b0, 255), color(r1, g1, b1, 255)};
|
25
14
|
if (q0 > q1) {
|
26
15
|
c[2] = color((r0 * 2 + r1) / 3, (g0 * 2 + g1) / 3, (b0 * 2 + b1) / 3, 255);
|
27
16
|
c[3] = color((r0 + r1 * 2) / 3, (g0 + g1 * 2) / 3, (b0 + b1 * 2) / 3, 255);
|
28
17
|
} else {
|
29
18
|
c[2] = color((r0 + r1) / 2, (g0 + g1) / 2, (b0 + b1) / 2, 255);
|
19
|
+
c[3] = color(0, 0, 0, 255);
|
30
20
|
}
|
31
|
-
uint_fast32_t d = *data
|
21
|
+
uint_fast32_t d = lton32(*(uint32_t *)(data + 4));
|
32
22
|
for (int i = 0; i < 16; i++, d >>= 2)
|
33
23
|
outbuf[i] = c[d & 3];
|
34
24
|
}
|
35
25
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
int clen = (s < bcw - 1 ? 4 : clen_last) * 4;
|
46
|
-
for (int i = 0, y = h - t * 4 - 1; i < 4 && y >= 0; i++, y--)
|
47
|
-
memcpy(image + y * w + s * 4, buf + i * 4, clen);
|
26
|
+
int decode_dxt1(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
27
|
+
long num_blocks_x = (w + 3) / 4;
|
28
|
+
long num_blocks_y = (h + 3) / 4;
|
29
|
+
uint32_t buffer[16];
|
30
|
+
const uint8_t *d = data;
|
31
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
32
|
+
for (long bx = 0; bx < num_blocks_x; bx++, d += 8) {
|
33
|
+
decode_dxt1_block(d, buffer);
|
34
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
48
35
|
}
|
49
36
|
}
|
37
|
+
return 1;
|
50
38
|
}
|
51
39
|
|
52
|
-
static inline void decode_dxt5_block(const
|
53
|
-
uint_fast32_t a[8] = {
|
40
|
+
static inline void decode_dxt5_block(const uint8_t *data, uint32_t *outbuf) {
|
41
|
+
uint_fast32_t a[8] = {data[0], data[1]};
|
54
42
|
if (a[0] > a[1]) {
|
55
|
-
a[2] = (a[0] * 6 + a[1]
|
43
|
+
a[2] = (a[0] * 6 + a[1]) / 7;
|
56
44
|
a[3] = (a[0] * 5 + a[1] * 2) / 7;
|
57
45
|
a[4] = (a[0] * 4 + a[1] * 3) / 7;
|
58
46
|
a[5] = (a[0] * 3 + a[1] * 4) / 7;
|
59
47
|
a[6] = (a[0] * 2 + a[1] * 5) / 7;
|
60
|
-
a[7] = (a[0]
|
48
|
+
a[7] = (a[0] + a[1] * 6) / 7;
|
61
49
|
} else {
|
62
|
-
a[2] = (a[0] * 4 + a[1]
|
50
|
+
a[2] = (a[0] * 4 + a[1]) / 5;
|
63
51
|
a[3] = (a[0] * 3 + a[1] * 2) / 5;
|
64
52
|
a[4] = (a[0] * 2 + a[1] * 3) / 5;
|
65
|
-
a[5] = (a[0]
|
53
|
+
a[5] = (a[0] + a[1] * 4) / 5;
|
54
|
+
a[6] = 0;
|
66
55
|
a[7] = 255;
|
67
56
|
}
|
68
57
|
for (int i = 0; i < 8; i++)
|
69
|
-
a[i]
|
70
|
-
|
71
|
-
|
72
|
-
int
|
73
|
-
|
74
|
-
rgb565(q0, &r0, &g0, &b0);
|
75
|
-
rgb565(q1, &r1, &g1, &b1);
|
76
|
-
uint_fast32_t c[4] = { color(r0, g0, b0, 0), color(r1, g1, b1, 0) };
|
77
|
-
if (q0 > q1) {
|
78
|
-
c[2] = color((r0 * 2 + r1) / 3, (g0 * 2 + g1) / 3, (b0 * 2 + b1) / 3, 0);
|
79
|
-
c[3] = color((r0 + r1 * 2) / 3, (g0 + g1 * 2) / 3, (b0 + b1 * 2) / 3, 0);
|
80
|
-
} else {
|
81
|
-
c[2] = color((r0 + r1) / 2, (g0 + g1) / 2, (b0 + b1) / 2, 0);
|
82
|
-
}
|
83
|
-
|
84
|
-
uint_fast64_t da = *data >> 16;
|
85
|
-
uint_fast32_t dc = *(data + 1) >> 32;
|
86
|
-
for (int i = 0; i < 16; i++, da >>= 3, dc >>= 2)
|
87
|
-
outbuf[i] = a[da & 7] | c[dc & 3];
|
58
|
+
a[i] = alpha_mask(a[i]);
|
59
|
+
decode_dxt1_block(data + 8, outbuf);
|
60
|
+
uint_fast64_t d = lton64(*(uint64_t *)data) >> 16;
|
61
|
+
for (int i = 0; i < 16; i++, d >>= 3)
|
62
|
+
outbuf[i] &= a[d & 7];
|
88
63
|
}
|
89
64
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
int clen = (s < bcw - 1 ? 4 : clen_last) * 4;
|
100
|
-
for (int i = 0, y = h - t * 4 - 1; i < 4 && y >= 0; i++, y--)
|
101
|
-
memcpy(image + y * w + s * 4, buf + i * 4, clen);
|
65
|
+
int decode_dxt5(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
66
|
+
long num_blocks_x = (w + 3) / 4;
|
67
|
+
long num_blocks_y = (h + 3) / 4;
|
68
|
+
uint32_t buffer[16];
|
69
|
+
const uint8_t *d = data;
|
70
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
71
|
+
for (long bx = 0; bx < num_blocks_x; bx++, d += 16) {
|
72
|
+
decode_dxt5_block(d, buffer);
|
73
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
102
74
|
}
|
103
75
|
}
|
76
|
+
return 1;
|
104
77
|
}
|
data/ext/decoders/native/dxtc.h
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
#include <stdint.h>
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
int decode_dxt1(const uint8_t *, const long, const long, uint32_t *);
|
7
|
+
int decode_dxt5(const uint8_t *, const long, const long, uint32_t *);
|
8
8
|
|
9
9
|
#endif /* end of include guard: DXTC_H */
|
@@ -0,0 +1,180 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* License Information
|
4
|
+
*
|
5
|
+
* endianness.h is derived from https://gist.github.com/jtbr/7a43e6281e6cca353b33ee501421860c
|
6
|
+
* The file is licensed under the MIT License shown below.
|
7
|
+
*
|
8
|
+
*
|
9
|
+
* The MIT License (MIT)
|
10
|
+
*
|
11
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
12
|
+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
13
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
14
|
+
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
15
|
+
*
|
16
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
17
|
+
* Software.
|
18
|
+
*
|
19
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
20
|
+
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
21
|
+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
22
|
+
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
*
|
24
|
+
*/
|
25
|
+
|
26
|
+
#ifndef _ENDIANNESS_H
|
27
|
+
#define _ENDIANNESS_H
|
28
|
+
|
29
|
+
#include <stdlib.h>
|
30
|
+
#include <stdint.h>
|
31
|
+
|
32
|
+
/* Detect platform endianness at compile time */
|
33
|
+
|
34
|
+
// If boost were available on all platforms, could use this instead to detect endianness
|
35
|
+
// #include <boost/predef/endian.h>
|
36
|
+
|
37
|
+
// When available, these headers can improve platform endianness detection
|
38
|
+
#ifdef __has_include // C++17, supported as extension to C++11 in clang, GCC 5+, vs2015
|
39
|
+
#if __has_include(<endian.h>)
|
40
|
+
#include <endian.h> // gnu libc normally provides, linux
|
41
|
+
#elif __has_include(<machine/endian.h>)
|
42
|
+
#include <machine/endian.h> //open bsd, macos
|
43
|
+
#elif __has_include(<sys/param.h>)
|
44
|
+
#include <sys/param.h> // mingw, some bsd (not open/macos)
|
45
|
+
#elif __has_include(<sys/isadefs.h>)
|
46
|
+
#include <sys/isadefs.h> // solaris
|
47
|
+
#endif
|
48
|
+
#endif
|
49
|
+
|
50
|
+
#if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
|
51
|
+
#if (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \
|
52
|
+
(defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN) || (defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN) || \
|
53
|
+
(defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN) || (defined(__sun) && defined(__SVR4) && defined(_BIG_ENDIAN)) || \
|
54
|
+
defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || defined(_MIBSEB) || defined(__MIBSEB) || \
|
55
|
+
defined(__MIBSEB__) || defined(_M_PPC)
|
56
|
+
#define __BIG_ENDIAN__
|
57
|
+
#elif (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || /* gcc */ \
|
58
|
+
(defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) /* linux header */ || \
|
59
|
+
(defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN) || \
|
60
|
+
(defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN) /* mingw header */ || \
|
61
|
+
(defined(__sun) && defined(__SVR4) && defined(_LITTLE_ENDIAN)) || /* solaris */ \
|
62
|
+
defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || defined(_MIPSEL) || defined(__MIPSEL) || \
|
63
|
+
defined(__MIPSEL__) || defined(_M_IX86) || defined(_M_X64) || defined(_M_IA64) || /* msvc for intel processors */ \
|
64
|
+
defined(_M_ARM) /* msvc code on arm executes in little endian mode */
|
65
|
+
#define __LITTLE_ENDIAN__
|
66
|
+
#endif
|
67
|
+
#endif
|
68
|
+
|
69
|
+
#ifdef bswap16
|
70
|
+
#undef bswap16
|
71
|
+
#endif
|
72
|
+
#ifdef bswap32
|
73
|
+
#undef bswap32
|
74
|
+
#endif
|
75
|
+
#ifdef bswap64
|
76
|
+
#undef bswap64
|
77
|
+
#endif
|
78
|
+
|
79
|
+
/* Define byte-swap functions, using fast processor-native built-ins where possible */
|
80
|
+
// needs to be first because msvc doesn't short-circuit after failing defined(__has_builtin)
|
81
|
+
#if defined(_MSC_VER)
|
82
|
+
#define bswap16(x) _byteswap_ushort((x))
|
83
|
+
#define bswap32(x) _byteswap_ulong((x))
|
84
|
+
#define bswap64(x) _byteswap_uint64((x))
|
85
|
+
#elif (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
|
86
|
+
#define bswap16(x) __builtin_bswap16((x))
|
87
|
+
#define bswap32(x) __builtin_bswap32((x))
|
88
|
+
#define bswap64(x) __builtin_bswap64((x))
|
89
|
+
#elif defined(__has_builtin) && __has_builtin(__builtin_bswap64)
|
90
|
+
/* for clang; gcc 5 fails on this and && shortcircuit fails; must be after GCC check */
|
91
|
+
#define bswap16(x) __builtin_bswap16((x))
|
92
|
+
#define bswap32(x) __builtin_bswap32((x))
|
93
|
+
#define bswap64(x) __builtin_bswap64((x))
|
94
|
+
#else
|
95
|
+
/* even in this case, compilers often optimize by using native instructions */
|
96
|
+
static inline uint16_t bswap16(uint16_t x) {
|
97
|
+
return (((x >> 8) & 0xffu) | ((x & 0xffu) << 8));
|
98
|
+
}
|
99
|
+
static inline uint32_t bswap32(uint32_t x) {
|
100
|
+
return (((x & 0xff000000u) >> 24) | ((x & 0x00ff0000u) >> 8) | ((x & 0x0000ff00u) << 8) |
|
101
|
+
((x & 0x000000ffu) << 24));
|
102
|
+
}
|
103
|
+
static inline uint64_t bswap64(uint64_t x) {
|
104
|
+
return (((x & 0xff00000000000000ull) >> 56) | ((x & 0x00ff000000000000ull) >> 40) |
|
105
|
+
((x & 0x0000ff0000000000ull) >> 24) | ((x & 0x000000ff00000000ull) >> 8) |
|
106
|
+
((x & 0x00000000ff000000ull) << 8) | ((x & 0x0000000000ff0000ull) << 24) |
|
107
|
+
((x & 0x000000000000ff00ull) << 40) | ((x & 0x00000000000000ffull) << 56));
|
108
|
+
}
|
109
|
+
#endif
|
110
|
+
|
111
|
+
|
112
|
+
/* Defines network - host byte swaps as needed depending upon platform endianness */
|
113
|
+
// note that network order is big endian)
|
114
|
+
|
115
|
+
#if defined(__LITTLE_ENDIAN__)
|
116
|
+
#define ntoh16(x) bswap16((x))
|
117
|
+
#define hton16(x) bswap16((x))
|
118
|
+
#define ntoh32(x) bswap32((x))
|
119
|
+
#define hton32(x) bswap32((x))
|
120
|
+
#define ntoh64(x) bswap64((x))
|
121
|
+
#define hton64(x) bswap64((x))
|
122
|
+
#define lton16(x) (x)
|
123
|
+
#define lton32(x) (x)
|
124
|
+
#define lton64(x) (x)
|
125
|
+
#define ltonf(x) (x)
|
126
|
+
#define ltond(x) (x)
|
127
|
+
#define bton16(x) bswap16((x))
|
128
|
+
#define bton32(x) bswap32((x))
|
129
|
+
#define bton64(x) bswap64((x))
|
130
|
+
#define btonf(x) htonf((x))
|
131
|
+
#define btond(x) htond((x))
|
132
|
+
#elif defined(__BIG_ENDIAN__)
|
133
|
+
#define ntoh16(x) (x)
|
134
|
+
#define hton16(x) (x)
|
135
|
+
#define ntoh32(x) (x)
|
136
|
+
#define hton32(x) (x)
|
137
|
+
#define ntoh64(x) (x)
|
138
|
+
#define hton64(x) (x)
|
139
|
+
#define bton16(x) (x)
|
140
|
+
#define bton32(x) (x)
|
141
|
+
#define bton64(x) (x)
|
142
|
+
#define btonf(x) (x)
|
143
|
+
#define btond(x) (x)
|
144
|
+
#define lton16(x) bswap16((x))
|
145
|
+
#define lton32(x) bswap32((x))
|
146
|
+
#define lton64(x) bswap64((x))
|
147
|
+
#define ltonf(x) htonf((x))
|
148
|
+
#define ltond(x) htond((x))
|
149
|
+
#else
|
150
|
+
#warning "UNKNOWN Platform / endianness; network / host byte swaps not defined."
|
151
|
+
#endif
|
152
|
+
|
153
|
+
|
154
|
+
//! Convert 32-bit float from host to network byte order
|
155
|
+
static inline float htonf(float f) {
|
156
|
+
#ifdef __cplusplus
|
157
|
+
static_assert(sizeof(float) == sizeof(uint32_t), "Unexpected float format");
|
158
|
+
uint32_t val = hton32(*(reinterpret_cast<const uint32_t *>(&f)));
|
159
|
+
return *(reinterpret_cast<float *>(&val));
|
160
|
+
#else
|
161
|
+
uint32_t val = hton32(*(const uint32_t *)(&f));
|
162
|
+
return *((float *)(&val));
|
163
|
+
#endif
|
164
|
+
}
|
165
|
+
#define ntohf(x) htonf((x))
|
166
|
+
|
167
|
+
//! Convert 64-bit double from host to network byte order
|
168
|
+
static inline double htond(double f) {
|
169
|
+
#ifdef __cplusplus
|
170
|
+
static_assert(sizeof(double) == sizeof(uint64_t), "Unexpected double format");
|
171
|
+
uint64_t val = hton64(*(reinterpret_cast<const uint64_t *>(&f)));
|
172
|
+
return *(reinterpret_cast<double *>(&val));
|
173
|
+
#else
|
174
|
+
uint64_t val = hton64(*(const uint64_t *)(&f));
|
175
|
+
return *((double *)(&val));
|
176
|
+
#endif
|
177
|
+
}
|
178
|
+
#define ntohd(x) htond((x))
|
179
|
+
|
180
|
+
#endif //_ENDIANNESS_H
|
data/ext/decoders/native/etc.c
CHANGED
@@ -1,34 +1,25 @@
|
|
1
|
+
#include "etc.h"
|
1
2
|
#include <stdint.h>
|
2
3
|
#include <string.h>
|
3
|
-
#include "
|
4
|
+
#include "color.h"
|
4
5
|
|
5
|
-
uint_fast8_t WriteOrderTable[16] = {
|
6
|
-
uint_fast8_t WriteOrderTableRev[16] = {
|
7
|
-
uint_fast8_t Etc1ModifierTable[8][2] = {{2, 8},
|
8
|
-
|
9
|
-
uint_fast8_t
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
{-2, -5, -7, -10, 1, 4, 6, 9},
|
23
|
-
{-3, -4, -7, -10, 2, 3, 6, 9},
|
24
|
-
{-1, -2, -3, -10, 0, 1, 2, 9},
|
25
|
-
{-4, -6, -8, -9, 3, 5, 7, 8},
|
26
|
-
{-3, -5, -7, -9, 2, 4, 6, 8}
|
27
|
-
};
|
28
|
-
|
29
|
-
static inline uint_fast32_t color(uint_fast32_t r, uint_fast32_t g, uint_fast32_t b, uint_fast32_t a) {
|
30
|
-
return r | g << 8 | b << 16 | a << 24;
|
31
|
-
}
|
6
|
+
const uint_fast8_t WriteOrderTable[16] = {0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15};
|
7
|
+
const uint_fast8_t WriteOrderTableRev[16] = {15, 11, 7, 3, 14, 10, 6, 2, 13, 9, 5, 1, 12, 8, 4, 0};
|
8
|
+
const uint_fast8_t Etc1ModifierTable[8][2] = {{2, 8}, {5, 17}, {9, 29}, {13, 42},
|
9
|
+
{18, 60}, {24, 80}, {33, 106}, {47, 183}};
|
10
|
+
const uint_fast8_t Etc2aModifierTable[2][8][2] = {
|
11
|
+
{{0, 8}, {0, 17}, {0, 29}, {0, 42}, {0, 60}, {0, 80}, {0, 106}, {0, 183}},
|
12
|
+
{{2, 8}, {5, 17}, {9, 29}, {13, 42}, {18, 60}, {24, 80}, {33, 106}, {47, 183}}};
|
13
|
+
const uint_fast8_t Etc1SubblockTable[2][16] = {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},
|
14
|
+
{0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1}};
|
15
|
+
const uint_fast8_t Etc2DistanceTable[8] = {3, 6, 11, 16, 23, 32, 41, 64};
|
16
|
+
const int_fast8_t Etc2AlphaModTable[16][8] = {
|
17
|
+
{-3, -6, -9, -15, 2, 5, 8, 14}, {-3, -7, -10, -13, 2, 6, 9, 12}, {-2, -5, -8, -13, 1, 4, 7, 12},
|
18
|
+
{-2, -4, -6, -13, 1, 3, 5, 12}, {-3, -6, -8, -12, 2, 5, 7, 11}, {-3, -7, -9, -11, 2, 6, 8, 10},
|
19
|
+
{-4, -7, -8, -11, 3, 6, 7, 10}, {-3, -5, -8, -11, 2, 4, 7, 10}, {-2, -6, -8, -10, 1, 5, 7, 9},
|
20
|
+
{-2, -5, -8, -10, 1, 4, 7, 9}, {-2, -4, -8, -10, 1, 3, 7, 9}, {-2, -5, -7, -10, 1, 4, 6, 9},
|
21
|
+
{-3, -4, -7, -10, 2, 3, 6, 9}, {-1, -2, -3, -10, 0, 1, 2, 9}, {-4, -6, -8, -9, 3, 5, 7, 8},
|
22
|
+
{-3, -5, -7, -9, 2, 4, 6, 8}};
|
32
23
|
|
33
24
|
static inline uint_fast8_t clamp(const int n) {
|
34
25
|
return n < 0 ? 0 : n > 255 ? 255 : n;
|
@@ -38,15 +29,20 @@ static inline uint32_t applicate_color(uint_fast8_t c[3], int_fast16_t m) {
|
|
38
29
|
return color(clamp(c[0] + m), clamp(c[1] + m), clamp(c[2] + m), 255);
|
39
30
|
}
|
40
31
|
|
32
|
+
static inline uint32_t applicate_color_alpha(uint_fast8_t c[3], int_fast16_t m, int transparent) {
|
33
|
+
return color(clamp(c[0] + m), clamp(c[1] + m), clamp(c[2] + m), transparent ? 0 : 255);
|
34
|
+
}
|
35
|
+
|
41
36
|
static inline uint32_t applicate_color_raw(uint_fast8_t c[3]) {
|
42
37
|
return color(c[0], c[1], c[2], 255);
|
43
38
|
}
|
44
39
|
|
45
|
-
static
|
46
|
-
uint_fast8_t code[2] = {
|
47
|
-
uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
40
|
+
static void decode_etc1_block(const uint8_t *data, uint32_t *outbuf) {
|
41
|
+
const uint_fast8_t code[2] = {data[3] >> 5, data[3] >> 2 & 7}; // Table codewords
|
42
|
+
const uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
48
43
|
uint_fast8_t c[2][3];
|
49
44
|
if (data[3] & 2) {
|
45
|
+
// diff bit == 1
|
50
46
|
c[0][0] = data[0] & 0xf8;
|
51
47
|
c[0][1] = data[1] & 0xf8;
|
52
48
|
c[0][2] = data[2] & 0xf8;
|
@@ -60,16 +56,17 @@ static inline void decode_etc1_block(const uint8_t *data, uint32_t *outbuf) {
|
|
60
56
|
c[1][1] |= c[1][1] >> 5;
|
61
57
|
c[1][2] |= c[1][2] >> 5;
|
62
58
|
} else {
|
63
|
-
|
64
|
-
c[
|
65
|
-
c[
|
66
|
-
c[
|
67
|
-
c[
|
68
|
-
c[
|
59
|
+
// diff bit == 0
|
60
|
+
c[0][0] = (data[0] & 0xf0) | data[0] >> 4;
|
61
|
+
c[1][0] = (data[0] & 0x0f) | data[0] << 4;
|
62
|
+
c[0][1] = (data[1] & 0xf0) | data[1] >> 4;
|
63
|
+
c[1][1] = (data[1] & 0x0f) | data[1] << 4;
|
64
|
+
c[0][2] = (data[2] & 0xf0) | data[2] >> 4;
|
65
|
+
c[1][2] = (data[2] & 0x0f) | data[2] << 4;
|
69
66
|
}
|
70
67
|
|
71
|
-
uint_fast16_t j = data[6] << 8 | data[7];
|
72
|
-
uint_fast16_t k = data[4] << 8 | data[5];
|
68
|
+
uint_fast16_t j = data[6] << 8 | data[7]; // less significant pixel index bits
|
69
|
+
uint_fast16_t k = data[4] << 8 | data[5]; // more significant pixel index bits
|
73
70
|
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1) {
|
74
71
|
uint_fast8_t s = table[i];
|
75
72
|
uint_fast8_t m = Etc1ModifierTable[code[s]][j & 1];
|
@@ -77,28 +74,13 @@ static inline void decode_etc1_block(const uint8_t *data, uint32_t *outbuf) {
|
|
77
74
|
}
|
78
75
|
}
|
79
76
|
|
80
|
-
void
|
81
|
-
|
82
|
-
|
83
|
-
int clen_last = (w + 3) % 4 + 1;
|
84
|
-
uint32_t buf[16];
|
85
|
-
const uint8_t *d = (uint8_t*)data;
|
86
|
-
for (int t = 0; t < bch; t++) {
|
87
|
-
for (int s = 0; s < bcw; s++, d += 8) {
|
88
|
-
decode_etc1_block(d, buf);
|
89
|
-
int clen = (s < bcw - 1 ? 4 : clen_last) * 4;
|
90
|
-
for (int i = 0, y = h - t * 4 - 1; i < 4 && y >= 0; i++, y--)
|
91
|
-
memcpy(image + y * w + s * 4, buf + i * 4, clen);
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}
|
95
|
-
|
96
|
-
static inline void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
97
|
-
uint_fast16_t j = data[6] << 8 | data[7];
|
98
|
-
uint_fast16_t k = data[4] << 8 | data[5];
|
77
|
+
static void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
78
|
+
uint_fast16_t j = data[6] << 8 | data[7]; // 15 -> 0
|
79
|
+
uint_fast32_t k = data[4] << 8 | data[5]; // 31 -> 16
|
99
80
|
uint_fast8_t c[3][3] = {};
|
100
81
|
|
101
82
|
if (data[3] & 2) {
|
83
|
+
// diff bit == 1
|
102
84
|
uint_fast8_t r = data[0] & 0xf8;
|
103
85
|
int_fast16_t dr = (data[0] << 3 & 0x18) - (data[0] << 3 & 0x20);
|
104
86
|
uint_fast8_t g = data[1] & 0xf8;
|
@@ -107,57 +89,52 @@ static inline void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
|
107
89
|
int_fast16_t db = (data[2] << 3 & 0x18) - (data[2] << 3 & 0x20);
|
108
90
|
if (r + dr < 0 || r + dr > 255) {
|
109
91
|
// T
|
110
|
-
c[0][0] = data[0] << 3 & 0xc0 | data[0] << 4 & 0x30 | data[0] >> 1 & 0xc | data[0] & 3;
|
111
|
-
c[0][1] = data[1] & 0xf0 | data[1] >> 4;
|
112
|
-
c[0][2] = data[1] & 0x0f | data[1] << 4;
|
113
|
-
c[1][0] = data[2] & 0xf0 | data[2] >> 4;
|
114
|
-
c[1][1] = data[2] & 0x0f | data[2] << 4;
|
115
|
-
c[1][2] = data[3] & 0xf0 | data[3] >> 4;
|
116
|
-
uint_fast8_t d = Etc2DistanceTable[data[3] >> 1 & 6 | data[3] & 1];
|
117
|
-
uint_fast32_t color_set[4] = {
|
118
|
-
|
119
|
-
|
120
|
-
applicate_color_raw(c[1]),
|
121
|
-
applicate_color(c[1], -d)
|
122
|
-
};
|
92
|
+
c[0][0] = (data[0] << 3 & 0xc0) | (data[0] << 4 & 0x30) | (data[0] >> 1 & 0xc) | (data[0] & 3);
|
93
|
+
c[0][1] = (data[1] & 0xf0) | data[1] >> 4;
|
94
|
+
c[0][2] = (data[1] & 0x0f) | data[1] << 4;
|
95
|
+
c[1][0] = (data[2] & 0xf0) | data[2] >> 4;
|
96
|
+
c[1][1] = (data[2] & 0x0f) | data[2] << 4;
|
97
|
+
c[1][2] = (data[3] & 0xf0) | data[3] >> 4;
|
98
|
+
const uint_fast8_t d = Etc2DistanceTable[(data[3] >> 1 & 6) | (data[3] & 1)];
|
99
|
+
uint_fast32_t color_set[4] = {applicate_color_raw(c[0]), applicate_color(c[1], d),
|
100
|
+
applicate_color_raw(c[1]), applicate_color(c[1], -d)};
|
101
|
+
k <<= 1;
|
123
102
|
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1)
|
124
|
-
outbuf[WriteOrderTable[i]] = color_set[k
|
103
|
+
outbuf[WriteOrderTable[i]] = color_set[(k & 2) | (j & 1)];
|
125
104
|
} else if (g + dg < 0 || g + dg > 255) {
|
126
105
|
// H
|
127
|
-
c[0][0] = data[0] << 1 & 0xf0 | data[0] >> 3 & 0xf;
|
128
|
-
c[0][1] = data[0] << 5 & 0xe0 | data[1] & 0x10;
|
106
|
+
c[0][0] = (data[0] << 1 & 0xf0) | (data[0] >> 3 & 0xf);
|
107
|
+
c[0][1] = (data[0] << 5 & 0xe0) | (data[1] & 0x10);
|
129
108
|
c[0][1] |= c[0][1] >> 4;
|
130
|
-
c[0][2] = data[1] & 8 | data[1] << 1 & 6 | data[2] >> 7;
|
109
|
+
c[0][2] = (data[1] & 8) | (data[1] << 1 & 6) | data[2] >> 7;
|
131
110
|
c[0][2] |= c[0][2] << 4;
|
132
|
-
c[1][0] = data[2] << 1 & 0xf0 | data[2] >> 3 & 0xf;
|
133
|
-
c[1][1] = data[2] << 5 & 0xe0 | data[3] >> 3 & 0x10;
|
111
|
+
c[1][0] = (data[2] << 1 & 0xf0) | (data[2] >> 3 & 0xf);
|
112
|
+
c[1][1] = (data[2] << 5 & 0xe0) | (data[3] >> 3 & 0x10);
|
134
113
|
c[1][1] |= c[1][1] >> 4;
|
135
|
-
c[1][2] = data[3] << 1 & 0xf0 | data[3] >> 3 & 0xf;
|
136
|
-
uint_fast8_t d = data[3] & 4 | data[3] << 1 & 2;
|
137
|
-
if (c[0][0] > c[1][0] ||
|
114
|
+
c[1][2] = (data[3] << 1 & 0xf0) | (data[3] >> 3 & 0xf);
|
115
|
+
uint_fast8_t d = (data[3] & 4) | (data[3] << 1 & 2);
|
116
|
+
if (c[0][0] > c[1][0] ||
|
117
|
+
(c[0][0] == c[1][0] && (c[0][1] > c[1][1] || (c[0][1] == c[1][1] && c[0][2] >= c[1][2]))))
|
138
118
|
++d;
|
139
119
|
d = Etc2DistanceTable[d];
|
140
|
-
uint_fast32_t color_set[4] = {
|
141
|
-
|
142
|
-
|
143
|
-
applicate_color(c[1], d),
|
144
|
-
applicate_color(c[1], -d)
|
145
|
-
};
|
120
|
+
uint_fast32_t color_set[4] = {applicate_color(c[0], d), applicate_color(c[0], -d), applicate_color(c[1], d),
|
121
|
+
applicate_color(c[1], -d)};
|
122
|
+
k <<= 1;
|
146
123
|
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1)
|
147
|
-
outbuf[WriteOrderTable[i]] = color_set[k
|
124
|
+
outbuf[WriteOrderTable[i]] = color_set[(k & 2) | (j & 1)];
|
148
125
|
} else if (b + db < 0 || b + db > 255) {
|
149
126
|
// planar
|
150
|
-
c[0][0] = data[0] << 1 & 0xfc | data[0] >> 5 & 3;
|
151
|
-
c[0][1] = data[0] << 7 & 0x80 | data[1] & 0x7e | data[0] & 1;
|
152
|
-
c[0][2] = data[1] << 7 & 0x80 | data[2] << 2 & 0x60 | data[2] << 3 & 0x18 | data[3] >> 5 & 4;
|
127
|
+
c[0][0] = (data[0] << 1 & 0xfc) | (data[0] >> 5 & 3);
|
128
|
+
c[0][1] = (data[0] << 7 & 0x80) | (data[1] & 0x7e) | (data[0] & 1);
|
129
|
+
c[0][2] = (data[1] << 7 & 0x80) | (data[2] << 2 & 0x60) | (data[2] << 3 & 0x18) | (data[3] >> 5 & 4);
|
153
130
|
c[0][2] |= c[0][2] >> 6;
|
154
|
-
c[1][0] = data[3] << 1 & 0xf8 | data[3] << 2 & 4 | data[3] >> 5 & 3;
|
155
|
-
c[1][1] = data[4] & 0xfe | data[4] >> 7;
|
156
|
-
c[1][2] = data[4] << 7 & 0x80 | data[5] >> 1 & 0x7c;
|
131
|
+
c[1][0] = (data[3] << 1 & 0xf8) | (data[3] << 2 & 4) | (data[3] >> 5 & 3);
|
132
|
+
c[1][1] = (data[4] & 0xfe) | data[4] >> 7;
|
133
|
+
c[1][2] = (data[4] << 7 & 0x80) | (data[5] >> 1 & 0x7c);
|
157
134
|
c[1][2] |= c[1][2] >> 6;
|
158
|
-
c[2][0] = data[5] << 5 & 0xe0 | data[6] >> 3 & 0x1c | data[5] >> 1 & 3;
|
159
|
-
c[2][1] = data[6] << 3 & 0xf8 | data[7] >> 5 & 0x6 | data[6] >> 4 & 1;
|
160
|
-
c[2][2] = data[7] << 2 | data[7] >> 4 & 3;
|
135
|
+
c[2][0] = (data[5] << 5 & 0xe0) | (data[6] >> 3 & 0x1c) | (data[5] >> 1 & 3);
|
136
|
+
c[2][1] = (data[6] << 3 & 0xf8) | (data[7] >> 5 & 0x6) | (data[6] >> 4 & 1);
|
137
|
+
c[2][2] = data[7] << 2 | (data[7] >> 4 & 3);
|
161
138
|
for (int y = 0, i = 0; y < 4; y++) {
|
162
139
|
for (int x = 0; x < 4; x++, i++) {
|
163
140
|
uint8_t r = clamp((x * (c[1][0] - c[0][0]) + y * (c[2][0] - c[0][0]) + 4 * c[0][0] + 2) >> 2);
|
@@ -168,8 +145,8 @@ static inline void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
|
168
145
|
}
|
169
146
|
} else {
|
170
147
|
// differential
|
171
|
-
uint_fast8_t code[2] = {
|
172
|
-
uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
148
|
+
const uint_fast8_t code[2] = {data[3] >> 5, data[3] >> 2 & 7};
|
149
|
+
const uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
173
150
|
c[0][0] = r | r >> 5;
|
174
151
|
c[0][1] = g | g >> 5;
|
175
152
|
c[0][2] = b | b >> 5;
|
@@ -186,15 +163,15 @@ static inline void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
|
186
163
|
}
|
187
164
|
}
|
188
165
|
} else {
|
189
|
-
// individual
|
190
|
-
uint_fast8_t code[2] = {
|
191
|
-
uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
192
|
-
c[0][0] = data[0] & 0xf0 | data[0] >> 4;
|
193
|
-
c[1][0] = data[0] & 0x0f | data[0] << 4;
|
194
|
-
c[0][1] = data[1] & 0xf0 | data[1] >> 4;
|
195
|
-
c[1][1] = data[1] & 0x0f | data[1] << 4;
|
196
|
-
c[0][2] = data[2] & 0xf0 | data[2] >> 4;
|
197
|
-
c[1][2] = data[2] & 0x0f | data[2] << 4;
|
166
|
+
// individual (diff bit == 0)
|
167
|
+
const uint_fast8_t code[2] = {data[3] >> 5, data[3] >> 2 & 7};
|
168
|
+
const uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
169
|
+
c[0][0] = (data[0] & 0xf0) | data[0] >> 4;
|
170
|
+
c[1][0] = (data[0] & 0x0f) | data[0] << 4;
|
171
|
+
c[0][1] = (data[1] & 0xf0) | data[1] >> 4;
|
172
|
+
c[1][1] = (data[1] & 0x0f) | data[1] << 4;
|
173
|
+
c[0][2] = (data[2] & 0xf0) | data[2] >> 4;
|
174
|
+
c[1][2] = (data[2] & 0x0f) | data[2] << 4;
|
198
175
|
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1) {
|
199
176
|
uint_fast8_t s = table[i];
|
200
177
|
uint_fast8_t m = Etc1ModifierTable[code[s]][j & 1];
|
@@ -203,69 +180,264 @@ static inline void decode_etc2_block(const uint8_t *data, uint32_t *outbuf) {
|
|
203
180
|
}
|
204
181
|
}
|
205
182
|
|
206
|
-
static
|
183
|
+
static void decode_etc2a1_block(const uint8_t *data, uint32_t *outbuf) {
|
184
|
+
uint_fast16_t j = data[6] << 8 | data[7]; // 15 -> 0
|
185
|
+
uint_fast32_t k = data[4] << 8 | data[5]; // 31 -> 16
|
186
|
+
uint_fast8_t c[3][3] = {};
|
187
|
+
|
188
|
+
int obaq = data[3] >> 1 & 1;
|
189
|
+
|
190
|
+
// diff bit == 1
|
191
|
+
uint_fast8_t r = data[0] & 0xf8;
|
192
|
+
int_fast16_t dr = (data[0] << 3 & 0x18) - (data[0] << 3 & 0x20);
|
193
|
+
uint_fast8_t g = data[1] & 0xf8;
|
194
|
+
int_fast16_t dg = (data[1] << 3 & 0x18) - (data[1] << 3 & 0x20);
|
195
|
+
uint_fast8_t b = data[2] & 0xf8;
|
196
|
+
int_fast16_t db = (data[2] << 3 & 0x18) - (data[2] << 3 & 0x20);
|
197
|
+
if (r + dr < 0 || r + dr > 255) {
|
198
|
+
// T
|
199
|
+
c[0][0] = (data[0] << 3 & 0xc0) | (data[0] << 4 & 0x30) | (data[0] >> 1 & 0xc) | (data[0] & 3);
|
200
|
+
c[0][1] = (data[1] & 0xf0) | data[1] >> 4;
|
201
|
+
c[0][2] = (data[1] & 0x0f) | data[1] << 4;
|
202
|
+
c[1][0] = (data[2] & 0xf0) | data[2] >> 4;
|
203
|
+
c[1][1] = (data[2] & 0x0f) | data[2] << 4;
|
204
|
+
c[1][2] = (data[3] & 0xf0) | data[3] >> 4;
|
205
|
+
const uint_fast8_t d = Etc2DistanceTable[(data[3] >> 1 & 6) | (data[3] & 1)];
|
206
|
+
uint_fast32_t color_set[4] = {applicate_color_raw(c[0]), applicate_color(c[1], d), applicate_color_raw(c[1]),
|
207
|
+
applicate_color(c[1], -d)};
|
208
|
+
k <<= 1;
|
209
|
+
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1) {
|
210
|
+
int index = (k & 2) | (j & 1);
|
211
|
+
outbuf[WriteOrderTable[i]] = color_set[index];
|
212
|
+
if (!obaq && index == 2)
|
213
|
+
outbuf[WriteOrderTable[i]] &= TRANSPARENT_MASK;
|
214
|
+
}
|
215
|
+
} else if (g + dg < 0 || g + dg > 255) {
|
216
|
+
// H
|
217
|
+
c[0][0] = (data[0] << 1 & 0xf0) | (data[0] >> 3 & 0xf);
|
218
|
+
c[0][1] = (data[0] << 5 & 0xe0) | (data[1] & 0x10);
|
219
|
+
c[0][1] |= c[0][1] >> 4;
|
220
|
+
c[0][2] = (data[1] & 8) | (data[1] << 1 & 6) | data[2] >> 7;
|
221
|
+
c[0][2] |= c[0][2] << 4;
|
222
|
+
c[1][0] = (data[2] << 1 & 0xf0) | (data[2] >> 3 & 0xf);
|
223
|
+
c[1][1] = (data[2] << 5 & 0xe0) | (data[3] >> 3 & 0x10);
|
224
|
+
c[1][1] |= c[1][1] >> 4;
|
225
|
+
c[1][2] = (data[3] << 1 & 0xf0) | (data[3] >> 3 & 0xf);
|
226
|
+
uint_fast8_t d = (data[3] & 4) | (data[3] << 1 & 2);
|
227
|
+
if (c[0][0] > c[1][0] ||
|
228
|
+
(c[0][0] == c[1][0] && (c[0][1] > c[1][1] || (c[0][1] == c[1][1] && c[0][2] >= c[1][2]))))
|
229
|
+
++d;
|
230
|
+
d = Etc2DistanceTable[d];
|
231
|
+
uint_fast32_t color_set[4] = {applicate_color(c[0], d), applicate_color(c[0], -d), applicate_color(c[1], d),
|
232
|
+
applicate_color(c[1], -d)};
|
233
|
+
k <<= 1;
|
234
|
+
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1) {
|
235
|
+
int index = (k & 2) | (j & 1);
|
236
|
+
outbuf[WriteOrderTable[i]] = color_set[index];
|
237
|
+
if (!obaq && index == 2)
|
238
|
+
outbuf[WriteOrderTable[i]] &= TRANSPARENT_MASK;
|
239
|
+
}
|
240
|
+
} else if (b + db < 0 || b + db > 255) {
|
241
|
+
// planar
|
242
|
+
c[0][0] = (data[0] << 1 & 0xfc) | (data[0] >> 5 & 3);
|
243
|
+
c[0][1] = (data[0] << 7 & 0x80) | (data[1] & 0x7e) | (data[0] & 1);
|
244
|
+
c[0][2] = (data[1] << 7 & 0x80) | (data[2] << 2 & 0x60) | (data[2] << 3 & 0x18) | (data[3] >> 5 & 4);
|
245
|
+
c[0][2] |= c[0][2] >> 6;
|
246
|
+
c[1][0] = (data[3] << 1 & 0xf8) | (data[3] << 2 & 4) | (data[3] >> 5 & 3);
|
247
|
+
c[1][1] = (data[4] & 0xfe) | data[4] >> 7;
|
248
|
+
c[1][2] = (data[4] << 7 & 0x80) | (data[5] >> 1 & 0x7c);
|
249
|
+
c[1][2] |= c[1][2] >> 6;
|
250
|
+
c[2][0] = (data[5] << 5 & 0xe0) | (data[6] >> 3 & 0x1c) | (data[5] >> 1 & 3);
|
251
|
+
c[2][1] = (data[6] << 3 & 0xf8) | (data[7] >> 5 & 0x6) | (data[6] >> 4 & 1);
|
252
|
+
c[2][2] = data[7] << 2 | (data[7] >> 4 & 3);
|
253
|
+
for (int y = 0, i = 0; y < 4; y++) {
|
254
|
+
for (int x = 0; x < 4; x++, i++) {
|
255
|
+
uint8_t r = clamp((x * (c[1][0] - c[0][0]) + y * (c[2][0] - c[0][0]) + 4 * c[0][0] + 2) >> 2);
|
256
|
+
uint8_t g = clamp((x * (c[1][1] - c[0][1]) + y * (c[2][1] - c[0][1]) + 4 * c[0][1] + 2) >> 2);
|
257
|
+
uint8_t b = clamp((x * (c[1][2] - c[0][2]) + y * (c[2][2] - c[0][2]) + 4 * c[0][2] + 2) >> 2);
|
258
|
+
outbuf[i] = color(r, g, b, 255);
|
259
|
+
}
|
260
|
+
}
|
261
|
+
} else {
|
262
|
+
// differential
|
263
|
+
const uint_fast8_t code[2] = {data[3] >> 5, data[3] >> 2 & 7};
|
264
|
+
const uint_fast8_t *table = Etc1SubblockTable[data[3] & 1];
|
265
|
+
c[0][0] = r | r >> 5;
|
266
|
+
c[0][1] = g | g >> 5;
|
267
|
+
c[0][2] = b | b >> 5;
|
268
|
+
c[1][0] = r + dr;
|
269
|
+
c[1][1] = g + dg;
|
270
|
+
c[1][2] = b + db;
|
271
|
+
c[1][0] |= c[1][0] >> 5;
|
272
|
+
c[1][1] |= c[1][1] >> 5;
|
273
|
+
c[1][2] |= c[1][2] >> 5;
|
274
|
+
for (int i = 0; i < 16; i++, j >>= 1, k >>= 1) {
|
275
|
+
uint_fast8_t s = table[i];
|
276
|
+
uint_fast8_t m = Etc2aModifierTable[obaq][code[s]][j & 1];
|
277
|
+
outbuf[WriteOrderTable[i]] = applicate_color_alpha(c[s], k & 1 ? -m : m, !obaq && (k & 1) && !(j & 1));
|
278
|
+
}
|
279
|
+
}
|
280
|
+
}
|
281
|
+
|
282
|
+
static void decode_etc2a8_block(const uint8_t *data, uint32_t *outbuf) {
|
207
283
|
if (data[1] & 0xf0) {
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
(uint_fast32_t)data[5] << 16 | (uint_fast32_t)data[4] << 24 |
|
213
|
-
(uint_fast64_t)data[3] << 32 | (uint_fast64_t)data[2] << 40;
|
284
|
+
// multiplier != 0
|
285
|
+
const uint_fast8_t multiplier = data[1] >> 4;
|
286
|
+
const int_fast8_t *table = Etc2AlphaModTable[data[1] & 0xf];
|
287
|
+
uint_fast64_t l = bton64(*(uint64_t*)data);
|
214
288
|
for (int i = 0; i < 16; i++, l >>= 3)
|
215
|
-
((uint8_t*)(outbuf + WriteOrderTableRev[i]))[3] = clamp(data[0] +
|
289
|
+
((uint8_t *)(outbuf + WriteOrderTableRev[i]))[3] = clamp(data[0] + multiplier * table[l & 7]);
|
216
290
|
} else {
|
217
|
-
|
218
|
-
|
291
|
+
// multiplier == 0 (always same as base codeword)
|
292
|
+
for (int i = 0; i < 16; i++, outbuf++)
|
293
|
+
((uint8_t *)outbuf)[3] = data[0];
|
294
|
+
}
|
295
|
+
}
|
296
|
+
|
297
|
+
static void decode_eac_block(const uint8_t *data, int color, uint32_t *outbuf) {
|
298
|
+
uint_fast8_t multiplier = data[1] >> 1 & 0x78;
|
299
|
+
if (multiplier == 0)
|
300
|
+
multiplier = 1;
|
301
|
+
const int_fast8_t *table = Etc2AlphaModTable[data[1] & 0xf];
|
302
|
+
uint_fast64_t l = bton64(*(uint64_t*)data);
|
303
|
+
for (int i = 0; i < 16; i++, l >>= 3) {
|
304
|
+
int_fast16_t val = data[0] * 8 + multiplier * table[l & 7] + 4;
|
305
|
+
((uint8_t *)(outbuf + WriteOrderTableRev[i]))[color] = val < 0 ? 0 : val >= 2048 ? 0xff : val >> 3;
|
306
|
+
}
|
307
|
+
}
|
308
|
+
|
309
|
+
static void decode_eac_signed_block(const uint8_t *data, int color, uint32_t *outbuf) {
|
310
|
+
int8_t base = (int8_t)data[0];
|
311
|
+
uint_fast8_t multiplier = data[1] >> 1 & 0x78;
|
312
|
+
if (multiplier == 0)
|
313
|
+
multiplier = 1;
|
314
|
+
const int_fast8_t *table = Etc2AlphaModTable[data[1] & 0xf];
|
315
|
+
uint_fast64_t l = bton64(*(uint64_t*)data);
|
316
|
+
for (int i = 0; i < 16; i++, l >>= 3) {
|
317
|
+
int_fast16_t val = base * 8 + multiplier * table[l & 7] + 1023;
|
318
|
+
((uint8_t *)(outbuf + WriteOrderTableRev[i]))[color] = val < 0 ? 0 : val >= 2048 ? 0xff : val >> 3;
|
319
|
+
}
|
320
|
+
}
|
321
|
+
|
322
|
+
int decode_etc1(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
323
|
+
long num_blocks_x = (w + 3) / 4;
|
324
|
+
long num_blocks_y = (h + 3) / 4;
|
325
|
+
uint32_t buffer[16];
|
326
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
327
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 8) {
|
328
|
+
decode_etc1_block(data, buffer);
|
329
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
330
|
+
}
|
331
|
+
}
|
332
|
+
return 1;
|
333
|
+
}
|
334
|
+
|
335
|
+
int decode_etc2(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
336
|
+
long num_blocks_x = (w + 3) / 4;
|
337
|
+
long num_blocks_y = (h + 3) / 4;
|
338
|
+
uint32_t buffer[16];
|
339
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
340
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 8) {
|
341
|
+
decode_etc2_block(data, buffer);
|
342
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
343
|
+
}
|
344
|
+
}
|
345
|
+
return 1;
|
346
|
+
}
|
347
|
+
|
348
|
+
int decode_etc2a1(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
349
|
+
long num_blocks_x = (w + 3) / 4;
|
350
|
+
long num_blocks_y = (h + 3) / 4;
|
351
|
+
uint32_t buffer[16];
|
352
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
353
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 8) {
|
354
|
+
decode_etc2a1_block(data, buffer);
|
355
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
356
|
+
}
|
357
|
+
}
|
358
|
+
return 1;
|
359
|
+
}
|
360
|
+
|
361
|
+
int decode_etc2a8(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
362
|
+
long num_blocks_x = (w + 3) / 4;
|
363
|
+
long num_blocks_y = (h + 3) / 4;
|
364
|
+
uint32_t buffer[16];
|
365
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
366
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 16) {
|
367
|
+
decode_etc2_block(data + 8, buffer);
|
368
|
+
decode_etc2a8_block(data, buffer);
|
369
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
370
|
+
}
|
371
|
+
}
|
372
|
+
return 1;
|
373
|
+
}
|
374
|
+
|
375
|
+
int decode_eacr(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
376
|
+
long num_blocks_x = (w + 3) / 4;
|
377
|
+
long num_blocks_y = (h + 3) / 4;
|
378
|
+
uint32_t buffer[16];
|
379
|
+
uint32_t base_buffer[16];
|
380
|
+
for (int i = 0; i < 16; i++)
|
381
|
+
base_buffer[i] = color(0, 0, 0, 255);
|
382
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
383
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 8) {
|
384
|
+
memcpy(buffer, base_buffer, sizeof(buffer));
|
385
|
+
decode_eac_block(data, 0, buffer);
|
386
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
387
|
+
}
|
219
388
|
}
|
389
|
+
return 1;
|
220
390
|
}
|
221
391
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
uint32_t
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
392
|
+
int decode_eacr_signed(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
393
|
+
long num_blocks_x = (w + 3) / 4;
|
394
|
+
long num_blocks_y = (h + 3) / 4;
|
395
|
+
uint32_t buffer[16];
|
396
|
+
uint32_t base_buffer[16];
|
397
|
+
for (int i = 0; i < 16; i++)
|
398
|
+
base_buffer[i] = color(0, 0, 0, 255);
|
399
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
400
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 8) {
|
401
|
+
memcpy(buffer, base_buffer, sizeof(buffer));
|
402
|
+
decode_eac_signed_block(data, 0, buffer);
|
403
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
234
404
|
}
|
235
405
|
}
|
406
|
+
return 1;
|
236
407
|
}
|
237
408
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
uint32_t
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
memcpy(image + y * w + s * 4, buf + i * 4, clen);
|
409
|
+
int decode_eacrg(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
410
|
+
long num_blocks_x = (w + 3) / 4;
|
411
|
+
long num_blocks_y = (h + 3) / 4;
|
412
|
+
uint32_t buffer[16];
|
413
|
+
uint32_t base_buffer[16];
|
414
|
+
for (int i = 0; i < 16; i++)
|
415
|
+
base_buffer[i] = color(0, 0, 0, 255);
|
416
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
417
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 16) {
|
418
|
+
memcpy(buffer, base_buffer, sizeof(buffer));
|
419
|
+
decode_eac_block(data, 0, buffer);
|
420
|
+
decode_eac_block(data + 8, 1, buffer);
|
421
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
252
422
|
}
|
253
423
|
}
|
424
|
+
return 1;
|
254
425
|
}
|
255
426
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
uint32_t
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
427
|
+
int decode_eacrg_signed(const uint8_t *data, const long w, const long h, uint32_t *image) {
|
428
|
+
long num_blocks_x = (w + 3) / 4;
|
429
|
+
long num_blocks_y = (h + 3) / 4;
|
430
|
+
uint32_t buffer[16];
|
431
|
+
uint32_t base_buffer[16];
|
432
|
+
for (int i = 0; i < 16; i++)
|
433
|
+
base_buffer[i] = color(0, 0, 0, 255);
|
434
|
+
for (long by = 0; by < num_blocks_y; by++) {
|
435
|
+
for (long bx = 0; bx < num_blocks_x; bx++, data += 16) {
|
436
|
+
memcpy(buffer, base_buffer, sizeof(buffer));
|
437
|
+
decode_eac_signed_block(data, 0, buffer);
|
438
|
+
decode_eac_signed_block(data + 8, 1, buffer);
|
439
|
+
copy_block_buffer(bx, by, w, h, 4, 4, buffer, image);
|
269
440
|
}
|
270
441
|
}
|
442
|
+
return 1;
|
271
443
|
}
|