From 0b9c04de7acaa317654d9fb8f8410c9c240e485d Mon Sep 17 00:00:00 2001 From: JohnLCaron Date: Tue, 22 Jul 2025 12:09:04 -0600 Subject: [PATCH] add missing test data. fix various failures when comparing to C lib. withdraw ncdump for now to test strange intellij behavior. --- Readme.md | 2 +- cli/build.gradle.kts | 6 +- .../kotlin/com/sunya/netchdf/cli/ncdump.kt | 9 +- .../com/sunya/netchdf/hdf5/TestFilters.kt | 2 +- .../com/sunya/cdm/array/TypeConverter.kt | 14 + .../kotlin/com/sunya/cdm/util/IO.kt | 12 - .../com/sunya/netchdf/hdf5/FilterPipeline.kt | 10 - core/src/commonTest/data/hdf5/cenum.h5 | Bin 0 -> 4096 bytes core/src/commonTest/data/hdf5/enum.h5 | Bin 0 -> 2088 bytes core/src/commonTest/data/hdf5/enumcmpnd.h5 | Bin 0 -> 2088 bytes .../commonTest/data/netcdf3/jays_DOMAIN000.nc | Bin 0 -> 1073816 bytes core/src/commonTest/data/netcdf3/simple_xy.nc | Bin 0 -> 384 bytes .../commonTest/data/netcdf4/test_enum_type.nc | Bin 0 -> 5447 bytes core/src/commonTest/data/netcdf4/tst_enums.nc | Bin 0 -> 675 bytes core/src/commonTest/data/p256.zip | Bin 0 -> 10641 bytes .../com/sunya/netchdf/hdf5/JhdfReadTest.kt | 96 ------ .../com/sunya/netchdf/testutil/TestFiles.kt | 2 +- .../com/sunya/netchdf/hdf5Clib/H5CTypeInfo.kt | 1 + .../com/sunya/netchdf/hdf5Clib/H5Cbuilder.kt | 20 +- .../com/sunya/netchdf/CompareCdmWithClib.kt | 5 +- .../com/sunya/netchdf/KnownProblemFiles.kt | 301 ++---------------- .../com/sunya/netchdf/NetchdfClibExtra.kt | 2 +- .../{JhdfReadTest.kt => JhdfCompareTest.kt} | 23 +- .../com/sunya/netchdf/hdf5Clib/H5CopenTest.kt | 8 - .../netchdf/netcdf4/CompareH5andNclib.kt | 25 +- .../com/sunya/netchdf/testfiles/JhdfFiles.kt | 3 + .../com/sunya/netchdf/jhdf/JhdfCompare.kt | 37 +-- 27 files changed, 113 insertions(+), 465 deletions(-) create mode 100755 core/src/commonTest/data/hdf5/cenum.h5 create mode 100755 core/src/commonTest/data/hdf5/enum.h5 create mode 100755 core/src/commonTest/data/hdf5/enumcmpnd.h5 create mode 100644 core/src/commonTest/data/netcdf3/jays_DOMAIN000.nc create mode 100755 core/src/commonTest/data/netcdf3/simple_xy.nc create mode 100755 core/src/commonTest/data/netcdf4/test_enum_type.nc create mode 100755 core/src/commonTest/data/netcdf4/tst_enums.nc create mode 100644 core/src/commonTest/data/p256.zip rename testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/{JhdfReadTest.kt => JhdfCompareTest.kt} (59%) diff --git a/Readme.md b/Readme.md index 94361a64..41de28dd 100644 --- a/Readme.md +++ b/Readme.md @@ -1,5 +1,5 @@ # netchdf -_last updated: 7/18/2025_ +_last updated: 7/22/2025_ This is a rewrite in Kotlin of parts of the devcdm and netcdf-java libraries. diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts index 4f6a0aa9..f61d602d 100644 --- a/cli/build.gradle.kts +++ b/cli/build.gradle.kts @@ -3,16 +3,16 @@ } dependencies { - api(project(":core")) + implementation(project(":core")) implementation(libs.lzf) implementation(libs.lz4) - implementation(libs.kotlinx.cli) + // implementation(libs.kotlinx.cli) implementation(libs.oshai.logging) implementation(libs.logback.classic) testImplementation(kotlin("test")) - testImplementation(libs.junit.jupiter.params) + // testImplementation(libs.junit.jupiter.params) } kotlin { diff --git a/cli/src/main/kotlin/com/sunya/netchdf/cli/ncdump.kt b/cli/src/main/kotlin/com/sunya/netchdf/cli/ncdump.kt index a135bd82..a7f6e2a0 100644 --- a/cli/src/main/kotlin/com/sunya/netchdf/cli/ncdump.kt +++ b/cli/src/main/kotlin/com/sunya/netchdf/cli/ncdump.kt @@ -1,8 +1,9 @@ package com.sunya.netchdf.cli -import com.sunya.netchdf.openNetchdfFile -import kotlinx.cli.* +// import com.sunya.netchdf.openNetchdfFile +// import kotlinx.cli.* +/* object ncdump { @JvmStatic fun main(args: Array) { @@ -24,4 +25,6 @@ object ncdump { println(myfile.cdl()) } } -} \ No newline at end of file +} + + */ \ No newline at end of file diff --git a/cli/src/test/kotlin/com/sunya/netchdf/hdf5/TestFilters.kt b/cli/src/test/kotlin/com/sunya/netchdf/hdf5/TestFilters.kt index aa874582..5fc210dd 100644 --- a/cli/src/test/kotlin/com/sunya/netchdf/hdf5/TestFilters.kt +++ b/cli/src/test/kotlin/com/sunya/netchdf/hdf5/TestFilters.kt @@ -1,8 +1,8 @@ package com.sunya.netchdf.hdf5 import com.sunya.cdm.api.computeSize -import kotlin.test.Test import com.sunya.netchdf.openNetchdfFile +import kotlin.test.Test class TestFilters { init { diff --git a/core/src/commonMain/kotlin/com/sunya/cdm/array/TypeConverter.kt b/core/src/commonMain/kotlin/com/sunya/cdm/array/TypeConverter.kt index 11d2c4df..603af95f 100644 --- a/core/src/commonMain/kotlin/com/sunya/cdm/array/TypeConverter.kt +++ b/core/src/commonMain/kotlin/com/sunya/cdm/array/TypeConverter.kt @@ -169,3 +169,17 @@ fun convertFromBytes(datatype : Datatype<*>, ba: ByteArray, isBE: Boolean, chars else -> throw IllegalArgumentException("datatype ${datatype}") } } + + +fun Long.reverseByteOrder(wantBE: Boolean): Long { + val b1 = (this and 0xff).toByte() + val b2 = ((this ushr 8) and 0xff).toByte() + val b3 = ((this ushr 16) and 0xff).toByte() + val b4 = ((this ushr 24) and 0xff).toByte() + val b5 = ((this ushr 32) and 0xff).toByte() + val b6 = ((this ushr 40) and 0xff).toByte() + val b7 = ((this ushr 48) and 0xff).toByte() + val b8 = ((this ushr 56) and 0xff).toByte() + + return convertToLong(byteArrayOf(b8, b7, b6, b5, b4, b3, b2, b1), 0, wantBE) +} diff --git a/core/src/commonMain/kotlin/com/sunya/cdm/util/IO.kt b/core/src/commonMain/kotlin/com/sunya/cdm/util/IO.kt index c77071e2..3cff820d 100644 --- a/core/src/commonMain/kotlin/com/sunya/cdm/util/IO.kt +++ b/core/src/commonMain/kotlin/com/sunya/cdm/util/IO.kt @@ -30,15 +30,3 @@ internal fun IOcopyB(input: InputStream, out: OutputStream, bufferSize: Int): Lo out.flush() return totalBytesRead } - -/* -fun Long.reverseByteOrder(): Long { - return ByteBuffer.allocate(Long.SIZE_BYTES) - .order(ByteOrder.LITTLE_ENDIAN) - .putLong(this) - .rewind() - .order(ByteOrder.BIG_ENDIAN) - .long -} - - */ \ No newline at end of file diff --git a/core/src/commonMain/kotlin/com/sunya/netchdf/hdf5/FilterPipeline.kt b/core/src/commonMain/kotlin/com/sunya/netchdf/hdf5/FilterPipeline.kt index 50b71ebc..1b3f5978 100644 --- a/core/src/commonMain/kotlin/com/sunya/netchdf/hdf5/FilterPipeline.kt +++ b/core/src/commonMain/kotlin/com/sunya/netchdf/hdf5/FilterPipeline.kt @@ -40,16 +40,6 @@ internal class FilterPipeline( val isBE: Boolean ) { - init { - if (mfp != null) { - mfp.filters.forEach { filter -> - if (filter.filterType == FilterType.lz4) { - println("GOT LZ4!") - } - } - } - } - fun apply(encodedData: ByteArray, filterMask: Int): ByteArray { if (mfp == null) return encodedData var data = encodedData diff --git a/core/src/commonTest/data/hdf5/cenum.h5 b/core/src/commonTest/data/hdf5/cenum.h5 new file mode 100755 index 0000000000000000000000000000000000000000..d8d92659a35bb2f67905bd9823c22f9431c4d6b4 GIT binary patch literal 4096 zcmeD5aB<`1lHy_j0S*oZ76t(ZW-tdr{D%UdFc`r3P&EsniW#B&1}Gx|%J*<}3;;8s z;!tB48ldtpDmAY(7sQ5{^8qF?%;}IIS67g)Vc`m+Vcveg0%38$1V-r*6#|S5OyE4B z0QI#XFe8HUNCR3vg9QpB11ne_LNEaHatD|x22>A9O3C>-`9<-0iMgpT9r$SpR){_U zP6*AwpuiC1>H^l}4otg#K$eqFC@>8(Fob(}hJYAOK90`bAOQ#fxs(ZrK_vwXBeWo4 zgt{M6@Gvm&LB)*>42%s74J-{!jf@Q}fJG961lawIOi&Hbi~!OH$r=(s7H$yi=kLM@ yGy#@>E+7|fxV4SSjE2BS3IUWn3iUWPv5^!eqkbI?fzc2c4S~@R7!8488v+1H#yiOX literal 0 HcmV?d00001 diff --git a/core/src/commonTest/data/hdf5/enum.h5 b/core/src/commonTest/data/hdf5/enum.h5 new file mode 100755 index 0000000000000000000000000000000000000000..a1e009d1e652484945fb4b91f088817dee203ed5 GIT binary patch literal 2088 zcmeHHy>0?A4E}O}bV35r?bL~pG2%~R1TO7WMHJCPtSpSMKzG)@1&_odF!n84JFz9o z%tCvXF1Ejmoy79z&n$haRUfNhiDQ(}K*>8{`4(x#zkS_ul+8wfgBUCEGdG-hQ}9Ih ziB{#dADeu=+pDknz7+VQI-ffS7-*eU>vPZLU`hEEF7!XCfI&pv0W{^k55!OQ4?>WY z;HnHN{(o3NT%LI|serf*G^mk6OEocfsSkUm9-NXjnk=Xnfo1lRvoV?s$FB^K@Np4+ zOm~hqbPpCI_Xq<7s0-eSw YpVQ@VyWu%Ss-gn-T7heB^E9VfSFKn z379%44WnH1N^_la3-VGzQj1G~f-v)5z!VHqIwZ)|735o3IKya|cOS4oSkT~y36Ihv zBm@{4n80~K0qS2tVEzQ4k)a8&NMeuxo59Eg)d0;1Abk+` pz)BRbu^2?KpT7$u&;(fixqw`_VW=Jz7!84u7Xs*c6chsJVgO-JKU)9* literal 0 HcmV?d00001 diff --git a/core/src/commonTest/data/netcdf3/jays_DOMAIN000.nc b/core/src/commonTest/data/netcdf3/jays_DOMAIN000.nc new file mode 100644 index 0000000000000000000000000000000000000000..e7f423c37dbf24d259e9b95428c7c65e75649b23 GIT binary patch literal 1073816 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
-nhT*H4Gz-y>`GJXKXgT(hRk zMiD$U+&1uP=IZk9f#dP-qM26ycH)Q+ysGL<67xT7?*T z=RgrSkGP*V>NnQ!h;TbY@kzw^oIZ!wBIfER#^du8QK?uF9)s}|+%g7YTcqpsCKuPA zqQN=y-#5=^`)Bs>k%%su`g?GlC)(yvZ=HsC%p$Hrgm`(lUGv{}L?Q3Khu9;A7l-?s zAV$?BUdQK46w~B04Lr)Xxu3`Le2&NQIUna|KFm*+FY}kz!}?e+>!%*nhkD8Mqn>ho zskcmj`ayr_7yYB3^p}3qfAT;+$P4))PvncdWqxxm=z9%)@UY#8Ja=%{+3s}n@AF>h zoIKPP*JFv+Jv_c3 zi<2&ax7d(ho7E9D2mWWX7`(Z6R4B*wpy;QE`*ieEk?+2WhC_&Bmdp&q`JxuW)zy2z zOa83utIr@tmX2^KM+`MKH!DSauzlamZ-_A#?cy7k!J-w?w+5g4}u_ zS`D3^fzOj@qnV*S#uHu3FZPN?d|ki!)MVtL?y6jh&rReQ{j1Y4Zsb~xaSxGKs21|Z|7;O-wv_g>kIa{eu)~tKsiEyXdm|1=m6sU3!56v5f@dJ z|5@_SHuv**o-Z4Z$?|3X@_JYw>y_0{J>>dOFX~4M!?${>c2I zfAo|7(r@}t9>@oIAwT4ae37?QtKoTFKBEs_)#-6w6Wm$cA6-)m?soKT7%xPh`*M2I z4Q$7HD-79-e)!C4r-Jt?aA#_;Z6vsj9$J}gVgUV}#XJ9N_Bqs~T`l%U>ffzf3tmM* zdzKYEL!9tnj1v45DNL+)!gfUV>|2_+-irvYZ7gZ#@BWzS5x5_Sc>3QR0l1IInpZPJ z0kPKim$Mem>ur4b0zMa_MQ#lX4&Of*xv3Sew z9UGC?fT(9@J|ON9b~E!s%*nXg;|22WZZ&L5SHzY6H>18F-p$_p81qDb?R@drebm?E zn*Ad19%G++uN63s@%%Hac|C|ZFIwKx9`WIwj%%cdu?L?OKSWG4%dz-(oBMe@&*ylu z@j0J-e&!>~kNL{;m(|1iBsFzGX>M7TkdQ*S;A@hfR$^Dc0Nq^}#{U;CP zgS?O*@`U(y|tOM*rP&p|%k| zHf7$P9FN%N&XWKY_`R|1?B>6xh)Sg5GkS=tC#<=yim2UU_MdLxs7QBDxG!RacNc$U z#QP&}`h)KX(J+-yuMrD8eDW>&M%oHue{JlOZ-Mox=_Sf^VJCR?zlH%>S--te_wBpWTaG_AvGBgEoOWR-jcOi-g z*iWiPJ&u1An!xF^_;GKhTBFXMRRL~Qh&zA1X#U+#Y>ro8752yJhrAwz{c&?LEsJ*` z`r5h&mmxk4+^mlI;_}!1^c{^@u{K?)8{)T3{q7C@XPf(ZJkRHNvhg{ee12Iz%#Zmp ze|bH!`dBaPrykUYdQm^>Dc6^J%k-xoa)0O-{ge4gf8~D5{3j3OgS?O*@Y#5%BZpq{Az*K1O}*K4ZsUM0KN0)6uUY?JT8lal9zX(IfsT z;^a9NeVVV=fAzdF8ru;`XNC<}ju?9Sz<=El!+z;3XkJgVZ_Kx8zAjVt$~4DyfXH@v zqqKP)y=MD#GSW9b3D(KzK87Dsk08bcn2)^< zt`^xWI_iylTdX;w)`S=|?fUR$o~*1a3-%#?h#1#&2VCsv*Ln{6TzrQChb}Beyt4X; zDL7B)9r!}s6fx*lO%ELZTzf;ZD#m^8r7CvCywBepOT2Uvx)|F`UxUwI;>r_`Tir#x z@KNFiJ`>~K2&SShCKmKKGW9EBiGPSCJ}>fZ?&tA5Up5}cm(M4gpZPF9=F9w959?#S zte<*NAL>Q@s3-NM-qfFd$o-M|MgQb}(qH;5^PfDB5As5O$P@V@Z?VT_#7=$%f4Yx! z7dpWAUolQ=XEt-U%;oG+a51s2qhC3AxjUoXd2k>aX*>T4?vo=bV>))maS>4-J!duF zSKgm&61E-jS;LeW&G!*sod&IfFQUOFzy3Z#^c^wXR*dmlOy8aleb}4ZiHF-47Tb z?;d5hCVL`QyV{-p1g@gfR;gfJeeON)m6t2Hu-YG@hxrp5QZ97{Z%KEedMrR6doe>J z^2#5?ioG2^7~^}VO)a!%??wE+w>AXzq%7*yCINY*JkyIGFbdyKX-4$Vy@F`F;nh&& z|8mP4twB17Cof#>y$tdE(UhBm|Jmk#9xpqe<8ge>$N8BL^JBiupY^al*30^-2lb&| z)Q@^nU+PW$=?DFxU-XZD(qFmX^q)M)_#iLjhdhxl@)pxcSJBx9J}*3Y#1`vLe7zVE>VBppuG1o3>U(u-=2NLpL7*j~ z)AUWs?+{;3X!!&FMB0mnr%gqySrqG}3EpmeIkE+PFnV>{+HY&X*;pUdc=-Ozs7X`y?W*wor_jb1&lO72@Pp(D z$Upu3p=GA%^BDumhpbgYe7I)D#Uc3q%4ljrWj3N$R=pznUgnF%%a%6(`=3K5Dd_iE zdUfk|;B%bSYjehP^lff)zx;TfFB^~Jb3V?`e3&2eW&W&(^|4;oPd%s)^`d^%lloF` z>Q6uD5B;Kl^ppO|{g(Mp9^`zG7a2d~iF}c_DC6x$Pd0%IleK}KQ^C);R^8jVgRctR zCF9W_BA)uF^d5-#K)ua5O~lOEbN-+|h}w5v{1^L08^0^X_C~DTw|YVxcssR0)j0&b z+1l;z)EeXJMb+x;L~NS!aY+TZ`+4rNPAIr*6mA^f%$wGGwQIP3j326-xc@Ht*}^kp zecph#6B^Nt&DRSr20hu=0lYP(x&Fa*L-L4wn@4U2Uu&PNSk?}F1?I2(fX_{8mU^Ct zBDktumA4hVWwh7(GqN9eF?7n@l>)6jzs;rmcrj{_anYKSo~u)zR!2i6r1Asyx2C~1HpB^*4G6Bd|vWr^lR)t8FAAV zhgIm$`MdlzHg@}GoBL(Q^L&oS@i`yoXFkl2`7(dj!}?e+>!%*nhk8*z>Pda6H}$6< z^oM@YKl(|3={NnC^C07cyvX?>Pcpv9n<&|D(Fo`lx#LHU|1)qFb!MjluDc>a`+Jl& zbC_OH`x4iSBCXYDCK@Ap%~C81!0{Ru0iml9MYm?e;d(2|$Mn_@^o!`V)|ZAi-yf{= zd~#LX9?fI+wTY0$6Z1{TYB@r zMXblkd8MXv^ud|UukF`Xg0rY|R$;hqNbkS3pfkqJxZs%eTm-(9HDBIL16NCS7!C%1 zIZrR&v6%smTI}5*HU~eJQ#_H1i| z-)qdwd$by#pCa9S|BF8nlM+70qQ2re_gAlOgP5D%V1$1EcF5MjrqzfZrY6Q3h=B*1 zvT;59Hq^-?2X)G~xnFiX&*yj?pYw5k=EMA$FY{+TtdI4we(FJes2BC4p469mQ-AtF zf9Mzeqo4Gbe$#*QKt9L|`5{kozQ|jx$E^xnCyD0k+h`VnyCj>hx?{23>WPjXbQNvU zJGa)enLEY5zI_oBe-;E{U5X0abY>y?M)akcc{=bf=4shy+bnQb^&q&W3cOh)WQXLT z&t3F7dKNxC*RmRu)eF3x-CX$b8hA7FaHs)4$!QM^mu>}bn|z`c9YH@cT0Qd#?swB) zXg>j9&-z zCy!LDxrg)fcK3^V1KwV*|F!y%9XOkpn2@B8ekJH!atVCA)!rZ0{5-AdvxaQuEUE^%uYa9z>vPGZ+U{I1gK(Z)Tvz7x-L z{?#8`ewpRcua6MFyBxId)>f?3U%y7_KHP=h|N8WpG0_XLscF19JfGune9p)DnGf@0zRaKXus+ty`l$!?pq`$|v23LHk7?V2e8cRuT9RO9+AYW;i51U+!K zUv&37QQEp`~G5w3b<>!@6h!qxXUXWJ~9>D#YdUl z!Fu{K!DaBQ0`$4O7R8g$4>Nv56fHji-nxYz>4SCkmA!i4LGYD#xCZ|xDR_GkVE8)- z{Y=TE&>I{SkE-0RW&+OE8rTlV2WRKH?p{<3&P29u0~FAw(z{;KoeaLRy0&*l9Tl+^ z4(F4>)y1LDry`H9&UqK=!0WfRVcmVQ@%!GZMHd#~bM?LRX6M)Fuhni@cWsmKySE#2 zmgFDD@6V%dCS{?I*M@HSdEfw^_u3WW5P`hv`q?L3{fhYT#_e}n_`SN8+J{4#h*MiH zyomen`bEpb5-^T@TehFa^L&oS@i`yoXFkl2`7(dj!}?e+>!%*nhk8*z>Pda6H}$6< z^oM@YKl(|3={Nl+59EWqkRS3yzQ~&>#WvUxeMvO3MmlX6xD%*coVOa>?Me%nQiXN) z>zK;E_raalt*KY-!QD_>OLh2~sOcEl5$oX#r9V^Nqfe%2|5xh--%^Emv)%*rxji1r zQMk^`%y+&wSB&-4!XhRd{WABCa_(3h|GHO#n+f{Un_!RoS`)#Wnc0ZD=qK+URTvbv zz&bfXBu&9}Y1z}5yy_5eHmGydJM_znOFz&2Tm{aW&WD_Ah5j_du~-#6NsgUXv1tds zo}?_C4!&zrjwY|i`L%H;j215gKNqi@zJtE@Ywpb?%R)To_3NqPJ~cdlvsuA9u|1wQ z%y?sN3{IOA1$MZRAgGR2shUjTs(WUu$okBzB^L}_vvFEIypp}SDryl7XMD)0* zYS|Uhd)mvS(f@37zwCIPFCXv!$LDP`LW z2mPU6^pAehU;0h|$piTyFXV?jkuUNVWpaA_;*;ou$}gRJ)6Jpc>e0VhL0Kg-A9FbMfAaxP6v*zI0x>Q3hXA`0C!o&t+K#rmi?#-(@x;- zi)-e&1oSz-t0FJ(QZOxk^p-PNPqpqDA8mv6wA5>@SI}H+mTlS@t!Fa6T4Xj&GE$LVlBL9K&5Qhx+$CSJZ;yg zoCLgAKy_?Q$ejShDPivnlmFS4?dS3G^JU|4e9p)DnGf@0zOwvTkGwwC%lfGY^`TzW zk9tyH>P`LW2mPU6^pAehU;0h|$piTyFXV?jkuUNVqwU{fWIWd4{QsOj;QO2SdFJI3 ztZ&a}X1+4t4DPn{Thy^5*4bE>F|Jr=Q_c38+^_?8k^3XR;5sX7`NBn2IapuKzAxX2 z^*difdvG-FV+tBC9zJsweNJ(@mN~dC(fX1<>>sEbHSVVw!><0RI519@FlMA>NSI=mM#Eitv*(2WBk80<=63hFsXve z%n4<`!B>1>VNf@4rM1~-ODVW=*mUG-0eJG6kz*bLeu6W{e!zRcR39gH_&pHs0|?dA z3-5{NwEa^44BLeF1S~DLb8yFVi``D9+{OER)Z^P3j@XO$2uyj@#!v?_M%-pI-mjyn zGg|LC_|$a3yG#t?kHQs0O?rLE16+wDyPPkSu3Rv!RI(V`v7pTNn- zSNch2cwfcOIf1u+;C(6IEv=Fk;`!}dkA>NI?@9a1eM1WI{C0;KyPe+Q{be0KC%0OS z_X%jZEP0%R=eV^JbKMWl#CuoN!wr&+5r@Vmp9iNM$EO%;rTnuk+t1^9KF8zuoR9M} zALhq=nLq1ceXN)DQxEDxy=3}PPr1I-oBGoa`a{3yAN{1i^qc;Z2l7E)$PalUU*s*p z-)u&qIo9EG^G|-gjP*8rNRlb;Bh%KKUw(K1*LSmQcl1VI%5iqCjd+fA_T;pkx%eKZ z;6wKKim~8s#-;YRn)_XWqsK61aJSjNm1j#lPui#CvFaRfSMg{;-^b{4kM|u`!@6F5 zC_(rY>+MgMT+PxkxK10}#k5TUc++Vt)Zd5xRx4e79(_i!&~KNI8hCqpWA_6K^s{4& zdXDr4XLDL^#B+ku*1Dzh9)TnEG#kqy;7xPwSx?Jt;7UQ@s3-N6=}rCRe$XHKMgQn0{iWaZpFEHc z@b8V@ORk9F1TNCNmY-Y zg+6yWL=eI( zTcTZl9s1eY-gEna!!|A^BeZb6*Uq*n{1o1k*P&O)_=A5vFgPv!_jlOx*4Z~bqZ z`{l>W&gXa>pYw5k=EMA$FY{+TtdI4we(FJes2BC4p469mQ-As)^M`)P{iC1smwwZK z@<2Yw3;7{W$ z&gW4XxI6uQ)Sy=2uFPw>80%L{^I-#m3b3B;(f<&D^{rLLAXQhqM^mHI=9m}#z?*|) zbSgM#cl7dtDUZRM==k`tUg&3q*=-NwJ$Bk(w}#Y%8=b1)D_Mo$toY!Up$XvYiQ_i~ z+-DeUpFjKYe(+@Sy-ma~@D#IKr(iQU8R5I_?Gu5tr~hLOCG@pkuY*R!AH{n|fAOfl4aVXRinSPeZEEggEDv< z{kYYlw&3l4_dmnVqOWNOg(=|uvAP>fzSygvpFO+LNpBtA5Bj%*ZQ3MoX1rmtXcYRB zAkTeqHTV)bR*b@Zac@%--vL-(`~2BIdiNvn6dD(wF%+CkvZ|kt>$!dj$K#c7UVj6@ z-wU`u8Q|Dzo+&sRxHhg^_y>V>kjtD1!^r~a;2~n+DmTRU*I#yhE0CHm`?OnAi1@-J z=<95ObV!T#V=K`Qhjes_ll=bQHuv**p3m_(KIh~7%!m0gU*^wxSRdx{$zgiR5z@{#{$!`vasIj8Mj`E z@Ab-dwHsgRgZtU`i6Q+f@qKV=^!w)L2EN~(>2wD7$3JhSc5gKv>ui#3*vXdQZpV-I zH5b8Mk7<1p;eX5QK97GifV+LGicHjT9XI;dU^_o>S07Sgq=-KE$mv_?6s)JNnbSSM zlXka)^O1ki-_ix!UbF*m>(d?FyQ8nEPwjf|9(W5lI&dD|$JnFe;^_(Szt_%dk8&Ep z*=tL)jk)Mkx;jo<^ugEo;U)Ip!I%B5Cz}s|D;wWU-kIR2d$&Wu=HRCw*!LptpNFnH z<~C%WKsxNxET4n8&mJ-2a+DAH?#N{(b2M=sX|d+j2kWH*>8NRe_w>QNrE2uzROD%S zX8ph^w*=DB3WF*S;JtjK$DGSD@JF;?JESE(FY;~Kejd;BIUdL7e4L;8FhAzY{8+a%yp=$8 zx(4ci1Kpo(3Y5WDm(p$D)`P=tiE~FJS)#vPcB&VF-(G8stQ4KGPWE$F>$e5G6{hv| z2M1=G_2Md1(8n6uFO@ohvsF7!8sR>A$g}a6Be&OP(1>YkY%hiIqmz61B-eB9Y9_uJLrx^wvc z#r2S{i^UVyZWymijwZW0-~RJ4pXdHOp6#)H_Q(F25A$Qb%%9`o_&8pUpL$Rq>P7vi zC-tS?)SvZWeONEnkM(4IS#Q=~_XGW5@(cY#KhaKvv9OS;to{yd3Mh9Dzyqv;-G( z->gyo82Fjra?FSazkqLrypDEP@LR?5rCfi8-|V*ROa(rbD%~tR1HFkeCW}1!=&HgSC3x%?=DUAm&f|^+@Hs@J+{yO z*gx}Oe$1Eob37a$$IJ0k59&j`s2}yDzSNugvmUGu>&5!9o~$qH&HB?1^oQ;j`p4ua z`ip+M{eI){6nMYldb%U+`r&<#XHSNNMIQn8Le|t9iglb><8cXE*om7rMx0mdA3EM0x~E7nVyNAI%(KlMf|_6+OBeLB%`osRQ?4-2I=Bv!b?k||Mc2W1 zFDqrU!a6Na+d=bNVt&kjB3trR_TXHl(XEH($GUB9skIyNxWuzxF3dg)zTx)j4%6Yc z!OQY@yaKX*?wbRk zYZLtdzADk@*xF<8Ro~)|bNRwYb6orfU2=%7H}mK()$qFUY8!p-?p%lH2FczOZywOp;|7xkl_)R%fwf7XNb zVZB&C)|2&Ry;*uaJe4+F<=j+1<`S;A-zVtQb(Mj)r4a5AG`{z@& z9v8v7&Ueo1bKqU}UZ*Rae-1zTC#c^X^I_(bi`xZvfKT(P>ASFg%P_Kq?WP0p@4E?E zCV`7-N7tP;66XbJ3RKxY6h29H`r5f)j$(eFeKz@;Y4ClQEeWmm;=I}`!`1%FG5^=} zAM@4^Joda5@B!+!t#`+3`wra)Z1rpIgW(Y(Fi#1HVfd1_>67}ue&vYEyVY_-i?3Z~kFXqX-IS!7CyR*E@Tx9zcsyJ z83Vs&_3$0`OB495@ff!hnEx^k2$;1B{!YK4uX8*2HSN1-D>Uyw;`F}ug0g_4@wSy6`PgE73;sGDL3Wn_a44VuzTG+ zv}=*L-Q()n;HNB=EMjiLM^&ylRp|(ybWPg)R1WxJW5b!R<{_GozA!8;))lSYEb5>? zv*V5LO@qJ9Y7ZV0-39C2wb2dgl)&}$ONEp6u|>3Y^}Cz_>yZf`0*~Q+p_t@}MjyV9 z>j6u%ufOAo=#$z1Qf@h@{jgs>59VdclX-I- z92dvQaZ?BCLY=4^b)>G;nYyzMtPAVJy0MO|E9=a<(+BhgeL~;RNAwkaM&FexQ8$m7 zKdyIN{kfyr8gS0eQ4NGI^K2?IzTzpIKUAGFKiN?DEh=$g!|yOn+VzCL)R@9!Jnx3sGh55ESU{hT@F5%|#R^1?k~ zTi~R{4^I#D<3NL{Hjb!Qz|7uJb&V;xyn)|qvu59kZ}gubDV z=qvh+zAL=2`mHm|ofH!wu!JiMO9+~!Za>RT}?Vuch-S*VVzhv){%8( zomqGKfWDwl=o|WozM{|QyL=6@9#B~CWDVKin-=EgxF%K1!db zW=L=NB{;|O`tawy!991+!23aW8})9z?iH?wx(~|#3ZGNE-Q?lTmhj`PVRjjIV!xZA zH9oystx>j?S1g6D&XR^ zQ)_CEABwnRwbvzFUo}N;*Z1Rbrgrpp*$?|=9?Xk*GH;H9n?EvRq9v@Wv-2wQ_*Xik# zC-7OW$~&=cd=&kv&WzM+;jhQNQjOaOeK~%i-X5 z_s8>>GaZ`x>I2@lY;|MOB&-K7hI=+Vj&?5EuB_YhDXwSj8kyo5-dDQNV%qYBc@Wc% zzr1fZ-e*5+Tle4s#0_00A8U&^Kb3O~uCtmVx9j`yI8!@%yX=SkG7sj(JefDg!Ete% z95;2KF4T#-QAg@ZovAzPz`C$bteaj(*40#J)}20}FX$8chCZUN=rj5*)5L2(mEQx- ztzL2?APG3v>aElLb>Lj-Zke8dW683%o(nETC&^kW|FG<-_HH<2mE#a!}w?T-1Y4wuH7(^)W?|^u+eV|rfc7=m?S84q{%7%(n1e2>5ws?($NDdmxsYeD6Bm zCqEr&-u+Y|#L3&+C$T_m)Z=p2#E2D=jSBn?u|VVSP1*huxt;s*IK3UV%YN7|^I%@g zlX-I-92dvQaZ?BCLY=4^b)>G;nYyzMtPAVJy0MO|E9d=p*`yKBMo_ zrcOQOH0D*y@qJHs!n~Wb;dRf*+2EXGsluU4!8x_9X+zAf3B8X+)jfjwbmXbGbHJ^b z8MZb#QO`Fn?~hem2fh{9aHMlJ_^nuy+PJmGqsI-mXG+uuTw60FTOO>x?ibAY@+y3H zcbCsE?m6JIA6@EOQ`QV_Mx8SFpOL}y|erJd0a#{r6L^knoPk#vhsnz)RS-2j0x?abP4fEo2 zLtVBGD1`TcPR<+d)*J1exSH1@qB>%Q=tU2}#p8<_4XomWnEhR%J*8|JfqIll$h+Y-#GX4QT?IM+DF(LEp5Z-JKCf0>H& z11FD-uW(-a>|MX*N!;MKOV+;^+zh|nwRrXTSNJVk=y_kvn|FK06s~j%^XAiT$1k~K z-8J)Advnz9TBBp@t@ndxjwNl*T!GJA)*Q-?&+A<1lHTbw{Pf5AQV;Fc!)K|^6{$G^ z{u*~LP4zeMS8msYG58$gsUtV+^Dc$2W^U@00OzeIdTeizu@ijc`=Rz(%-hGhEm&vK z4ZfHhJpXb9e4cIR$aZsW5G~5R9eV_y>us8;Po6r4&vy(NGsX+i{`94*+wpnx{o}@8 zMP7$mrNlg7xW2zqx*=yGWm?YOLFzsm*(~1yUZir6vg$h_cl-S4JiZ8wO(H_Q+dp*yU%Am zpAhReuM|Z#EW!FM)#dHy#=vhc?hj}Ue%(uQ#PT5azwMa2^$^UDHx>=;TpZWet`(X( zq&0ka`S{ZhgRsuKxWN5#jm_ZMq`Fn}o`uimElr&>BYbw)eA*WH;!Ng3X=h!8&xRcD zjrUI;olJD-R>~Oo>$lr&XJh-ZhA{*1gLnAdp6DZW`omW#*X#^`3tw3lO+R%q{FJq0 z-z~`ZkbS?x&WHzlbsccB1U}yz+PkyidshcChZZc4d3pcvF+*$`;d@^1^Y?cRL>&ES zO?`}OU+xB5%=_T`5PMHgSuhc?|I0Tc;orSg8g2P+2P z2iApkV%=Cr)|GW;-RT4Rfd=p*_{_ZfW`ZEjQS-fYZAuP0e-@w38t!>%X84BUBQ zT_vY2c=s^4+m`yMf7IaI8_l|4{nqJBsl3-QpN`1Y-)Ro~wrAXUy#Mj&N{MB&&ft3P z#n434H(!R|x>q>bqAL96dS=+G*6>@k{#~|a!+hCvXOBei-^pL=RQ`Z@`S`>A=WpYB z-LY1edq2bWBTt;8tct;3bAtM9t_*)QOVE9tfm0Q3UK-^Ie_1XZf?+nd<3)+q3HPrHmk4e#LdzGpT}n~(i=H%NPbAp8`5 zedv->i4g~T9(@6yh8K8Lx=amxPv_i$MWvk({W`RH{sys4+i}CDAy#TvtkiJCZ28yv zVSKwRIz8TZ0-tApm$`R?c7H~0H|@vc*bdv(`(eMPJoLPnC-dewI4+KpPTIwGj(SjSQplbbz>b_SJs(zrw`~0`h>orkLWAbYf)|&TEJ;-Y{<)Cp-PtS~Z#|*!r-SB=c?w$IK8EC%t%1cDYt--U{I8=?+p<1g;jCBjqfX-&)oJsxVvNS-i0R@AhxgB`Ce8;JKIPz_P8)@D|M#stOM)9I4*tLp}i zoIJdCR6FqLcxc4}d6&a)CoYX~20xD^%N+2$A^g_7ZH~I3@YyM+9Jh9XXYK5-cijNL zrMr~O$H1@in;ZTV4xa@#8e0bEExR{&ef1^;{@S&$XEn^zyKeeF>97Vdd-ewS-rb{} zZK6u;Sp*-2p6h)Hd52l=sXEW#lSO_b58?S8)^&o-=D{C9QL|c=M{GQD;hxTj7LJ$O zc;oxpLG|0HJ&64ipKmz`(ed{bIk1ihN%MRCtvB#J#=Aq)jC+l^KQP9AHR9TrV{0Tu zoO3sKL#!);C)aPGjv|iDQ2iY8H$`seemsut=n*XVmO51AbfFDXQlO`0d`HE9 z{@dXNRx07p-jIFK7~XgMGjcok(~o02rgqs6`(+-?OV5*eo5rD!i{mtn zTi1cQP$%j}9jPmIrtYi*>%uy*Zmc8g$~v>|^Z|WApU^k-5q(9U(Ra5T%2&yL4!-L? zevm2$-;E4U;AV&OhJCZFQoe=n$~U)P{|KBr*2gwWUT|(kx%3^{V*U2ZBlC6@F`rI- zb0rXUKCpl7soS-{x4bQ5R>8-6=XJ?3eIWd1TeM!I74TW~o8zIFUw7@bTU|9Xe73dG z%qEH8vmGJp2cx|mSI)I^L0xxbE>xh1fnRN`TkJjzUxoWtOJ5AJY#;vxbKs{fFW0YM zg6KRo?|dux^+9|&EKf76 zO9CEGdLM%Q0v-f)ObC4fqAs-F0$-XUw{t%pr?@zFc zAX??^>W1}INaJkX6QLj6pS1hhKM-v#((gC$YUkAlT@oWUG4H%QA!4Feds89?1~opr z@jc?8lNl;!Ladp#rIjmUp7YO}V*U?Ikf36QnefN$)-&>5M?CqwvIq7H*c0&7aT8+D zz5~-nB5rZn^`s2qhTem$ww$oc zp04+u4RQB~A>jO*4lzW8Zg5DlHdAu*; zz_KsL890_YLwm#TN(F8?l(BUq#7?0p79x+pQZ2e>H}EQ9$oT zX_)r|wmV&z^c->h$_PiSF9O!}nA{$D2W;v+p}4_+LBDQDh50;S?-9p|{SZ&(pI>(i z;FbrY zpF=Dc)MWp|zeH~5emsutuwA_$_G`+6c`;As&2eyC94E(39duo&lSwz~sOw6dO}guK zU|m=z){S*!U0G+=oj#y1=o9*eKBBMaGy3l2(c2j#Ho|v}JG2?O3%)CG=;xim@Li7C z{x@UbJN04klcDh4q@r!g;k+{3y!s!@(}Q#KyEo}L5x#4B_Dzqx@SVfFblKsbP{-?O zC*FeJS{jdykB-5j$m=e7hj(_N;2RiD)-)+S?xCV-TGN)wd5v zv`n6E(s}se($fd^us#UbHO@DW8>@bibch}}+Aw1+-HeTwE= zZx|ONw{t%p$9CAR-VggV<-xp|C-dew^l@>Vrg2jT>O!5U8+FumrOqbZSqHr?tP|_T zIRxeM2A7SM(WucO*U@yt?tKQKHL>D z_)R(ZZKvz?T!XN_+Yz%oPZ`uR^vsnCRkp!zCl`ga+Y7%ves8wA5Mn8dd)9MMm+?oU z2Z3Kf<{fUirbV4+Jh!&PsF+6_s zxb@Ya(65c(quL>eJ?-DD8jiSiMa_jP5MORsRR^!9;PN#idgF0$w?Rc}V_g}%qSb+g z=@9=Y6>}je#${19#SsI)iyk|44&x1R8<}NAR>YQfyc=QvkZ!9&20^Ege*TM+KKM)I zcJ9aH*pA*V`!V&)JoLPnrzvlaLmwB%8OU){2kN5hMBPj}QdjCs-B|~{F02#l#yYaD ztTXFQAJ7-{34KE!(O2{teRr_(yr|1l;JX&v_9rO^->tcODIeBtI}4pyS8_0XcX-I6 z%l`14Urb1Fe&{`^Zta0@QLp6#Ci)~oU9S&m>$nF|H7jX_byi?-x-q4}i$JdhB?~n~ zOllUj{0)3`s?yK{*ATbWU6;!baa}DNpC*Wbl}_Wn9QZw{Qj^#B$NmXw%&xElvEs5R zLouHR4(hYY7Uv;>2cMp86@Y$nH+$N>GvdHxj~|{!yx^6_7UvVe4yzMHz|X-;rl#!w zGxAI}!)~)JVwZ-U#$bEMk=czJVLlBlmScO^Z-^rfXZ@oaV&vSLgPUQT`4$ykhS$xG z_6dJl4F2s{V%}jbxVrD$*-uahu`wTBv=`b*?? z?x!Eec1-QEAH84ZVaiL-lX;uQp^uB>SofBy6QSpcT*i$7uHFy8|!GQ zt6pc;oj#y1=o9*eKBBMaGx~0C)xxQVfipWRSe0qi1G?|;zM?cZ7dpzpas>1b`Ke3T z81O52@Jridy-@cpM<*@?7lTsYc1(l$IdD?Z7d5&g79Cq{dsq1B*4>H4=Oc!ekMhEN z9I&oQu3qkl+nuI8>w?HCHTlzXr|KBmrJXwEwa2;{Rt<=k3;&o@{(yRF|h^?yLaxaP) z@S^1h>=$m~-#T$?M3-Sxs~$ldn6pW%bBK#y4{kRKF*LYs%>syriw%o0?8nIM+>ghx z9lc%lW9nDWgLyGe=FM?%TpTCIO&zEUb)s(6(WI-cGj%uBL9YwzWU3qM$hzuvX5Hxn z`hq^8Z|EcXiaw+7cAZMR@nR6_=pX8P8S_<0_qw6USEJs&-u)Ii4L(@B=KM7S*Iv6# z4sV6nbJLSN241Dx8xsi*1)OSXS9B5L=GqGj8_qvBbZK$lz_$Zao(C8>_-112@oTYv z)e5VYpxwav9rDgW-GY+Gc$dJu7c~CV)zsi!aON{EVZ#wOJaVds`7xw^#?&urAultx zb&s%q3*9igX5ZxSmv6>#$#qBNzA*Vj z_YHkSU(sju-Hyke^V*I>{l~|IMihoGR_zKOx(j}J*)($ka3`?yvMR4qAtvkA++sX@ zb!bA8u?Fs~54|u6>$HHaN4jQ%9|Fz~%z3B=_RBshX8U8rKC2^#fq#MbR@vtG3GMb! zqf_NVKdFkB>}QxqgUg?s(Ly)1U?L+40hg zo5F`Xx2Yjn!MR-v#t)vF4E`FE$FmXU(cM4iYMyL5{8Vpq?vr>O?X}6hwEr0RC22sk zTM5L-dyS*v`~CAuM_-$b>zv-j)}@(?^RYx@_pi8xxFqADrA2TZv~1A!T*&9pmO%*| z;M>Cm2KIi8dH3+}HyI~dARhAyJB#&fgr()l7_2`cN(HVc37$q&&-*YP{Ar5ZuJ6a= zOzr6HvLE)#JeU{rWZoPH$Hj4S+|+@(P$%j}9jPmIrtYi*>%uy*ZmgrJu6mtWcasn3 z3*9I5jmby4ujn)SF2uk1^u|x&6U*qS53|BIz06Y>ejgyva&7+sHt^ShfX)f*5Z7IA za<)EV;LSFTz?pzM-QShKdMU7cr8ASTZVX&>dylgZ+9{l8LkGjWdSKGx=~v;mAtx{N z8V0}Bnib z@L9uU74UudM|*k?NVB&jd^UajPif)*eQOVG$(9fP+N*k}#q$RuKRj=S*U7drc_F02#l#yYaDtTXFQ zAJ7*jpU^kDkLWA7?0XpTcL(HPYA2 z44=(ens-4u`0R0ObHn@Ahn#BJZw8kR&#dHGv?cs?Ia7n`iz~Y0{qz3M-K;VGv#)1&PI3PnrdJL|x@uuiNS>&UvY z&a69qKwr=&^o_|!^p);2`Yv$N$t#Xnmj!I>R(ee{#BHJ7dO0KBaXy#s zh&u;ZmV$qR+Pd{j;0C`HnRhHT{1B4zdATQE@LQ@w9=396s5( z_;h#^_-|KC(NY%&z;Ep;Ege-1e!I~7PLFr+Thj)W@4+AYZ+YIUhsOtdKE9T26nth8 z*v#;~r3gRAdE?=aqeTkMwXX}GZOd|LQZW2wce>)3a`0Dhp+!F6;^~r)UshZNU;SG6 z)GE9lA|IXiuowb=*cJ&LbP%7<_^CnT?#S!>lx@$`VZCu--rl|?4&d_}Gct9li2W~h zZ_#AhT)e+tp>O8OSVvyI=6$F3I(*Kfd-h*zH+Z$VIbz?GVXt>0 z&g^KD3_dqSZrAtYacqa}vLE)#JeU{rWZoPH$Hj4S+|+@(P$%j}9jPmIrtYi*>%uy* zZmc8g$~v>|^Z|WApU^k-5q)Ly8GZN1)~MR3SHSras~?BMZ#L5orJ01dDeZta@MBQZ z3O#3F9u6)()UPKv5|YPvhcD*0(DFV*b~J|XIs_FuHx|Cz9=$GKE%+^u*O{vW!MTMF zb%XcAZ)Fmjy}~+e@0r*26JuWAKlbOfuV=w;F2OfT+rw|EY)?C2UXQq_l0L?~d~{v8 z&ZXOdXTwIMweWz?ycStRVSYWGFGYz#+u^e)?;<&|K0LcBhjZ%m@K=je9ov9|7m_?q zz65YEvvoj4&UC%GrVu$NyPACFMe8x&m%eYcIt!I-`(ZGbDr%r zd_HNUvqxHdKF)G*v8}`YjNES8Pd|?BuwC}UewhdJVxG*K|$ipD6`C=Ue~5%*Dw2QI{hdt>L%mw(|~_g|8o1DRaCdrc_F02#l#yYaDtTXFQAJ7-{34KE!(O2{teHWNv?oTnOPtchwZw>4J z;4>#XkG=@sCD@yKFL<@1e#Q}H8p3x+GB&AL1HS8Mb$|P1_^x1?0?W$6cOOE>4r>74 zJw0nz&2T>YVR7k<_rST_RXW&$8%OE|dpzBM`E-V@RuGSGjHEN-*52U%SkDlSHS#gHTr65 z)bn7K&h6`zgzrYzn6w=8^pU%{Z_P*s&NX}Trq>;C?&j8jn(+6T{w>TbtHEzst~k`J z1-|XHt`b}te(O^BQI~7*Th>2%MY_Xp`^x6GJc4=hXWJF7)|mfNJ*~FyEI77oKnCk( z@L9>{-3}ap&sNTMJ8%&GO1;{@a!>fH)s$1muzq|wH>mN0dhk_na8y(nd=yqKVMh2l zW@*-P$Kd-99ZC(Ui2Ej)jjXx#81BQ9pjvp=l(_F*f=9(qd*Xfp2}d1ES;hn37qc|) zhu_hSHt%bj{rw%pW6z$v#{E|kr8_(D9PT@iNcojrh5M@{@=koy8TSP;MQ+#k<8h{T z^mf?~`(++_Ud+>!H^;$oahx1Cb)YWPiMmlo>PnrdJL|x@uuiNS>&UvY&a69qKwr=& z^bLJPU(sjuUGU%sKYPuG?<~Vp&BywEXXuukR#-2F&kLU)0zd3onxp(EaBtu7tM@)M zf$#Fw=J5Cm9c?##F{SU7w0>4Gpc)TM^U##B>Wp=dc zh50mX>a)!kV7+FsVpppX@LPgaD<*+wH$U9`^$^zicitCBKMw6hy|!~J1a3ZjnA9`C z3p_j5VXhg@bDnLl>v3=@d^S4Z!S0dZR`tz$UBSn9_gk&`8F_se@OEag;_%n2_F4Vw z!B6=MHh2&M|2V`<9eoTwaSJbC^8(*Xtk(2tpI7)^to1&e?jpWPG3xbvd_Q|@y`m*? zpQofvBK`=#{dbbyKf1SHL41F^ZRjBj+w@SwrR#b_Y-AnK z6yI|+MQ+#k<8f?87aI#tK{?~&V;?>XT-_4uaic73q!J2iK)OW7d!Zob>{-JbB>mU#)EVIIDC z*~|AN)@N5U=l$dHMVuEj*=*h=0`uw0wQrWb!+iR7yM4*)@SA&&a5wPt@uJa1mV&p> z9?nhs4*kC>(`wA1G~ik1>63mxhVK#1db;ys6nqxB%3`WJeAdw2w)JlK?8vo_J5$16 z<)faSaf7cWe|U3k0ep2f?ACCDe^Oo9=eZs}DVsMqeFW|gP`yd5pK*VtJ{d@`c z4ancMbjWhVCrvYj8}47RqW#+&xW8E{r^pS3a382t2Q7;2$Ng4Pm+j=yttsM&*>fxw zBL-Ib-Tfru=`3sCrNlg7xW2zLm$ys^cj7(Gs7&4a}#ks+dJ#ZJ!3H6-mMyC z_+I#-(YKnc=?~wzCpa==D129WNXOCe-zm2$z1F;j@A{gR>#!QW+d1m_RPgXpzQHz^ z2Eup#qpq(V2hQay|LhgkRd)ijo-1aB^;_d@wLIXb=tSdfhhx3}bVHh*UDAPXO?USy zpy0P8ITpEF!fz}64?e7lc{2Cq#r-S7Z?~-a4le-4%`RP!s}+YIk^8$lDCel z$G~67W@OyZyDR*aI=@c7k!@X3_WEUwr;O~BT7 z`;XxMDTgMeYu*U=@7Yr#lj~mGKWgcMQd!#J{wkf`7qrEF12SeBHt@t~#N~s3_AZ9| zOl50+^ic}L?(28|hWm|WT9dh@^*F?XjkAT!`b*???x!EecGxcaVZY3Sc`;As&2eyC z94E(39jFU+qHfet*OfY(bY~q{7uJb&V;xyn)|qvu59kZ}gubDV=qvh+zT0intnUNN zy9bBlnw9PkoX>juOxiI6=M{~7ZtgOi$Br`Zy%6ibGm(YDp5nUAA8x}|jL!|;UD)B{ z`Vzhy*VlFWPWY~_ZMQ?ov7Re3@K+ZPoR4PMeB|z1a4w~DK3l9OpQoPCb_&iLUT3~g zI0Wm_n0zCmf(w9evpTHvdkDYb>UH=N_-&TkoYCdsw~436t{H>*agfja#8|&swoYQ( zrzCu4m+imhz zDp4o+GgGUb(=QjoeWaGIsoW2|%yP8xpsU?*f2m6=93M2q{mo8{sqzy3%>KJ&^@Fc* zAKNxQBZIwg|1+}yzugvygQpIfkM&{Bi>+FE|AhPTWsmT9fq6Ywm1%)pxBn&T+qs|V zIK3UV%YN7|^I%@glX-I-92dvQaZ?BCLY=4^b)>G;nY!zBU|mdgV%=Cr)|GW;-RT4R zfd=p*`yKBMpUMQ$rl8C*J=sbR;$r&BPcg6F$)Ce7HP(ao$38oA^#y!q`6ywgDEMx1?cf2J$KSZC zx#J7syutETh&RqN6Wp~{slb;+b;H8i;XJ`2uwwI+@K>^Y{Lm`5Ls zJJf3@{N|Q7PgR`Hrk&rmYJ2c5{hiwB+GhgK3Pkp33qNM5pUmn5?h~7>$0HjzgU^O6 zI$C}ec+}6SC4PrAI!}}2(aAAy<||YsT?BZT|D5%ct2kdN*wwzup`!51y_l?x;J3mq zA5wWN!~JhZzTCeWJS)0*>xtJm?=7~laM}F0?_=@)jcznlxIeQ^-#k~!AnragH``_W zPC=O?-K*|E9Bh^F651=dxboO}!~YVwUEhz#u^qO{e%LSbU|!6Vd2<{b7sttQQwQoo zov0giq^{JNy0Z?f3+u$X>2+jXO?777=>z(LKA~^uBl?OyqwkLG8nmf1)`jPyo+Lbh zb>O9hzm#Zx8{Z>!cC<-+57$pN9mqNq*JYwyCjFir+W>e}ss-$Eaa9+e+FE84x{>Vx3fn36T$ zz(;vcW~^Af7kFivr_g!uvrtiQtC)K5SJ{XY*Kj^jH2>;pW#QXmuZwSM{}Mi0zo>NH zocR3#*PmwKeduVLU77Mf>V)4R$Wr0l*>Si(cG;nYyzMtPAVJy0MO|t6pc;-Q)xMfd=p*`yKBMo> zBz_oi$uQqqx9GbJ*P(B$&+TN7`S@N@aUh6%Y2)rRk`@AHlv0pD#aSH1}D8*z9=^;?Nj_dMxG8!avlCN za=U3i{W!M6cG(a6Wgg6nc`|Q~gX7{jId1AeU8oavqmI;-I#YMnfpuY>SU1*@b!DAd zciji{g~=!M4Shsk(P#AC`QuNmlkW%jqVr_Ui1Xd3`^(C18;CY$K`GIM75Zu0fFRX4+TeoGrZ z!MZ-}iaIy0zz-P$ew}ipIed4h_{!g2gL8juFC2mSGUv^+8D+0d4+3N(h#USB%) za25R3V8Nx;_2I9X6LKYk|Lr#~80)kQe%kP0Ws3Ch%lIWF-{SRCU8U$#2Is*}5!3Fu z{e<7WD80k$Jl2ghesZ*W3m>}UDOcH+KQJH%x}{WEmI?_!uc zCOZzk*Rt8>Ua-brqQ0H`@i?}_cG(a6Wgg6nc`|Q~gX7{jId1AeU8oavqmI;-I#YMn zfpuY>SU1*@b!DAdclv<7(0xMRn0!QE(P#ACwF0Nxx5m2gVb!6t&eaF^whh`?dK%{2 zCK)}?;(e75#YXNcmk{T()4Ct-wjbve3x6HetSrteLg!tdmKE!}d#xMXItt(A**XmG zQ%9$5<$b*f&OA{zodW+A^XuSmxF2oFoul1SN5F4?wBLSf0Q`1!%=(!3nEy`sdfzUG-&0vX zA;@_seAZ)ppMF=tr)=guYyF1bgIcm=<0{Of&M8Y5SXT9HA&N{FztP|_TITH?i>2Z_iB_&|IhuLI$La6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>J zI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|j zgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmf zKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so& z2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rc za6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`5 z2nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8} zfN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl z4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6> z;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A z5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{ z0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX9 z91so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1% z!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%K zARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ? z1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>J zI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|j zgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmf zKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so& z2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rc za6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`5 z2nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8} zfN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl z4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6> z;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A z5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{ z0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX9 z91so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1% z!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%K zARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ? z1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>J zI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|j zgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmf zKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so& z2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rc za6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`5 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

t-iMM`-6|^I?=W^ojpoCh4Bp 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 literal 0 HcmV?d00001 diff --git a/core/src/commonTest/data/netcdf3/simple_xy.nc b/core/src/commonTest/data/netcdf3/simple_xy.nc new file mode 100755 index 0000000000000000000000000000000000000000..010c0a95f2c4769d2c98aaad71f63d67ebc86e90 GIT binary patch literal 384 zcmXxdXHtSO5CBk6>=nh1fCWJm6v2iK1@Rg(;}Q6QxA!gIxHB)i$tIg#e~?Zku_#TE z9w+xKYvb&GW2>~SUVgdr@y_&js9s<;n#N5ppZ$%qF$M!p4xoZA11wa z*LS0+9gosQ$P{Rx%rO@nWuw@QyHwS zkKE96JAVJFCE7KN^7+TxwWA?|e?eqoQlP5h66#rkOuI;TZe%R7iE@iS4S}n`NBuiK z8|V+3auQ5HaNA|i_wTxX(x2LjD#ouiZNu6qS50wRKqS#|0%Nt(Y{4oT5yC6@(F;B* z1cf@_Pfdh<@b1g6hP`!Ldky-H9PN*S-O{O&%rRGJE7u>^qRBcYrWQ`N%=!}jRiXP+Mx7FvH zcB9I2WY;v!8&&M=B*k9?jj4TINTuv00ulj)D!2bAm`Tzg` literal 0 HcmV?d00001 diff --git a/core/src/commonTest/data/netcdf4/tst_enums.nc b/core/src/commonTest/data/netcdf4/tst_enums.nc new file mode 100755 index 0000000000000000000000000000000000000000..c8985c997d439b2dd71c14058e29bc83a00308a2 GIT binary patch literal 675 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 literal 0 HcmV?d00001 diff --git a/core/src/commonTest/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt b/core/src/commonTest/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt index 869db39c..4da8f966 100644 --- a/core/src/commonTest/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt +++ b/core/src/commonTest/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt @@ -13,101 +13,6 @@ class JhdfReadTest { } } - @Test - fun problem() { - val filename = "$testData/jhdf/compound_datasets_earliest.hdf5" - println(filename) - readNetchdfData(filename, "vlen_chunked_compound", null, true, true) - } - - // HDF5 "$testData/jhdf/bitshuffle_datasets.hdf5" { - //GROUP "/" { - // DATASET "float32_bs0_comp0" { - // DATATYPE H5T_IEEE_F32LE - // DATASPACE SIMPLE { ( 20 ) / ( 20 ) } - // } - // DATASET "float32_bs0_comp2" { - // DATATYPE H5T_IEEE_F32LE - // DATASPACE SIMPLE { ( 20 ) / ( 20 ) } - // } ... - // @Test - fun testBitShuffle() { // 3 - val filename = "$testData/jhdf/bitshuffle_datasets.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - @Test - fun testBTree2() { // 4 - val filename = "$testData/jhdf/chunked_v4_datasets.hdf5 " - println(filename) - readNetchdfData(filename, "/filtered_btree_v2/int8", null, false, true) - readNetchdfData(filename, "/filtered_extensible_array/int8", null, false, true) - readNetchdfData(filename, "/filtered_extensible_array/large_int16", null, false, true) - readNetchdfData(filename, null, null, true, true) - } - - // getHeapDataAsArray datatype=vlen null - @Test - fun testVlenHeapData() { // 6 - val filename = "$testData/jhdf/compound_datasets_earliest.hdf5" - println(filename) - readNetchdfData(filename, "vlen_chunked_compound", null, true, false) - } - - // see jhdf/src/main/java/io/jhdf/object/datatype/FloatingPoint.java - @Test - fun testHalfFloat() { // 12 - val filename = "$testData/jhdf/float_special_values_earliest.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - // private typedefs - @Test - fun testCompoundTypedef() { // 18 - val filename = "$testData/jhdf/isssue-523.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - @Test - fun testFractalHeap() { // 28 - val filename = "$testData/jhdf/test_attribute_latest.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - // Unknown filter type= lzf name = lzf - // @Test - fun testLzfFilter() { // 37 - val filename = "$testData/jhdf/test_compressed_chunked_datasets_earliest.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - // private typedefs - @Test - fun testVlen() { // 63 - val filename = "$testData/jhdf/test_vlen_datasets_latest.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - @Test - fun testCompoundAttribute() { - val filename = "$testData/jhdf/test_compound_scalar_attribute.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - - @Test - fun testCommittedDatatype() { - val filename = "$testData/jhdf/issue255_example.hdf5" - println(filename) - readNetchdfData(filename, null, null, true, false) - } - ///////////////////////////////////// @Test fun testReadAllJhdfFiles() { @@ -115,7 +20,6 @@ class JhdfReadTest { println(filename) readNetchdfData(filename, null, null, true, false) } - } } \ No newline at end of file diff --git a/core/src/commonTest/kotlin/com/sunya/netchdf/testutil/TestFiles.kt b/core/src/commonTest/kotlin/com/sunya/netchdf/testutil/TestFiles.kt index e2b570e5..7c904704 100644 --- a/core/src/commonTest/kotlin/com/sunya/netchdf/testutil/TestFiles.kt +++ b/core/src/commonTest/kotlin/com/sunya/netchdf/testutil/TestFiles.kt @@ -4,7 +4,7 @@ import okio.FileSystem import okio.Path import okio.Path.Companion.toPath -const val testData = "src/commonTest/data/" +const val testData = "../core/src/commonTest/data/" fun testFilesIn(dirPath: String): TestFiles.SequenceBuilder { return TestFiles.SequenceBuilder(dirPath) diff --git a/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5CTypeInfo.kt b/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5CTypeInfo.kt index 0443bb45..b5030ede 100644 --- a/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5CTypeInfo.kt +++ b/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5CTypeInfo.kt @@ -182,6 +182,7 @@ internal data class H5CTypeInfo(val type_id: Long, val type_class : Int, val ele 1 -> Datatype.ENUM1.withTypedef(typedef) 2 -> Datatype.ENUM2.withTypedef(typedef) 4 -> Datatype.ENUM4.withTypedef(typedef) + 8 -> Datatype.ENUM8.withTypedef(typedef) else -> throw RuntimeException("Bad hdf5 enum type with size= ${this.elemSize}") } } diff --git a/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5Cbuilder.kt b/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5Cbuilder.kt index 50faafd1..2b0bdb1b 100644 --- a/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5Cbuilder.kt +++ b/testclibs/src/main/kotlin/com/sunya/netchdf/hdf5Clib/H5Cbuilder.kt @@ -241,7 +241,10 @@ class H5Cbuilder(val filename: String) { val ltype = H5L_info2_t.`type$get`(linkinfo, 0L) // H5L_type_t if (ltype == H5L_TYPE_HARD()) { val address = H5L_info2_t.u.ofAddress(linkinfo, context.arena) - if (debug) println("${indent}H5L_TYPE_HARD, address=$address") + if (debug) { + val addressp = address.address() + println("${indent}H5L_TYPE_HARD, address=$addressp reverseBE=${addressp.reverseByteOrder(true)} reverseLE=${addressp.reverseByteOrder(false)}") + } } else if (ltype == H5L_TYPE_SOFT()) { val val_size = H5L_info2_t.u.`val_size$get`(linkinfo, 0L) if (debug) println("${indent}H5L_TYPE_SOFT, val_size=$val_size") @@ -278,6 +281,11 @@ class H5Cbuilder(val filename: String) { val loc_id = H5Oopen(group_id, linkname_p, H5P_DEFAULT_LONG) val oinfo_p = H5O_info2_t.allocate(context.arena) + val errno = H5Oget_info3(loc_id, oinfo_p, H5O_INFO_ALL()) + if (errno < 0) { + println("H5Oget_info3 failed ($errno) on linkname $linkname") + return 0 // bogus "no error" + } checkErr("H5Oget_info3", H5Oget_info3(loc_id, oinfo_p, H5O_INFO_ALL())) val otype = H5O_info2_t.`type$get`(oinfo_p) val num_attr = H5O_info2_t.`num_attrs$get`(oinfo_p) @@ -506,13 +514,9 @@ class H5Cbuilder(val filename: String) { if (isVariable) context.group.addVariable(vb) // datasetId is transient - var address = H5Dget_offset(datasetId) - /* println("**H5Cbuilder obj_name=$obj_name datasetId=$datasetId address=$address") // maybe there a byte order problem ?? - if (address < 0) { - val reversed = datasetId.reverseByteOrder() // doesnt work - address = H5Dget_offset(reversed) - println(" try again with byte order reversed: datasetId=$reversed address=$address") // maybe there a byte order problem ?? - } */ + val address = H5Dget_offset(datasetId) + // println("**H5Cbuilder obj_name=$obj_name datasetId=$datasetId address=$address") // maybe there a byte order problem ?? + if (address > 0) datasetMap[address] = Pair(context.group, vb) if (obj_name.startsWith("StructMetadata")) { diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/CompareCdmWithClib.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/CompareCdmWithClib.kt index 04d3ede6..13873bb1 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/CompareCdmWithClib.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/CompareCdmWithClib.kt @@ -69,8 +69,9 @@ fun compareGroup(group: Group, cgroup: Group, indent: Indent, showCompare: Boole } group.variables.forEach { v -> - val cv = cgroup.variables.find { it.name == v.name }!! - compareVariable(v, cv, indent.incr(), showCompare) + val cv = cgroup.variables.find { it.name == v.name } + if (cv == null) println("***cant find c variable ${v.fullname()}") + else compareVariable(v, cv, indent.incr(), showCompare) } group.groups.forEach { nested -> diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/KnownProblemFiles.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/KnownProblemFiles.kt index 159a388a..f66c6922 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/KnownProblemFiles.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/KnownProblemFiles.kt @@ -5,6 +5,7 @@ package com.sunya.netchdf import com.sunya.cdm.util.InternalLibraryApi import com.sunya.netchdf.hdf4.Hdf4File import com.sunya.netchdf.hdf5Clib.compareDataWithHdf5Clib +import com.sunya.netchdf.netcdf4.compareH5andNclib import com.sunya.netchdf.testutils.testData import kotlin.test.* import kotlin.test.assertTrue @@ -13,269 +14,22 @@ val problemDir = testData + "/exclude/" class KnownProblemFiles { - // LOOK theory is that a HDF5_DIMENSION_LIST that is a vlen of reference is a netcdf4 file - // but its not, we dont care, but using Nclib fails to detect missing data for Variable Granule. - @Test - fun testConfuseHdf5WithNetcdf4() { - val filename = testData + "/netchdf/knox/SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_noaa_ops.h5" - // CompareNetchdf(filename, true) - compareDataWithClib(filename, "Granule") - } - - @Test - fun testConfusedHdf5() { - val filename = testData + "/netchdf/knox/SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_noaa_ops.h5" - // CompareNetchdf(filename, true) - compareDataWithHdf5Clib(filename, "Granule", null) - } - /* tst_grps - Maybe netcdf-4 skips opaque type? - -(Netcdf4) -netcdf tst_grps.nc4 { -types: - int(*) vlen-1 ; - byte(*) vlen-2 ; - -group: the_in_crowd { -} - -group: the_out_crowd { - - group: the_confused_crowd { - } -} -} - -(netchdf) -netcdf tst_grps.nc4 { -types: - opaque(10) opaque-1 ; - int(*) vlen-1 ; - byte(*) vlen-2 ; - -group: the_in_crowd { - types: - opaque(7) opaque-2 ; -} - -group: the_out_crowd { - types: - opaque(4) opaque-3 ; - - group: the_confused_crowd { - types: - opaque(13) opaque-4 ; - } -} -} */ - @Test - fun tst_grps() { - CompareCdmWithClib(testData + "devcdm/netcdf4/tst_grps.nc4") - } - - @Test - // We seem to be suppressing user types that are not used. - // C library shows - // compound compound_att_float { - // float field0 ; - // float field1 ; - // float field2 ; - // float field3 ; - // }; // compound_att_float - fun compoundAttributeTest() { - CompareCdmWithClib(testData + "cdmUnitTest/formats/netcdf4/compound-attribute-test.nc") - } - - // We use HDFEOS_INFORMATION to modify the structure, Nclib does not. - @Test - fun testEos() { - compareDataWithClib(testData + "cdmUnitTest/formats/hdf5/aura/MLS-Aura_L2GP-BrO_v01-52-c01_2007d029.he5") - } - - // NClibFile has: - // group: image9 { - // variables: - // ubyte image_data(3712, 3712) ; - // :DISPLAY_ORIGIN = "UL" ; - // - // Hdf5file has - // group: image9 { - // variables: - // ubyte image_data(3712, 3712) ; - // :CLASS = "IMAGE" ; - // :DISPLAY_ORIGIN = "UL" ; - // :PALETTE = "/visualisation9/color_palette" ; - // - // Im guessing CLASS and PALETTE attributes are supressed. In c library or our code? - - @Test - fun problemReferenceToPallette() { - // compareH5andNclib(testData + "netchdf/esben/level2_MSG2_8bit_VISIR_STD_20091005_0700.H5") - compareDataWithClib(testData + "netchdf/esben/level2_MSG2_8bit_VISIR_STD_20091005_0700.H5") - } - - // netcdf library version 4.9.2-development of Mar 19 2023 10:42:31 - // ~/install/netcdf4/bin:$ ./ncdump -h /home/all/testdata/netchdf/austin/H12007_1m_MLLW_1of6.bag - // netcdf H12007_1m_MLLW_1of6 { - // - //group: BAG_root { - // dimensions: - // phony_dim_0 = 3027 ; - // phony_dim_1 = 6981 ; - // phony_dim_2 = UNLIMITED ; // (4953 currently) - // variables: - // float elevation(phony_dim_0, phony_dim_1) ; - // elevation:Minimum\ Elevation\ Value = -26.52571f ; - // elevation:Maximum\ Elevation\ Value = -4.265297f ; - // char metadata(phony_dim_2) ; - // float uncertainty(phony_dim_0, phony_dim_1) ; - // uncertainty:Minimum\ Uncertainty\ Value = 0.139f ; - // uncertainty:Maximum\ Uncertainty\ Value = 1.001f ; - // - // // group attributes: - // :Bag\ Version = "1.1.0\000\000\000ISO19139/smXML/metadataE" ; - // } // group BAG_root - //} - // - // NClibFile: - // netcdf H12007_1m_MLLW_1of6.bag { - // - // group: BAG_root { - // variables: - // float elevation(3027, 6981) ; - // :Maximum_Elevation_Value = -4.265297f ; - // :Minimum_Elevation_Value = -26.525713f ; - // char metadata(4953) ; - // float uncertainty(3027, 6981) ; - // :Maximum_Uncertainty_Value = 1.001f ; - // :Minimum_Uncertainty_Value = 0.13900001f ; - // - // // group attributes: - // :Bag_Version = "1.1.0" ; - // } - //} - //////////////////////////////////////////////////////////////////////// - - // Upgrade to netcdf library version 4.10.0-development of May 23 2025 14:45:19 $ - // ~/install/netcdf4/bin:$ ./ncdump -h /home/all/testdata/netchdf/austin/H12007_1m_MLLW_1of6.bag - - - //netcdf H12007_1m_MLLW_1of6 { - // - //group: BAG_root { - // types: - // compound _AnonymousCompound1 { - // uint row ; - // uint col ; - // float depth ; - // float uncertainty ; - // ubyte track_code ; - // short list_series ; - // }; // _AnonymousCompound1 - // dimensions: - // phony_dim_0 = 3027 ; - // phony_dim_1 = 6981 ; - // phony_dim_2 = UNLIMITED ; // (4953 currently) - // phony_dim_3 = UNLIMITED ; // (6 currently) - // variables: - // float elevation(phony_dim_0, phony_dim_1) ; - // elevation:Minimum\ Elevation\ Value = -26.52571f ; - // elevation:Maximum\ Elevation\ Value = -4.265297f ; - // char metadata(phony_dim_2) ; - // _AnonymousCompound1 tracking_list(phony_dim_3) ; - // tracking_list:Tracking\ List\ Length = 6U ; - // float uncertainty(phony_dim_0, phony_dim_1) ; - // uncertainty:Minimum\ Uncertainty\ Value = 0.139f ; - // uncertainty:Maximum\ Uncertainty\ Value = 1.001f ; - // - // // group attributes: - // :Bag\ Version = "1.1.0\000\000\000ISO19139/smXML/metadataE" ; - // } // group BAG_root - //} - // - // NClibFile: - // ncfile = netcdf H12007_1m_MLLW_1of6.bag { - // - // group: BAG_root { - // types: - // compound _AnonymousCompound1 { - // uint row ; - // uint col ; - // float depth ; - // float uncertainty ; - // ubyte track_code ; - // short list_series ; - // }; // _AnonymousCompound1 - // variables: - // float elevation(3027, 6981) ; - // :Maximum_Elevation_Value = -4.265297f ; - // :Minimum_Elevation_Value = -26.525713f ; - // char metadata(4953) ; - // _AnonymousCompound1 tracking_list(6) ; - // :Tracking_List_Length = 6 ; - // float uncertainty(3027, 6981) ; - // :Maximum_Uncertainty_Value = 1.001f ; - // :Minimum_Uncertainty_Value = 0.13900001f ; - // - // // group attributes: - // :Bag_Version = "1.1.0" ; - // } - //} - ////////////////////////////////////////// - // org.opentest4j.AssertionFailedError: variable /BAG_root/metadata ==> expected: - // - // ','<','s','m','X','M', ... - //> but was: = pt[i] : String.format("shape[%s]=(%s) should not be less than pt[%s]=(%s)", i, shape[i], i, pt[i]); - // tile[i] = index[i] / chunk[i] // LOOK seems wrong, rounding down ?? - // } - // return tile - // } - /* @Test - fun testNetchIterate() { - val filename = problemDir + "UpperDeschutes_t4p10_swemelt.nc" - val varname = "UpperDeschutes_t4p10_swemelt" - // *** double UpperDeschutes_t4p10_swemelt[8395, 781, 385] skip read ArrayData too many bytes= 2524250575 - compareNetchIterate(filename, varname) - - // readH5concurrent(filename, null) - } */ - - // * IP8/1 usedBy=false pos=18664902/32 rgb=147,0,108,144,0,111,141,0,114,138,0,117,135,0,120,132,0,123,129,0,126,126,0,129,123,0,132,120,0,135,117,0,138,114,0,141,111,0,144,108,0,147,105,0,150,102,0,153,99,0,156,96,0,159,93,0,162,90,0,165,87,0,168,84,0,171,81,0,174,78,0,177,75,0,180,72,0,183,69,0,186,66,0,189,63,0,192,60,0,195,57,0,198,54,0,201,51,0,204,48,0,207,45,0,210,42,0,213,39,0,216,36,0,219,33,0,222,30,0,225,27,0,228,24,0,231,21,0,234,18,0,237,15,0,240,12,0,243,9,0,246,6,0,249,0,0,252,0,0,255,0,5,255,0,10,255,0,16,255,0,21,255,0,26,255,0,32,255,0,37,255,0,42,255,0,48,255,0,53,255,0,58,255,0,64,255,0,69,255,0,74,255,0,80,255,0,85,255,0,90,255,0,96,255,0,101,255,0,106,255,0,112,255,0,117,255,0,122,255,0,128,255,0,133,255,0,138,255,0,144,255,0,149,255,0,154,255,0,160,255,0,165,255,0,170,255,0,176,255,0,181,255,0,186,255,0,192,255,0,197,255,0,202,255,0,208,255,0,213,255,0,218,255,0,224,255,0,229,255,0,234,255,0,240,255,0,245,255,0,250,255,0,255,255,0,255,247,0,255,239,0,255,231,0,255,223,0,255,215,0,255,207,0,255,199,0,255,191,0,255,183,0,255,175,0,255,167,0,255,159,0,255,151,0,255,143,0,255,135,0,255,127,0,255,119,0,255,111,0,255,103,0,255,95,0,255,87,0,255,79,0,255,71,0,255,63,0,255,55,0,255,47,0,255,39,0,255,31,0,255,23,0,255,15,0,255,0,8,255,0,16,255,0,24,255,0,32,255,0,40,255,0,48,255,0,56,255,0,64,255,0,72,255,0,80,255,0,88,255,0,96,255,0,104,255,0,112,255,0,120,255,0,128,255,0,136,255,0,144,255,0,152,255,0,160,255,0,168,255,0,176,255,0,184,255,0,192,255,0,200,255,0,208,255,0,216,255,0,224,255,0,232,255,0,240,255,0,248,255,0,255,255,0,255,251,0,255,247,0,255,243,0,255,239,0,255,235,0,255,231,0,255,227,0,255,223,0,255,219,0,255,215,0,255,211,0,255,207,0,255,203,0,255,199,0,255,195,0,255,191,0,255,187,0,255,183,0,255,179,0,255,175,0,255,171,0,255,167,0,255,163,0,255,159,0,255,155,0,255,151,0,255,147,0,255,143,0,255,139,0,255,135,0,255,131,0,255,127,0,255,123,0,255,119,0,255,115,0,255,111,0,255,107,0,255,103,0,255,99,0,255,95,0,255,91,0,255,87,0,255,83,0,255,79,0,255,75,0,255,71,0,255,67,0,255,63,0,255,59,0,255,55,0,255,51,0,255,47,0,255,43,0,255,39,0,255,35,0,255,31,0,255,27,0,255,23,0,255,19,0,255,15,0,255,11,0,255,7,0,255,3,0,255,0,0,250,0,0,245,0,0,240,0,0,235,0,0,230,0,0,225,0,0,220,0,0,215,0,0,210,0,0,205,0,0,200,0,0,195,0,0,190,0,0,185,0,0,180,0,0,175,0,0,170,0,0,165,0,0,160,0,0,155,0,0,150,0,0,145,0,0,140,0,0,135,0,0,130,0,0,125,0,0,120,0,0,115,0,0,110,0,0,105,0,0,0,0,0, - // * LUT/1 usedBy=false pos=18664902/32 nelems=null - // DIL/1 usedBy=true pos=18665670/31 for=1/201 text=palette + // superblockIsOffsetNPP.h5 is opened as a Netcdf4 file, but same problem with hdf5 + // not picking up missing value + // *** FAIL comparing data for variable = ubyte Granule [Granule] + //255 != 0 at idx = 1 + //255 != 0 at idx = 2 + //255 != 0 at idx = 3 + //255 != 0 at idx = 4 + //255 != 0 at idx = 5 + //255 != 0 at idx = 6 + // *** count values differ = 6 same = 1 @Test - fun problemDIL() { - val filename = testData + "hdf4/S2007329.L3m_DAY_CHLO_9" - openNetchdfFileWithFormat(filename, NetchdfFileFormat.HDF4).use { h4file -> - if (h4file == null) { - println("Cant open $filename") - } else { - println("--- ${h4file.type()} $filename ") - val hdf4File = h4file as Hdf4File - assertTrue(0 == hdf4File.header.showTags(true, true, false)) - } - } + fun superblockIsOffsetNPP() { + val filename = problemDir + "superblockIsOffsetNPP.h5" + compareH5andNclib(filename, compareData = true) + CompareCdmWithClib(filename, true) + compareDataWithClib(filename, varname = "Granule") } @Test @@ -283,33 +37,22 @@ group: the_out_crowd { CompareCdmWithClib(problemDir + "OMI-Aura_L2-OMTO3_2009m0829t1219-o27250_v003-2009m0829t175727.he5") } + // H5C cant find dataset reference for Attribute(orgName=PALETTE, datatype=reference, values=[-1]) @Test - fun problem() { + fun attReference() { val filename = problemDir + "RAD_NL25_PCP_NA_200804110600.h5" CompareCdmWithClib(filename) compareDataWithClib(filename) } // tried to add duplicate dimension 'lv1' + // ncdump gives "NetCDF: Invalid dimension ID or name". assumed damaged file @Test - fun problem2() { - val filename = testData + "netchdf/gilmore/data.nc" + fun dupDimensions() { + val filename = problemDir + "gilmore/data.nc" + showNetchdfHeader(filename) CompareCdmWithClib(filename) compareDataWithClib(filename) } - // not picking up missing value ?? - // *** FAIL comparing data for variable = ubyte Granule [Granule] - //255 != 0 at idx = 1 - //255 != 0 at idx = 2 - //255 != 0 at idx = 3 - //255 != 0 at idx = 4 - //255 != 0 at idx = 5 - //255 != 0 at idx = 6 - // *** count values differ = 6 same = 1 - @Test - fun superblockIsOffsetNPP() { - compareDataWithClib(testData + "exclude/superblockIsOffsetNPP.h5") - } - } \ No newline at end of file diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/NetchdfClibExtra.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/NetchdfClibExtra.kt index cb883aae..8e29580c 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/NetchdfClibExtra.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/NetchdfClibExtra.kt @@ -88,7 +88,7 @@ class NetchdfClibExtra { } } - @Test + // @Test fun testFilesAfter() { var skip = true files().forEach { filename -> diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfCompareTest.kt similarity index 59% rename from testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt rename to testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfCompareTest.kt index 61721a92..e629b936 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfReadTest.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5/JhdfCompareTest.kt @@ -5,7 +5,7 @@ import com.sunya.netchdf.compareDataWithClib import com.sunya.netchdf.testfiles.JhdfFiles import kotlin.test.Test -class JhdfReadTest { +class JhdfCompareTest { companion object { @JvmStatic fun files(): Iterator { @@ -19,25 +19,29 @@ class JhdfReadTest { FilterRegistrar.registerFilter(BitShuffleFilter()) } */ + // H5Aread VlenString return -1 + //java.io.IOException: H5Aread VlenString return -1 + // at com.sunya.netchdf.hdf5Clib.H5CbuilderKt.checkErr(H5Cbuilder.kt:720) + // at com.sunya.netchdf.hdf5Clib.H5Cbuilder.readVlenStrings$testclibs(H5Cbuilder.kt:645) @Test fun problem() { - CompareCdmWithClib("../core/src/commonTest/data/jhdf/compound_datasets_earliest.hdf5", showCdl = true, showCompare = true) - // CompareNetchdf("../core/src/commonTest/data/jhdf/compound_datasets_earliest.hdf5", showCdl= true) + val filename = "../core/src/commonTest/data/jhdf/globalheaps_test.hdf5" + CompareCdmWithClib(filename, showCdl = true, showCompare = true) + compareDataWithClib(filename) } + // lots of link messages we dont handle @Test fun problem2() { - CompareCdmWithClib("../core/src/commonTest/data/jhdf/compound_datasets_latest.hdf5", showCdl= true, showCompare = true) - } - - @Test - fun failure() { - CompareCdmWithClib("../core/src/commonTest/data/jhdf/globalheaps_test.hdf5", showCdl= true, showCompare = true) + val filename = "../core/src/commonTest/data/jhdf/test_file.hdf5" + CompareCdmWithClib(filename, showCdl = true, showCompare = true) + compareDataWithClib(filename) } @Test fun compareNetchdf() { files().forEach { filename -> + println(filename) try { CompareCdmWithClib(filename, false, false) } catch (e: Throwable) { @@ -50,6 +54,7 @@ class JhdfReadTest { @Test fun compareDataWithClib() { files().forEach { filename -> + println(filename) try { compareDataWithClib(filename) } catch (e: Throwable) { diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5Clib/H5CopenTest.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5Clib/H5CopenTest.kt index 2d633c0b..7869c3a1 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5Clib/H5CopenTest.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/hdf5Clib/H5CopenTest.kt @@ -106,14 +106,6 @@ class H5CopenTest { compareDataWithClib(filename, "IntArray") } - @Test - fun testConfuseHdf5WithNetcdf4() { - val filename = - testData + "/netchdf/knox/SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_noaa_ops.h5" - // CompareNetchdf(filename, true) - compareDataWithHdf5Clib(filename, "Granule") - } - /////////////////////////////////////////////////////////////////////////////////// @Test diff --git a/testclibs/src/test/kotlin/com/sunya/netchdf/netcdf4/CompareH5andNclib.kt b/testclibs/src/test/kotlin/com/sunya/netchdf/netcdf4/CompareH5andNclib.kt index 05f1bbc1..f6e135c0 100644 --- a/testclibs/src/test/kotlin/com/sunya/netchdf/netcdf4/CompareH5andNclib.kt +++ b/testclibs/src/test/kotlin/com/sunya/netchdf/netcdf4/CompareH5andNclib.kt @@ -2,6 +2,7 @@ package com.sunya.netchdf.netcdf4 import com.sunya.netchdf.NetchdfFileFormat import com.sunya.netchdf.compareDataWithClib +import com.sunya.netchdf.compareNetcdfData import com.sunya.netchdf.compareNetchdfCdm import com.sunya.netchdf.netcdfClib.NClibFile import com.sunya.netchdf.openNetchdfFileWithFormat @@ -34,17 +35,19 @@ class CompareH5andNclib { compareH5andNclib(filename) } } - - fun compareH5andNclib(filename: String) { - println("===================================================") - openNetchdfFileWithFormat(filename, NetchdfFileFormat.HDF5).use { h5file -> - println("${h5file!!.type()} $filename ") - println("\n${h5file.cdl()}") - - NClibFile(filename).use { nclibfile -> - println("NClibFile = ${nclibfile.cdl()}") - compareNetchdfCdm(nclibfile, h5file) - } +} + +fun compareH5andNclib(filename: String, compareData : Boolean = false) { + println("===================================================") + openNetchdfFileWithFormat(filename, NetchdfFileFormat.HDF5).use { h5file -> + println("Opened as ${h5file!!.javaClass.simpleName}") + println("${h5file!!.type()} $filename ") + println("\n${h5file.cdl()}") + + NClibFile(filename).use { nclibfile -> + println("NClibFile = ${nclibfile.cdl()}") + compareNetchdfCdm(nclibfile, h5file) + compareNetcdfData(h5file, nclibfile, varname = null) } } } \ No newline at end of file diff --git a/testfiles/src/main/kotlin/com/sunya/netchdf/testfiles/JhdfFiles.kt b/testfiles/src/main/kotlin/com/sunya/netchdf/testfiles/JhdfFiles.kt index 5e0df953..efb8e269 100644 --- a/testfiles/src/main/kotlin/com/sunya/netchdf/testfiles/JhdfFiles.kt +++ b/testfiles/src/main/kotlin/com/sunya/netchdf/testfiles/JhdfFiles.kt @@ -16,6 +16,9 @@ class JhdfFiles { .addNameFilter { name -> !name.endsWith("test_chunked_datasets_earliest.hdf5") } .addNameFilter { name -> !name.endsWith("test_chunked_datasets_latest.hdf5") } .addNameFilter { name -> !name.endsWith("external_link.hdf5") } + .addNameFilter { name -> !name.endsWith("globalheaps_test.hdf5") } + .addNameFilter { name -> !name.endsWith("test_file.hdf5") } + .addNameFilter { name -> !name.endsWith("test_byteshuffle_compressed_datasets_latest.hdf5") } .build() return jhdf.iterator() } diff --git a/testfiles/src/test/kotlin/com/sunya/netchdf/jhdf/JhdfCompare.kt b/testfiles/src/test/kotlin/com/sunya/netchdf/jhdf/JhdfCompare.kt index 9a326465..afcfd826 100644 --- a/testfiles/src/test/kotlin/com/sunya/netchdf/jhdf/JhdfCompare.kt +++ b/testfiles/src/test/kotlin/com/sunya/netchdf/jhdf/JhdfCompare.kt @@ -1,6 +1,5 @@ package com.sunya.netchdf.jhdf - import com.sunya.cdm.api.Datatype import com.sunya.cdm.api.EnumTypedef import com.sunya.cdm.array.* @@ -12,8 +11,6 @@ import com.sunya.netchdf.testutils.readNetchdfData import com.sunya.netchdf.testutils.testData import io.jhdf.HdfFile import org.junit.jupiter.api.Assertions.assertTrue -import org.junit.jupiter.params.ParameterizedTest -import org.junit.jupiter.params.provider.MethodSource import java.nio.file.Paths import kotlin.test.Test import kotlin.test.assertEquals @@ -32,14 +29,6 @@ class JhdfCompare { FilterRegistrar.registerFilter(BitShuffleFilter()) } - @Test - fun compareDataWithJhdf() { - files().forEach { filename -> - println("=============================") - compareDataWithJhdf(filename) - } - } - @Test fun compareOneWithJhdf() { // this ones pretty bad @@ -54,6 +43,23 @@ class JhdfCompare { compareDataWithJhdf(testData + "netcdf-c_hdf5_superblocks/netcdf-c-test-files/v1_8/nc_test4__tst_xplatform2_3.nc", null, true, true) } + ///////////////////////////////////// + @Test + fun readAllData() { + files().forEach { filename -> + println(filename) + readNetchdfData(filename, null, null, false, false) + } + } + + @Test + fun compareDataWithJhdf() { + files().forEach { filename -> + println("=============================") + compareDataWithJhdf(filename) + } + } + fun compareDataWithJhdf(filename: String, varname: String? = null, showData: Boolean = false, showCdl: Boolean = false) { println(filename) println(varname) @@ -274,15 +280,6 @@ class JhdfCompare { } } - - ///////////////////////////////////// - @ParameterizedTest - @MethodSource("files") - fun testReadN3data(filename: String) { - println(filename) - readNetchdfData(filename, null, null, true, false) - } - } // double iterator (iterator of iterator)