From 791cb043dc8f962a1ed7b21a26c2b546ee476e75 Mon Sep 17 00:00:00 2001 From: Kuba Szostak Date: Sun, 30 Jun 2024 18:28:01 +0200 Subject: [PATCH 1/2] Handle decimal fields. --- .../Dbf/Fields/DbfNumericDecimalField.cs | 38 ++++++++++++++++++ .../Dbf/Fields/DbfNumericDoubleField.cs | 2 + .../Dbf/Fields/DbfNumericField.cs | 9 ++++- .../Dbf/Fields/DbfNumericInt32Field.cs | 2 +- .../Dbf/Fields/DbfNumericInt64Field.cs | 2 + .../Issues/Issue049.cs | 30 ++++++++++++++ .../Issues/049/221-1_28.03.202411-16.dbf | Bin 0 -> 49301 bytes .../Issues/049/221-1_28.03.202411-16.prj | 1 + .../Issues/049/221-1_28.03.202411-16.shp | Bin 0 -> 180420 bytes .../Issues/049/221-1_28.03.202411-16.shx | Bin 0 -> 12036 bytes 10 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDecimalField.cs create mode 100644 test/NetTopologySuite.IO.Esri.Test/Issues/Issue049.cs create mode 100644 test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.dbf create mode 100644 test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.prj create mode 100644 test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.shp create mode 100644 test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.shx diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDecimalField.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDecimalField.cs new file mode 100644 index 0000000..017ae7f --- /dev/null +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDecimalField.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +namespace NetTopologySuite.IO.Esri.Dbf.Fields +{ + /// + /// Int64 field definition. + /// + public class DbfNumericDecimalField : DbfNumericField + { + /// + /// Intializes new instance of the numerif field class. + /// + /// Field name. + /// The number of significant digits (including decimal separator). + /// The number of fractional digits. + public DbfNumericDecimalField(string name, int length, int precision) + : base(name, DbfType.Numeric, length, precision) + { + } + + /// + /// Initializes a new instance of the field class. + /// + /// Field name. + public DbfNumericDecimalField(string name) : this(name, MaxFieldLength, MaxFieldPrecision) + { + } + + /// + protected override decimal StringToNumber(string s) + { + return decimal.Parse(s, CultureInfo.InvariantCulture); + } + } +} diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs index c7a802b..8ca8ff8 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs @@ -10,6 +10,8 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericDoubleField : DbfNumericField { + internal static readonly int DefaultFieldLength = 15; // https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types#characteristics-of-the-floating-point-types + /// /// Intializes new instance of the numerif field class. /// diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericField.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericField.cs index 7cce612..e671588 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericField.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericField.cs @@ -37,12 +37,17 @@ internal static DbfField Create(string name, int length, int precision) return new DbfNumericInt32Field(name, length); } - if (precision <= 0) + if (precision <= 0 && length <= DbfNumericInt64Field.DefaultFieldLength) { return new DbfNumericInt64Field(name, length); } - return new DbfNumericDoubleField(name, length, precision); + if (length <= DbfNumericDoubleField.DefaultFieldLength) + { + return new DbfNumericDoubleField(name, length, precision); + } + + return new DbfNumericDecimalField(name, length, precision); } } diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs index 9bcb511..539d947 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs @@ -10,7 +10,7 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericInt32Field : DbfNumericField { - internal static readonly int DefaultFieldLength = 10; //-2147483648..2147483647 => 11, but Esri uses 10 + internal static readonly int DefaultFieldLength = 9; //-2147483648..2147483647 (11..10 digits) /// /// Intializes new instance of the numerif field class. diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs index 2efeace..6aabe28 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs @@ -10,6 +10,8 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericInt64Field : DbfNumericField { + internal static readonly int DefaultFieldLength = 18; // -9223372036854775808 to 9223372036854775807 (20..19 digits) + /// /// Intializes new instance of the numerif field class. /// diff --git a/test/NetTopologySuite.IO.Esri.Test/Issues/Issue049.cs b/test/NetTopologySuite.IO.Esri.Test/Issues/Issue049.cs new file mode 100644 index 0000000..e74d275 --- /dev/null +++ b/test/NetTopologySuite.IO.Esri.Test/Issues/Issue049.cs @@ -0,0 +1,30 @@ +using NetTopologySuite.IO.Esri.Shapefiles.Readers; +using NUnit.Framework; + +namespace NetTopologySuite.IO.Esri.Test.Issues; + +/// +/// https://github.com/NetTopologySuite/NetTopologySuite.IO.Esri/issues/49 +/// +internal class Issue049 +{ + [Test] + public void Decimal0_OpenShapefile() + { + var shpPath = TestShapefiles.PathTo("Issues/049/221-1_28.03.202411-16.shp"); + var options = new ShapefileReaderOptions + { + GeometryBuilderMode = GeometryBuilderMode.FixInvalidShapes + }; + using var shpReader = Shapefile.OpenRead(shpPath, options); + + Assert.AreEqual(shpReader.ShapeType, ShapeType.Polygon); + + while (shpReader.Read()) + { + var dosis = shpReader.Fields["DOSIS"].Value.ToString(); + Assert.IsNotEmpty(dosis); + Assert.IsFalse(shpReader.Geometry.IsEmpty); + } + } +} diff --git a/test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.dbf b/test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.dbf new file mode 100644 index 0000000000000000000000000000000000000000..1ce6268d3a2d8b3b699660db75729842208da267 GIT binary patch literal 49301 zcmeI5$&w{WQbh})S+Zvt{J;~Rhb1Cx*ubKHoe$!uM^>e|d)7S;FGxv{_H4;csnGC2 zO^2(4sr~&w{pBzJ`47MS_AkHv^KU=8{`Eip`fq>z{K3Ef9smDvA^OLUe(pZv^)m>j zCBDK(KdrBMZ?9?W=Vjjde%$-LhhTqA!#1z|x4-*k+`DC;_jw!lZTRR%?(oM?q1?u$ z+sAI|rhe)A^`q~)*Vtar?8~_I>(cY+@ni2_b9~Ew;0|k`>4*Ncv={HwjZ41`<2H5O z^3nI!8@KV$3nAD< zCf{G~aeN`Y%{8-9ZDZeU{A2G9*K?Q^%x>o6R;`D%U)>4I74m$@5w zD<1yfGl#SKV~_R$v7Lvp-!~pH4cWwC#6(~o5Xd`>n>|7aOuGkUvb`|b-HLv*z+2ZN z)$bEv%#(7LJpAq{4zDpHNXy0|%tMJ5{-W=2D9wW3}=OvEbV?# ztjl78VT`~L$T*qM8bQCEP0$Smjs0tFg>nEJp_&_vnAQ!5G7hh;CAb+7?hqMO0@Jm( zxZR=alV*N=>{I^v$1YCK@gxwX{m83o9*7jyG}o}94r{kh2d?ev5kfE+LH}wj*sv|Y zBHV62PAhkw3pNk0X>R|F1DZW=3m|0%-~f6vr<~w@h(h?Vp00iZc4ObC0uV^luw?b_ zJM{l|Xi#opC469Y_+=ay)?=SupidC$x4#!6i@C$VE!#X#>x#$8Y$)9IQID0j(ZvkFf-N@r!`3b(*`47aZ5Ubm;iZnRw@q>#lnE z&6Ci9QTc#jVsVG|33t6vf?DoIb-V7Wyo9!5X_ep$6bILQlIudMw-T3&eIKVNa+ z0fAW8{28Zx0O>C){<{ZgAyG-7%JWWt2yFdho0opV{_Hb42r@4$N0k0Y1W|$gj`3NE z5XKI8f^LqjWBq{3*@>r`T z`gtPeMYHzlyEoWxvH!S>>h;qr`-={tCHUOBZ+|22#JoKY3&*yjIM}Gub#|K-cY`q6 zKniz*T26${q~*%7q8Ht1F@|kj@upKp=nIGfa0-3^E;iN!OG3!KqVRx0yc;eF&1ziQ zvRuR(0@EyvNW5^N@#pXXE0;(fIF$73{Ol|45Y?j8UkEfxVlDD#IKlgx_5K|ugRID8 zTy6qXBd}a?XCgOTvPn0wpT-Q;fObYeAl7R4Kyq~fZZ7*ombC&g(=2RM&Vfvls434I zLpc>%2--~X#QQAsw2((2{kDV59}r}r{sP@p=iUz%Rx82#dhz}pModidzLiDEnxzC_ z%6RqtB99ms6Iuxm`bh~oQ9UX#@hV)MHLFThDQ+W_dv$V}UrPf9?`Ux9C8I?u zIIabdN(d@Ra=OlN5O-kZ2?`u1TYM|qx#E~+k)O<;Nf9<%m`cmHZto&? z0meF!v0FEaExaBJ_1V?aJmOl;E*ur*wrq6{C&@n~?dK(FEok%dD<+I`8J{xKX+}*= zb3p*_4E~XaQ=~@cP)ClnTdIcGRRzTE08Gk$v)Uumf*<{pkpNqr@9@MeW>)KJf{IhQ z8pY`>6)asE`+9C1xWs~E<$~g3K8aWppZS>^FxaTL9)Kdpw9}zkO?~S*|8PrCxRoPO)7p=l0ilMX1e9EwYa+SXt<)!Hbo2Kr zOcS%-BUZ{ZNjb4~FZvk&d_f6eA|nxdBDK~X+yYWdKQziv2Hfer1_vI^Y$PbMz*I@Sy{>UL zs5pt_FJa~OTo12qw?EgJV-2be?39i|N3LBxvRE)m>i(LC0bsOCv0oz;>YG{QG}Eh6 ztpxP^M_$(MiTsj!2Q({(lk_LWtFi}@Ua(@*Pp~lXA-^P96ys!M!v?TVb$umBoUQ&WVCD1sls!>TKD(1~b zObIj{?bS(Jtn$1`wX_XP2`aM}BNRF)gi({3;s*rhyxeWeuvWx0Y9>Nyy}`Y#uM*|z zpX807v2!_Jv`(X9Ute38<4hD1mmGsaqud7&)cxzzNpu(=cLVrf>pn zckzt3nA#)dm6prJIT^r4j#%a3p)CTsD281?=gFoW?c3ur|?p_{VFoX*3<=#nUnk_=#| z5!3Cu=5Z8}79Y|M4H#urIVC_Q<6^jlae(0nMBV``mn+5OVRCswHH+Qy@v3Im6dq88 z>COaLw98O}NeBw`w)v)8wHi~L6BJ57g)~Z(15RpcZ7g{2xa$qW&~X>v;e8WC@iAq* zCP!lLzXJhj`pVi0CnyL65=9b`vkpu(Vw5k_TNX@`cX*$``$+9GM@7Zf-9*+shfzx4 zAq;8xwteB=sw&xms@kV=)*%nk^_IX0fd+%t49|p_>`+K3$BQa${5gtq2?nolQI+=# zl0||qNQviKgbP=)%gxifIG-9Nz~lhFy>>NTd;h(3!5V{ zqcrX21ZGG*oJ4a@*R>$-cZhtfh}C+$eTJ3g?cI<{NgW)OKSK!++N@ib=Y+556E*=Ny%k-(viIh&5sRrzL2i+W@1hu&`N32>pRDw}_lFOtDEsGTy zRTFO0Qs5S4KMqDL@#z@FBQjYXm@QVjf<2e02T)Dk0RtjN%%0K%02OowPf!Z&C75+9gghIqAlOE^(3j2X#I1&9xTk9gqDNQDUmU zIx~v;MHYLlU+{>NxyK%z%eY>?w4E&4?22Q}?@-x;xXr{e7|hX%oc`+YA4-8`@L^m?jCD}&nR!JeRY^6PjLIgNSWCvc!;l|d9I)r!z=voN}E zu{JIxq4GA5+I<<*3&h=Gqb~b#?%OlPX_XnwAP0fT>dzgrm8+as{7l-}<5hhi()_G1 zX#{vZnObmZB)t`aNjIH1dDU*(>7%@0KrCv8lUW{MRNiJ%n@pQAyzIVWFEYFNuq^Yq z)-(^xHfw(rF;3)zH_WgzIy)54)3O%r)RObe5~3u}fmjwrtz29w1~ACO zZeYe^J9vjIUjBQwj=X27Y7r3BSc(^|1> zby6`*Wwe@&vi$QrXs-Zgw1STaB&@EMn`DHl@wi1O*U`_O6RQ?(vDKG(q&Gv#YGwpN zG5Tb~*g4hlOe|ULZ)6g9_3Ww0od~Ym620w*i1l=b^X{p#FtVC-SY_QTg5O8aGKO|# z1J|~*9kyo%!@jWvtajVAko3+;##6V~jX=d7=bqi75_sB8{9^TJoe&5DdOCT^J5e<` zVB^ZYz(G@AgY0i70buQ|{{f-Rx{27gi^;(|*H$!3FBrhkeAKZOF1=+rwe<7D>tzB| zFB@~6{zOr}#hdqLHrjsLE#~lX9+()(88&RnTo~L+5X65YUHk2?j{gi&;)sLVL0NMT z_{?^_@4(xPc|GDZ0OES=i|Z!Z-JZ$BOlbyGZ_J+^YB2j@A2O>kAZ$6^x@DRfYQ=A1 zNO9VL!KKb`_=?T8`W5dJR3f*%?x&%d5hMK=5r{%}C7?GcE(Mu?s{|2W#Fz982I+;9 z0RhjP&(|YCk1FNm{R#k#AWGD->b_+1U{v2tkq_iXSjX(pM!>Qqn8fDVew z0UDR2`{t#?FW9i7n`JzkWZ1r{axE)wgHtFCL<>@_N8cBMMY(Va-4p^pu~9M{wOA=< zc1#=+0;$@O`m-~UOLlsFs;K~Q=~4R+498krOVl4gn32V_kqNJn*f`;(MdAB>o|#2=T+KpnvoSAtz6 zl68APz_iiGYHfA}V4OVC1=7~>n&$nLfB+;*R1G|DgW~JFK`qlLtCc|c@T3(jYgQT3 zC=p7aV^6eakBnC1*(v(njtEEnIcc)Ft|byBs6=inQx}o?;2n~EK`)em2CH}rUG4`2 z@{+n()fF6d6W<-h!Ly4Gz9K)tZPfdZ&@ui`2=ZrCuX|K2hwj{=mD%gWG1kHeEd7Xu ziSOvczUt)bc#HQJ>-{_Ml2JA5=-c=a1vp#Z|AVcv>bsTTG9Th%q8`kbD@&UT!8+nn zhdYt^kF0cwk{cXgFY)>yi2Ji@E=ofG;0M9>d_|UOCy+CIDj*e+GpP2yUc7&Y3Lo0* zQcU-h`Xt924?$%zH7Ux9p-e7E<_Y`7mA>@$m%oW_hSN zz1bZ&0lAGTfQdO>*M>Ut7o5PAmWmclCD3dV8H~t?O1ou(3TYF?FQFGy z#Ilvstb4UCr|+z~fBHFQkZB%?!cR<4vDZwmPx=+?j=vC@bOOPwG+@gk6mTkm@xiCu z7>?2m#sj^`@^XX^N%Neb%GvP_)oGU90X5bZ1l?!kdL74>Tlc~!fl8EBNNWmKW>od` zCb2!5e%~YznWHT+!$l`hKG?XApAmrkgwg=J21M*HO}_x(ONW&$mNzeHhqlCN>Ymly{w9YbS5eza3fl*%3ySxPEZ09eUcwWP-EMZ%sr`AXQA~P z3U!>cS|6NUl_ZWfa-F=S69a08crwN`{hnX)e-P`%2M~a0q^9{vY*Z{?s!KwuMQ9DG zA@)%u31Kp)oq$J(;+RW9^`g}KK_R?DUd|`1&UYwIwsL!po!$LE5qpr>2@KwP zFtn_{3-pFL6fIDdtAxPjVEhCl z#&YMipovT5!OWmfxMgqk=^3{ui4;fNeC>)Od71(k)($7S=bx!b60I#NL7h_^tvw-a z6iSAL3QS^Cz-h5AR*WKx)p6|1CKY>cEtm{0I)PS5O&)YGg0AMTKu`togh6UHix7yz za0H@!V1!*el4QQkB=LZhI?n0Z7~I#->%v%?j-Z@=n8byOdFO1Sj_p_R5p|?OVx^B} z@^q6FII8U@dc9tctw$bC9_5x^@YS^4mwE>!;3YFWc%MMu;eCRd1=>y}xDQrRGYG4v zfxPyxj7U3!jD~3^O3Gu}>*H^TPfh}Wj zmyuzFb%;;<26H9TmSx?yf!Qs@4kh-d;c#d(3CnR>isvh{-To%D&xKYDh;=tr zc_R7dqkfSIOrmN)L~G@4v%I{Jh4iZB8H?Vlij)O!>xARvT%@BGHLapIgylE2tbi?TNRR5JhTcj=@lvkN=|7$m{pa7_ClqbS zxNDZQ7A;=gqXdhiUKJ<&-Cc8dZ+=Fx)L+VS_V=(=;xH5S_Yf^!nj@rq=|7&s?|-Kg zP3|`r?Sw|hO6kv(>tKZ@`g#1@O1b09=QKIrJyGwy7ppwg+_36J-=9x&#tJoUl4X-y zkQy=Y_bJ}UUBxrY?8?%6CTtO}W1~VGFDjoa&pfhvt9-V+duW+0ez465 z^_qLE!c6tLUm?Ug^}<`2Kfz`8>72y#Hkw(qmdh;PtJ`Qrp)BGXuV(J$syz_Se>SFpsqiyoG|C)71i|T%JWvL4=a8z~2Y7NsHazwc2R$vcDe8^1Y$gJ`K$#oOJEd z9#U=GkL#`%kY2k#njY7kSDg<$5o2 z2vh&;3;cP})_A(;+ESy%%W|3Jdy%%4ubW#qabncDt=iFrdX-hK_acWd!^&6SpATry zgAumhUxRHKK!Z&+Pd7h;nbnNOCT(d>-HW({uHTGNyhg&EdVtCD!5O zEAZz>J7RdV5A%%{FZ=T|%l8%qty{LBa31U*|53GZ-xu3cSU!6%atJd#T(m(-w*GmZ z(c)#f%<{b%r6%PrB%IXqYiCyOhz=*mE7yCGLzofdEAZEycV}e6-Z%BF_^rl};rT_o z^RIuZcahKb*PU73l@z^Kl-1e)OFMo+hBxWt`(ffgtfXFPdKMj^?^LpxUw+chk|Cme z1^&A8hIOca>$$#Zc*C+kKeN0uah6O7r8&HoTt2rjBf;ejo3^09XMJ1n!rOA0XKRd-ud@Wn9<M*slTk5a=n%uKBq9F!{v=B++g@3eRJ@_ z+j5!Z9Y`BvWD@0iEjfHnVa9;V8mzYEuE$>DPf^Jloc zF?GY2*{^R7UU*wBv%CXWkCvOLT(2dE&ne89aCu{n|FPVkk3aX1XD*{$ zuO)}iDa=@Kc~iQsi*#Gxn1JtIcv~*B{JFpUakP-i^;&ZLubcq^vElNj)DO|_rT$ru z7v7f3EPw9bO!$6Rb>Vs~IeboG#*weUcY-%%M3u8&<_H%ryp_xQ%q;KE)rv81>iZk9 zR^pIzMLVtCMT`HV?VaKFEOV}~sb z(03Cry#Isi-pNW&&UI0)*OJ5M6lNm0{_Vqyx6g9@?B0{<@+tSy=!G-%-9$?c|BebX zF$`~;-j>TO@6+qCEt)FVYsukr3NtBO-m49NjGLkFCSG`3F0;H(bEB0^tX!`phtDa@ zWN>+}E^KvEjfHnVWxn~dv(74#>4t<;)S>6GRyn)IQPR+%JteGIox|L%#?6>uhwt=`J%p? zc;Rii%@Xa=n%uKBq8K!R5U=6|U=jeK+yK+j5!ZJ&K)i!Om8~^;&ZHoWe{E zm$xp>A6H)MyNMUxmdh;fOOOf!IxE*}$>DPfGYwqcu0v~c2i3O>uOHqr$a};r?_Aqa z^)o8hYsukrid9pwh`#;Qqq980*odGE?#(BF0;Ig!&(;YtX!`phtDa@OmO|1ix=LO>t{c$zLQtEpBAN=qwh6Z za`>FW%nX-z@=VqXo%Fqa@MQgwf#SuRYq`wwE_P^HVU^B$?WkQ9N9lXb+mDwpv%uw@ zTr?*8Kz*&bolMxDkoTKkGUU*wBv%HJX8{WG-K)7B@4xdw)+2Ha{&Y50gwZ7MQ;cdCh z@-AL@zH6Lvy_Ot4r!cd_<(+K*X8TTkukpg$a+&2_EIwvhN#%MiIeboK!sVSDP%{2; zeXsGt+j5!ZT`W?%b8zK)EjfHnVdjL(J9&0a@2mP=DAPF*0;guGf;o=M-jcxV)3;OBMWA-#WbTwp?a;_qrzu zn?bo=OAen?n0esxrp8LN6GRymWE!@@^%Jo`u_?*K06)x{yq1hAm=zBb2 z%iF=d#fvx9a+&3w8@DljNuBlDi?tIM)%TdU9WP<#h0D9Q`|;b8`u^gDx8*X+J6E9m z=U~e9T5|ZD!psMkcdu9GsyFog#S3rCWtMlY%THIf_Y$txlEdc|W`4N5UERBFex~m) zUU*wBv%GUTFKp_lT(2dE&ne6T%GN!~zoB^Htz7mkKl@kS8QnVz_jA=z^Ys1Qk+e%* z&Cw!v{lL$7k;~^6>w@wXxNq?ehADong}%obuS_{SRlImp?a$9F@80N1F;?oV*FJ8# zc%Z(=yzO`ivk+X~!AJ{#?XK@JUU*wBv%GsBXTE5pT(2dE&ne8paCrx-2Awrj-($S+ zwp?a;_x{;)FoANtmK;8(FpI$D9lTyE;7@&z@xt43ndRN<@NMR$DZ=$ya`>FWEDD!* zaPH>13-vw53vbJ1mUpjz)y`v;>$T+YIfeNfT;9P&QTDCZ_ZTm{Etgr|y?95>qeq-($S+wp?a; z_uhUD*#4(*y_Ot4r!Y&v{qYXQeRxyfW4!RTTxNOqGVi(ELAhz1mK;8(FiXPa9ZcK4 z*b9A+@xt43ndRO4IAd)(<$5hSd`@AOg3FtFtxkfq`X1wjx8*X+`}_FwrHIP)T5|ZD z!YmD!cQE*ashjjY4ybf@-~{pFO|@KRdG|hypHf_By|zS`EZOuu=55DIm}TJd4zADi z`GCI1c;Rii%<}F%_}V_Ga=n%uKBq9t!sQ*D-=o$!eUI_N+j5!Z-K#aA%(n5u^;&ZH zoWd*zm$&QO!JT*XJ;n=f%Vm~#u1?Za9hB>}C_FUCab9pT} z{m&uH%5Zs)hc24mTlWII@U~oLd4CVL84zE&UP}(2QRx~s-j>TO?{DMB!HO%_Ysukr3bQ&~-s1MZ17rg_?*J50hjl9yvMb+%wC~;!PkSQ`Y#bL-ge7nmiPB!m1xCu)@y4g zD4bmP0(K0%gjokJ?{U76LAUE(fEV7D%PjA2&~Z-#lp5s=WG?+gwbLR-zkl$*c#%Vx4dpAa4_RGqN0{w0o1pryZ;l%+Udp8p@tn%J z;-^q;p03y8oDeNu(Q_95pk7z*-k+g4yf;6iST~Zd!2M%rirRCw$n4o&GlL#8TDT7a=3Np>wF}Q|tfE}+MGj#$hTC)Jx9po__CT_L$cK#t*)Cu(}Bj7%g6w>p5sA6>OhEwNJlQJAB~3c#%VxP30?a|7>u3 zQ^&P3+w|q$bbE~!FXgg-dQPeE$3w0YZOU+;KC5=x%1R;hbBPC&Kj>$?XSY6;O+VMq zo4T*&@+^L4K{b=F!2kUN`**C0N%QFbjTSG>rGF`3|6!K>y4mDUIhEtJaDA@No37+u zBlBg#CLFn2SR;SVUsrekLTAG~QTD3E@rvo^J8$2g(9eQwE?Oo1 z1w*6k?7LIE*zGNsS@!Rg-$oVHS+9*+sZtER3%D`x5@r{;?Bn&Cg>iEuCs5tQq-Md2S*OJ5M6y{*K?CB@6 zm#(Gv0$zAqF0<_A&7WqhuUxMshtDa@A#mB#S4>^mT<-0;3wYsexy-Vc?@4>&+$G_9EjfHnVGe`Ko}Q|9+aY={;Dxv4GRt0G z=Hnxn4^SpHrBl z;IgMjz4mU8-V1o)ZMn>{m)}Wvxs7tYmK;8(Fh|2>PhXz1+9|yk@WR`2nPo4}&}wli z<$5hSd`@AGk*~mBik<($y>dV6y?__q%B7cLmiu7syCJP~e?l8M|G!7i%I6d{h9_6A zC%=FDc0oR;`nBSJc$3rr9D*7vUx9rOd;En^%ckf(F*n@mKN{y`}dAUU*wBv+V67 zV^5u?T(2dE&ne8QaM|PEE?x9O?+Lu{wp?b}+ea^HP)WI7OAen?nA700$Crv8`pY5V z;)S>6GRxkcxMGIz%Jo`u_?*I=4wpUtL9b?E^`5{BZ_8zty}jtq9}m0~uGf;o=M?4) zxa{%UA0CUP_XJ*eTQ0Ng?H}Ln@11Oms0NuyzsVMX4%{Gy&Rog zxn4^SpHrB#;IhXj-!v+l-V=D?ZMn>{w?_|FFWoCB9VepLVR74@FL3vbJ1mc6}wx4-Ku*K5h)a|&}VT=w|c zkJi@Jdjc=KEtgsL_D|Qh$5yV_lEdc|<~+FU@qd?!)<*9MyzsVMX4%`L)Esj5xp2Lf z96qNo=fh=>@4LEVFTE%5!rOA0WpCg9rs4?YdM!D8PGK&9%N}1o>ctUyPvC{OFWTnLvvzD~y+)AXLe3vbJ1mc4yv$ERPO3D;}M;d2Ue5nT58DX|JrCE?m6u zwm&bk+y`YMWqkKkxL!*RpHrC2;IgN`9k6P&-V48F`LpLE@nYw$T+YIfc0bE_-^KbnTYw zy?__qmdh-AdCztUHYnF?$>DPfb0u8%^kjX`Zq<7MFT5?6S@!b26`!|MuGf;o=M?5D zxa|D3F7KM%Ot^UAZMn>HAM8vRGq-ZRmK;8(Fjvc0;NR0>Pfxim*)qKsx-G~w@~87j z^0V_Rm%pdOEPHvfG4b2ztk>T8_2><~7fRh6{ra2a`tx|~C;FLN1aGlkBVU34|BAhR zOX|T}^nSn_mi_seWltY5>wZej;kD%QxrMnFE_?fsDUS~6{eTzVmdh-AdjBKKZ-)@B z*OJ5M6y`d(?Cq07mbjqz173JrF0<_E5h8S$s$8!nhtDa@^>EqS?{!#qPwxl3@U~oL z+0)as%w18rUP}(2Q4|w5ixy=69(;oy4r(CZkhtDa@jd0o9bC+%v zB=EmSeD}iJa+zgMkJJ6={@}v(T5|ZD!rTOxy}iihlM(fPzzc87WtKhtd8%-~Ti-j>TOdwTiT)w3zrYsukr3Udow_V(x_#--K!0WZ8Qms$4o z;ujOW3?^K!C5O)`%&l{r$2qM<`3n1EjfHnVQz=Z-kx&*#;STh;Dxv4GRvMmIdQjG%Jo`u_?*Jr z0hhgfdFq&r^nSn#Z_8ztJ^fspf@gvX*K5h)a|&}OT=w=hW4d8JMtUU*wBv+U`?Yn?5mT(2dE&ne8^aM|0}RnIe4?+3i_ zwp?b})8BoZ_Bn`fy_Ot4r!e=xWpB^2W5z7KAMnE4a+zgM@4BwR2IYD!IeboG?uE$T+YIfc0oE_?f{zJF}j`vEV!EtgsL^sF7;C0DN3 zlEdc|=6?AK+_$&^a;2kDsC5JNp6DEEVD~TL%}ro`erDO*k5>CyKxe)7b)kL_^q$~0!AqD2 z;j+j7em~j-y(jR(+j5y@Z+~&_@W;=>^;&ZHoWeW=mp#6C?oM;{p1=!l%Vn0meQxvd z>y+!Y!2itzUgYw*#rmjx1^#=+9)BxzsyTXJ z1Z_EIXdL->mK(wT{LHeqANw~*Yn}DlSNBhD)q8?l1utP9gUcR2zx%LNdQaemx8*X+ z-d^m|ffUO1T5|ZD!u$&^d;G#@Pj~1&ffwGE%Pf0)^)o|n#TKsDlEdc|=5e^}@sDbj z{!8x(yzsVMX4%`nJSaUyxn4^SpHrA8;IhXz{cGhFy(jR(+j5y@Z_gSdN(JS5EjfHn zVV;D0<@+9=B6p<6dQaemx8*X+-u|u5g)qwXT5|ZD!aN0+JwEx8w(s`~7caamms$4q zTKlK&izQsIC5O)`%+qk$N&Bdjc=KEtgsL_S41M z)lsh3lEdc|<^{Oy@kP^ZEv@$iUU*wBv+V72OJ$F#T(2dE&ne7{aM|NOPmEJj?+Lu{ zwp?b}+k-d%eClW6dM!D8PGMex%O3ywOOIxHPvC{OFWybPB; zK2^gTUG$#73vbJ1mc6~-`#}Yj>$T+YIfZ!zE_?jUWBCT_J%JbAmdh-A`^<)=KE)8O z*OJ5M6y{a9?D6F@&6%k81YUSsF0<_IrCvl{uUxMshtDa@YjD})3r-3;U+)RL@U~oL z+1rPYz1TvzUP}(2Q<&G`vd4G)SbweF6L{fmxy-Vs*DgCFnR30B96qNoZ@}dSNO$B+ z47~~P!rOA0dytn}@ms$4oLU;3hh%8*MB?q?%Uc$T$ zm%aV#g|2_<{eTzVmdh-AdbScF*DBX*$>DPf^A22g?b_+DF4X%0FT5?6S@!bn$4)d; zuGf;o=M?5$xPIry3vbKyvlT0M&!ya7^YvQPOfsV-htDa@dvMv)(>+KtS?`6-w<8V8 zC|>ORmdh-A`SqgrTk5RWZi#b#lHLp49(W1!K3w+nq`!|`p!Wh^cv~*B?B#9WEl93h zuO)}iDa;3O+0&~Zf3Z&Q1-$UKTxQwJr|oWZGlOuwmK;8(FdxEYPd|~b++MvG@WR`2 znPo4pz97Y)%Jo`u_?*Ig1eZO%-b-y$-j>TOd-?ketDdD3uGf;o=M?4(xa{e7N`6eP z_X1vcTQ0Ng<@-;xS)g36C5O)`%$IQ4)5~nGkyY;nyzsVMX4%V=4ar{m&dC4CWdmomK;8(F#m?jo_=>!{0e$6;Dxv4GRs~*r^LpS zX@%>x3vbJ1mc9I4#KK9H>$N{}xI0Fe|H5VG5A$#FGt-2N7v7f3 zEce0s8nbVv7OvNl!{-#{2e|C%cS~$-tM@|3JheNg5HEIq%Vn0myy4b=^6ISD1}vU= zQ11n954?o=5iWcB`vr0O=)Hg!-j>TOdwGb98{a1vuGf;o=M?5Axa{dA1A30qdjT)J zEtgsL@|+R6uU4+tlEdc|=4ZI<+Bd4-n6CE%UU*wBv+U*H>f~#xT(2dE&ne6=aQ)7Y z7v7fZXPY&zm`k}44z^#e_X1jS_?*K03YR@Se7W=^^FHyxy-Vc|K9Cz z3!U}aJU1`5(|dv21218IgUgv0$zAqF0<_ABV+C=t6Z-ohtDb8U~t*fD@~4mUhf6G z@U~oL*~`ZS?HNkBUP}(2Q@Hw9RRe#W+0(a$?tEA81-$UKTxQwJQ-#dEr;u>HmK;8( zaP>a{26EZcYj?l&x84hQ;cdChvX@s${-LXKy_Ot4r*MCQ%buS9S zkNwA{%*ypza`>FW4GEV$y>88E5%gZb3vbJ1mc6{)`i@Tv3fF7N;d2T%6kPW7{l`AX z)q4Riye*em_VT((ewnXauO)}iDcsO-+0z^3s+~sf1-$UKTxQwJ?=AnQrgFWO96qOT z!@y-vFSK}9PQ4fK!rOA0WiS6+ZcTLMdM!D8PT_`y%bs2*dZJ=_FW`l@d)^s(0c(d zye*em_VR<*p664p*OJ5M6mA5#?CDvn6=|>c0$zAqF0<_AS)MNcH@|SbmK;8(a3jKH zPcO4~VPCx$@WR`2nPo4}8m+||<$5hSd`{s;g3F%1Fiog2dN1IGx8*X+UVgl4nr6!N zT5|ZD!i@}+RIV4w9 z!34fn?D6%!Y;UahME+?dI_42CZUX!3!7O`w)qO2~)mg9Yntu64y(hR$@Dgq`xa{#u zevjWt?+Lu{wp?b}+q11s_b#_^y_Ot4r*NagWslFesrLZAC-B1Ca+zgsU$W`NO67Vj zIebpx#(>K%{yxg>ae7bSg}3E0%ig~F@~Xzl^;&ZHoWlJXuD=QJ!rOBFY^lL%aw)g= zl_qQSon~_V4|>cySXbm%lf~EPH#w@ynX)tk<@@ z5Ug_Ge}4$EK1xOT{=TMv*3i$~DtJqdSp59#^|yA79jo^R-mvV?&n$a{$4A(-wuW-OmK;8(aFfDi zuTQjfPX@g&@WR`2nPrbJnWj}V<$5hSd`{segUepuE>)7edSBp$x8*X+9v^>es^e9J z>$T+YIfa`XE_;2jKL?c3`vNb#EtgsL_@VXh4^*z#lEdc|ZVI^U^=Cpn_+9S{yzsVM zX4&J1q?nUexn4^SpHsLg;j-7?YWG`Hy)W>>+j5y@k5BMZt@o9M>$T+YIfa`FE_;3Y zn~OW^eSsI=mdh-Ae5r3SS1Z?R$>DPfH#J=L`Yk2G4AT1oFT5?6S@!q{QO`F~uGf;o z=M-)lxa{=fTQ0Ng>5U7FO{83}C5O)`+_Z4H0mdXaK38u7yzsVMX1N!t z3@d%5l5oA296qOT)4`oy{cM+VqW!!nXVSjHy)`P!>t;5520UTJN>J(xvF?CEWCIOJ`b;s;tcRh&?THFQdiFayuna$nfbN=o|iaU0QB8PA@3O8_{ zF5E3y!csDu>w2xS`hV*dEndoHpZ1)HJ%(n{%tLP;Jl0jTcn!_?qP%*gjhL#x=J4L+ zk{p@DzMA@Tr*-*tS1r94(c+~!w4~F2nB^{8zve-1<#;VzpKDN_;>SzM{D-7@Z|OZb z{n6BN`nlhs5rLm04ZM_7KhL|@ewlus+m-uMa%Ywpfp;!<-s|ZJTj;$>7P8sjH)gr( z&a|5UM*ki6T7C}ya|$;LT<*LTpZa#wdlN6bEtgsDx`9ROtx&GllEdc|?k{k;)fQF1 zJ4EkIyzsVMX1VK*=SbK{xn4^SpHsM5g&X+qDK}%*vq1v?&Kh2LE0=#yndQEmb1?pr zyuuAvCdXR6H&Z+sokMeYFLL?Zk|P^AxbsH*m8q-VpQ}y{=+RodxFKy0X1VLej~&%a zXaAQrNsR1zZ#FI-5W22>|Ko}rW%V<+E#8tNJHHRyeer%9KUnWiykXhj2WGkRTCFLP zM00p8xqNQn=77uH_hR>(iF$wHg}3E0%bj=o>F2AhgzL5B@HvH>6E1h(mz-7R>-~ur z-j>TOciyx7>nAAJYsukr3O5&A?!J<1H?7tC6ED0ims#$-(W{%6R<75Q!{-!kZn)fi z7gELAqxUCXcv~*B+<8ZGCHYCYUP}(2Q@DBHa`(-j-R-2_pLpSIxy*9sO}}|%XG`IF zEjfHn;rmFu7cO_-`{BPn)B6)Iye*em z?z}KvOJr28*OJ5M6mCAa+l>alf>a=n%uKBsUCz~$~M`>^iMdVk`Dx8*X+oi}G;yWf@TwdC+Q zgH=Z)MqZGdvUmK;8(aErj@?z_G0VL81& z@xt43ndQ#gP_@#p%Jo`u_?*Hm3YWVtNu1(!^!~&PZ_8ztJFnwU;omhAuGf;o=M?U5 zaJl>D4_(?)?@zq&wp?bp^Zq({V5M@smK;8(aErm^?yL7cY!AIZ@xt43ndQ#gx~^Aa z<$5hSd`{sOhs)hpuR+UUdVk`Dx8*X+otJ-Y_Jo04rzMBaDcllpxglqtI`OC8pLpSI zxy*8J);jj;Qd9YPy_TQB=M-*9;RgP9wV)G|oYUJiZk~*b{uC}=cq^CxuEuPPoHOfc z#@~W}NmN6$8N1FZub&TgnK?xJ;6Vk?tW>Ya-^-E|j?@dn0QCjQ+@1F24 zPao3G=v<`N`^Fh9UjOm?@;x)(LwjxQ?7vi-cVpaO%Jp945N;W`k#2q&q+Le1Zk5iA zHd?$a*K^QLywl~XYB%S+u&v2|@gj$C%fhXdHFZ(__hI0j4Yx)ZEnb%EIcVcXF8@Te zhcAxqpj_|8&m`P(!VUcWE>gH?Fa2*)c}o2Ja;VYbWq-dtXT-BS2{iLBVPB3?E?z}e zz5G|bT8}B7PIGu~a!HQz zpKIRosGpT}^F-&{s+SxU_FWtp=Cg=3I-! z^|U|23vbJ1mY(KvlsK;&3fF7N;d2VNI$V02y~q2v(f$Z8ye*emdYWTf&o5K1*OJ5M z6z=bE>1|%6yWdOuBfRjoTxRKID)k)GK)GH^4xdxFHQ>_ugt$FrigrMF;cdCh(hpth zvn-o(y_Ot4r*Lb+rI$%_GjnV0i*Bw7-F1L?wfx@sST3{lFeN*-ZK|_gTO@htXxb0` z=$^iN3AYwpdYM->CiK*P2rs-Xmsxt4ybY5jR<75Q!{-!kZMgI@uP?qGuKf^Rcv~*B z^e{(SU%t{`xL!*RpHsMX;L^)vt5|ia_Ct8#ZMn?S!@QU?X+MM)-j>TOJxs6+?}97WYsukr z3b!6ydYP`fyC2Yg2rs-Xmsxt4H}jV6=qFsSC5O)`-1>0oWj5xxepdS-yzsVMX6a#i zW~tLjxn4^SpHsLE;L^)vS)KQe_Ct8#ZMn?S!_2-OHG^`!mK;8(a2vvDPfw-H==nP=03eA_HsyzsVMX6a#8_w6}bxn4^SpHsMv z;nK?_i&8(l_Ct8#ZMn?S!_4TOxw>+_mK;8(aGSuTmzh0ie;n$T+YIfdH{F1<{-mVKZFDPfw>eyTnL#%n71e$SFT5?6S$dcfEkou}uGf;o=M-)Wxb!lg z%9W_B{SaPwTQ0NoFj<~$f74sIUP}(2Q@AbR(#x#gv#h@MLwMnBxy;hTtRL8Jg>t=? z96qOTTfwE5nVTtmJMD+?!rOA0rH470Gi4*?dM!D8PT{tOOD}U_cB?+x58;KkK(O_{#NKa`>FWZ3CBHrdY&NqqJ+m3vbJ1mY(IWzsFzfC0ws1htDb8ws7fi-u1{d zLpvS3@U~oL=}}g_Ej~uMUP}(2Q@HKm($U<1JZ_nGHhAG}xy;g|q=^<#T)AFL4xdxF z?cvhVM6dE@i*`16;cdCh(xc=py)lS#y_Ot4r*J#KrK9P)r}E*zzUR9a-j>TOJ<8MB zEw=U)uGf;o=M-*7xO6n>({8$;-3eZJTQ0NoCK)0oX|G(bC5O)`+)i-mWMWQ=d0#sk zyzsVMX6aGF{&_i#a=n%uKBsUy!=*w%)K7M^;&ZHoWkt_ zmmXz#b%#91K!7xAr-B;cdCh(wi*%l(>&_y_Ot4r*M11rAKMr zXm4@tbMV63a+#$!S(W!n4&{0+Iebpx_JT`~Qu=6;YTD=Eg}3E0OK(zQ`q;m_3D;}M z;d2VNH(Yv@*69W|(mn?-ye*emdXpZ}iZ4~J*OJ5M6mB25^eCrBKj@%+4qkX$F0=F| zMHdCsSFYER!{-!kU$}HK?R#Vzp?wZscv~*B^f!~NrKb=wvLHS$dP^c`G&1S+Bjg@zX2Y4dEr+{&4A0Du12OUi%!p@U~oL=}kI* z4W3B3UP}(2Q@8`*(xZ&*@vg7-Ie6i1xy;g=#JarU@}I)>T5|ZD!W{^g9wqq4s$;az z!3%H8WtQHg>WN0TOy-B7UKbKUl*OJ5M6z*WS z^eD^!iM>Mm9K7(hTxRJ_=7%~GOu1f54xdxFL*UY*+-cckoAx<);cdCh(wnR;-EI41 z;d(7Od`{sGg-ef8@zM1o+UMYfx8*WRZ}R(!G#!=ewdC+Qg*yx`JxZ{8`7UXngBRYG z%PhUg^c2_ADc5Vs;d2UiI9z&^*H>mg&^`w*ye*emdXui(M?IJ%T(2dE&nesyaOqK! zRt)-9`y9ORwp?cEO5u;Dxv4GD~mrTa&H1lTOy-D>=EnZI$uGf;o z=M?UExb!F$1~0F!eGXoDTQ0NoCLt0fSgu^JC5O)`+zD{$QM!Bx-$eTyyzsVMX6a2z zE;!vlxn4^SpHsLK;nJhrY}UGy_BnXrZMn?So1`v0Af9r)mK;8(a3{f~M;UPS)Bx>s z@WR`2nWZFWoeY;ArAf)mBpm#>$T+YIfeTt zTzZtDTgT7QJ_j$nEtgq(lX|FWoeq~CWkl;(SGCW<3vbJ1mfj@Nz^18{>$T+YIfXj|EQ$#B+)(xFT5?6S$dN{PCq>`Mz~%}4xdxFbK%mXw0TrF zllD1y;cdCh(wl@jI;)p*y_Ot4r*P-NrAH}Vc3(d2bMV63a+#$!DSo|TcIA34Iebpx z&WB5nQhP(vGTP_hg}3E0OK*}mY^YbGh3mEC@HvIM04_bshS-B@YM+A_-j>TOy~)Ii z+ZQX>Ysukr3U?t~dX(b5A2!oI2QR!Wmsxs~*&Ex`Rj${P!{-$4BDi!iJr^AArF{-w zcv~*B^fy&Y-N~$6uO)}iDcr?y=`+fwpV(A;m6y-5HC`!RbR(9_Ed52~p7#>ytk))8 zk)?+AIdn9533mxx`iyNW-*whr1uwiUms$FY<0-~nS|MDoC5O)`+@)~oGa99@Hb{FF zyzsVMX6Y}IKhHN-xn4^SpHsNY;L>N5Td`$=_9}ScZMn?SU&KECyts0`mK;8(aF@fS z&*+pU&OGf^@WR`2nWev2dT3fu<$5hSd`{u6fJ>ioYjKY?+N$T+YIfc6tE`7#;WH)wcuYwoemdh;t#q@ChwpXs#lEdc|?kc$S8BOQpJE6S_UU*wB zv-B5Vt1L{bT(2dE&nev1aOpEf#+`FbdlkI!wp?cEFFtLnbbpy}z4k{A*Y^l_4P5$+ zzb6HKs=W$ccv~*B^cNFz2b-x}uO)}iDcrSi=`+ShYVcu$aPh+1a+#&SIC6eX73F#@ zIebpxu7gXT(P8L;klL%@g}3E0OMfwC*dGy<>$T+YIfc6(E`7%MASq&KuYwoemdh;t zMX=u^9$uLPQGseAq zoLPGnyzsVMX6Y}M7HgSPxn4^SpHsM-;L>NbYFM&>_9}ScZMn?SU)*mT_n#%g^;&ZH zoWk76aOdt0~AUIj0_EtgsPi<}Kp$5pP^lEdc|?l!pe8P&3$?xwv8 zUU*wBv-B6YUtB)7Sh!wG4xdxF+u_n@v|f~XsP-y&;cdCh(qAMVKXjyWy_Ot4r*L<` zrO!AJbHZfpRq(>wa+#&S_*On=QRR9qIebpx?u1L9QETYi1=_3Ng}3E0OMlTh&Ev0& zgzL5B@HvIM3od;|#t&82Yp;SA-j>TO{l$<3Q#L8rYsukr3U@bL`ivq?Ht*G51uwiU zms$FYtm%ulQLfjL!{-$49=P-wlP|mK;8(aQDHb&-l3d+H>ty@WR`2nWewD_@Vk#<$5hS zd`{u+hfALkI$qw-eT0h_-j>TO{l)WkVJa%uYsukr3ikk9`i!bWW`)sS1uwiUms$FY z89!|ct6Z-ohtDb8gK+6H?)?)GOM4Z(@U~oL=`S9wZ@zzlaJ`lsKBsUG!KKewQ?p(Q z?N#u?+j5zuzxb$n?nyYp;SA-j>TO{YCvcyFWJp-3MqkY>Ri?mn43vbJ1mj0qv`B+=` z2-j=L;d2W2EL{4GQm?LW&|U>Eye*em`iny4_qS87*OJ5M6z(~=^cf9W<=d~l3SM|y zF0=F(2b#A|qg<~ghtDb8^Kj`iwm+SHMtc>!@U~oL=`Zfhj(u;paJ`lsKBsUmz@^Wq z+$892?N#u?+j5zuznJyvz;xw$EjfHn;a-GGpON}r{g>LS;Dxv4GE0B){`a<(mFuTO{l(LpaU&=uXYO8Ysukr z3imo(`i$z^mKV`p1uwiUms$FYiy^x#QLfjL!{-$44Y>3f4>Colq`eAWcv~*B^cNk| zCatGjuO)}iDcqZI=`%JiYF$rz6}<4aTxRJnRyIEsTe)6K4xdxFx8Txe?2CK4jrJ;d z;cdCh(qHsH(Bte5;d(7Od`{ushD)CjVQl8!+NgWtRTpWws0(mFuN~1uwiUms$FYM$^WWSFYER!{-$46S(vlhX>9I z&|U>Eye*em`irvPehs5suO)}iDcq-U=`)7@6A)2*6}<4aTxRJn&h>n{cdKx{mK;8( zaG$}Y&lpy_UOeqp@WR`2nWevY7h_6y<$5hSd`{s$hfAMv?8v?}+NN|IVa=n%uKBsVB!KKd#67o?M?N#u?+j5zuzZg2OTy5ogEjfHn;rTO{YCwbB`#bPuGf;o=M?T6 zxbzuM@>Ol8y$W7L*vYE1b} zxn4^SpHsN+;L>LtEfRZl;NMsI?uEDIGE0AP=WYG~<$5hSd`{uMhfAL^?NIj_+N$T+YIfeT#T>6Z~#jY>YUIj0_EtgsPi!$BEv{kOxlEdc|?gzN^ z8E+2f-KxC`UU*wBv-B6Q8sPrOzmRD9Awa+#&S2tRztH063NIebpxeuhh*QKd-z``WAEg}3E0 zOMfxsK*mbS^;&ZHoWlJAmp)_G-uW%((PzBP`Z&J!DtO^-xy;gEOy6=Qn{vID96qOT)h_TZqtD2-xw za+#&SNYl0Z%d^7uT5|ZD!qp!*kV~JjGu86k+NqB^>++N*Y&aaQOSHTN!%Vn1SqTrGk z<&^8SiyST3{l7dfltF<`(|*aU$s}EqrpqKG2zl@?3?tay7nq~;cdCh z(q9zlko^2J;d(7Od`{uUf=izfHeQt`+NuT*)@WR`2nWewzQ6xwz<$5hSd`{sefJ>ioCG)JE z+N$T+YIfa`LE`7$;bpgkLdPWLF9_9}ScZMn?SU!*B9FspLCmK;8(aFfHO z&j_-#coOYZ@WR`2nWewDdpY%sN5b`5a`>FWO#zoaV{@`)nY35I3vbJ1mi{8=fKv;V z>$N{}xV}fYDdEy*tehP#zxFD4;cdCh(qCjK-l>jqy_Ot4r*KojrO&t@yHy$ORq(>w za+#&S*qbtLOyznlIebpxriM$O@%x06HMLj43vbJ1mLBCz;=QLH3fF7N;d2T%4P5$+ z@ZmEx*IorLye*em`iuS9n+#R1*OJ5M6mD9$^cmjY8@WR`2nWewDHM>wq<$5hSd`{tJg-f3?b?Uc|-Gqx5 z-j>TO{l&FiPj=lCuGf;o=M-)>xbzvp!qyF~y$W7DPfHy2#`j5r4#6x3b?FT5?6 zS^A5go@A(@T(2dE&nev8aOp-)olaO>dlkI!wp?cEQQDU*lSa8-OAen?xOw2xXN2iA zwt)63H>dBe7xaSsxAX7ah~+X%e^IAp-8eeywc(#-$fCUp9SvT>{S_{KMv-s-l+|7Z zFT5?6S^A4U)qvS=_EewO7FlZ_8zt{-S8a!5fw9wdC+QgCoWd>ggZsT3`I_$AUhP%z!uvnCu1AU3Cj1oT zdM!D8PT>}XOP|qZ^&h9TSHX*J#B!OXzc^iDRe9xlEjj3D@DlECaOpD=W!`&JdlkI! zwp?cEFMi2iK8$j`mK;8(aErmE&xpJ($qVgO@WR`2nWewTR_^uQufp|Oa`>FWEe@AH zqd=B{pO*_4FT5?6S^A4h-6nQduGf;o=M-)UxbzvT);IebpxmV!&4QGC^s6xyrcg}3E0 zOMlUGYL5lV^;&ZHoWd;)mp-F?+OXNQSHTN!%Vn1SVrGT}wUz6&6Y5Nl#SJUIj0_EtgsPi(N|^oct_YuO)}i zDco{!=`&i*%1~E(6}<4aTxRJnc8v--M7dr|4xdxF<>At2OpG?w_98tKfyVLH##O)m{ZJye*em`ipE!FDA#Mr;d2VN7F_y_DSsx8tGxzw%7tL%;T zZde5Q{_kBIq|?uIHh4>pdSV;+_k-y-YP@|_M0*yzVcDObS^A9liEo^VAsnwIm(MNS z`fz{r8+|HN(w+q`ye*em`iu|nyAM}xSf?e2&nesnaOpQbgkE1ydltO#wp?cEGdewr zRam)ROAen?xDDabZzLNZy{+~vc;Rii%+hB}c)jU!bm4j}IebpxHiApPF)mK$-rBR^ zg}3E0OP^6GR+SCP^;&ZHoWgAkmwqG9yh|gsXTb|^%Vm~6V?*^fEtTuFaYxXs|wZ*0o?WwZ7yc;Rii%+hDf-gM-wYByk?OE`` z+j5zu&luFORXOE)EjfHn;kJNFzfmaf?(^ES;Dxv4GE1KkK27-0%Jo`u_?*IR373AO z@t#EYv}eH!Z_8ztJ|kP$<$IzE*K5h)a|*W=T>6b;h5G*!*t2~1!rOA0rO)^lqGUJa zdM!D8PT{tOOTW?Tz`X$NS@6Q!a+#&iXcp&5X61STOeMX{5Dd#KKYsukr3b!3x`i+xC zLZ{W91uwiUms$FZR-X>lRIb;O!{-!kd${x)t@by|r9BH?cv~*B^cl6fH;%4cuO)}i zDclZl={HIh{HvJuEO_BOAen?xZU8=Z!Aa_eU|ntc;Rii%+hDH zzIQN@a=n%uKBsWI!#(-E-^e|)(+cfb@WR`2nWfLDo3rtih{E++a`>FW?E#m5BXW#O z+q7rF3vbJ1mOkUn;*jH&>$T+YIfdI3F8xN*kvWfQ&w>};mdh-CM)E9+ODflE$>DPf zw-;Rcjn2WQUDBQfFT5?6S^A6*7mEc~uGf;o=M-*lxbz#LyMBJ4JquoVTQ0No87(J2 z-mdqb*OJ5M6mB25^cz>6*Ltfx3to6zF0=F*ecBG|s9dilhtDb8zHsR`p4HtIOnVl* z@U~oL=`*r4N|Ro>UP}(2Q@H)$(r@HEpD>E{EO_B2 ze&f(@{Ss==f*0PF%Pf6H*I6xRDc5Vs;d2Ui09^Ww@mubu*PaD0ye*em`i$`RB2-hZ z*OJ5M6z)Lb7SkSsuB6SGOIfvN!3%HY{v==e53}?tu|wCWtbe}&?V*^BdW4hD=_>8d zu3kldYnoDXRh;xcpYbNA|2ZVrAi)IoAM_pdpN>eUJxse=$!et)FS-=_>%lDj#*rck zV(F~cCQUQ;(|Pft)4@x)gW=M5{M7YDZtY$0!rOA0rQe8iddulF!u48m_?*HW0++ty zX^3(qw0FS^Z_8ztej`%nO2d@vwdC+Qg*y~3eMk6lYpQAQf*0PF%PjrIlI$-FD%Wet z;d2Ui7+m^}mhqxC*4_m#ye*em`i;9$hJ8vcT(2dE&nevDaOpcDF7D7#dl$U$wp?cE zH}-@|wqChjOAen?xFg`wcf81Sp}+Pnc;Rii%+hZZh_$6@>Ml$7kEjfHn;f{h!-_f|xl-b(5;Dxv4GE2Xaa@f1;sf6pb6e%$T+YIfXkBE`7)4M}`2 z*OJ5M6z(Lr^d0G%FNmtW3to6zF0=F-$vU5#t6Z-ohtDb8$#CgAc0cjQ~20k58Lwgsz@U~oL={GKnxbv%Wy_Ot4r*NmkrSGWH^hHzcUGT!&a+#&y z=<-|dcgck7wdC+Qg*yW-eMh|qWxHtaf*0PF%PjrIj<|7GDc5Vs;d2UiCS3ZCRrS^k z(%uCxye*em`i;5awlr3**OJ5M6z(jz^c}fwM470)3to6zF0=F-sei7LP`O@94xdxF zv*FTr1h3vJ@$C6E+PmO|x8*WRzY(v; zn6b+BT5|ZD!kr73zN1R1?7Ovh!3%H8WtM(p*oAZ@lu`3GObz-QC^YouI)Tf;+(_xMy&8cMt9s+#R-iHV>z_mvi!C z4psHkH+OSyy`3S;ePdeLW5JZ`z4Y)sg}V?g_l|}6K3~(j3t41aE?Vvz#jm#7mQ1+b zOAp^uxQpO&?^wRB?i0PckVUrTqUF9ZWoW3b%Jp7)_@2UD43~Syi!?hvbrmjIWLqv; z?i<6(EKILl@1=+DDcmJ+xp#D$n=p*tUC1Kaa?x_%h?BO+{iMS6UV8YR!d(iNd&jRa z2E@|43t41aE?Vvz<ξtz7T@*~8s~gu4tbH;HT`ZYS5f3t41aE?VvviF5a>pzy{wEz4^GQF$BXt|_zVaeh) zV!3F!UxW+yJ+^AScSxE6|L9$X8x2{)T?vlumklt0uBHMD&a=#dIHT@sT^XWRY#TXt`gEk6rI`LE(BYJ$z5$u7%4zBgx** zZS}4~7TK1Imixu1>u&;->%H{wJ%#%>T<#gaRyg;&-c`sV+j7xzzeu-pR9oeGFFkxu z;Re9vo-y=twh?+)A&YFwMa%u7{g!0OmFvCq@I8gQ4lehM*v+O+)w>E=WLqv;?ibZg zZM#-LxZX<--&45j;d0OT_t}SqdRHNfY|BN<{o=-ts#BEfz4Y)sg}VVR_l%F-Yp>J0 z3Rz@ZE?Vvv;mbZPuUzk?hwmxejc~bVl>D)EkKR?tBHMD&a=*B~c1S4YdM`bEPvLHY z%RS@#uwPE=U4<;NEf+2Kiz-;+-EU|{cRSoU z|J^f6B?%En?SaCgAvo>6IG^OSm5A&YFwMa%u7Ytw*e z%Jp7)_@2Vu3731uw3LUk>0N~^vMm=a_lrhz${x!rT<@ia?Y!}k>K9=O~y z?k#=NQ12>ak!`tXxnI0{9{XJ$;d(DUd{5!-h08r7Me6b$^sYh{*_Mlz`$hZ7f3H%m z_tL}n6z)E_+%uLeUfoCUDrAvuxoEjx469bQg>t=@9=@k=_rv9$(IR=2QF>P)i)_n9 z%l)Egruzw%>%H{wJ%xJ!F87RP^E*%1y9!xkTP|Ae7Ymd3zm!|J-b)YPQ@97=a?e

SaF4*{o^f%^hqHQDA&YFwMa%u7 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 An*aa+ literal 0 HcmV?d00001 diff --git a/test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.shx b/test/TestData/TestShapefiles/Issues/049/221-1_28.03.202411-16.shx new file mode 100644 index 0000000000000000000000000000000000000000..ce0559e24d4997b237f1db76ca94dd08452352f9 GIT binary patch literal 12036 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 OUmXWJ{-Npq)c*oY^{meT literal 0 HcmV?d00001 From 9a9c0eecb0094d1fcc073a5f7327ecc2917f41a8 Mon Sep 17 00:00:00 2001 From: Kuba Szostak Date: Sun, 30 Jun 2024 18:39:57 +0200 Subject: [PATCH 2/2] Adjust CRL numeric type -> dBASE field length mappings. --- .../Dbf/Fields/DbfNumericDoubleField.cs | 2 +- .../Dbf/Fields/DbfNumericInt32Field.cs | 2 +- .../Dbf/Fields/DbfNumericInt64Field.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs index 8ca8ff8..8c79f6e 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericDoubleField.cs @@ -10,7 +10,7 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericDoubleField : DbfNumericField { - internal static readonly int DefaultFieldLength = 15; // https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types#characteristics-of-the-floating-point-types + internal static readonly int DefaultFieldLength = 19; // 17 digits + decimal separator + sign https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types#characteristics-of-the-floating-point-types ///

/// Intializes new instance of the numerif field class. diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs index 539d947..2c59745 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt32Field.cs @@ -10,7 +10,7 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericInt32Field : DbfNumericField { - internal static readonly int DefaultFieldLength = 9; //-2147483648..2147483647 (11..10 digits) + internal static readonly int DefaultFieldLength = 10; //-2147483648..2147483647 (11..10 digits) /// /// Intializes new instance of the numerif field class. diff --git a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs index 6aabe28..77f3d2a 100644 --- a/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs +++ b/src/NetTopologySuite.IO.Esri.Shapefile/Dbf/Fields/DbfNumericInt64Field.cs @@ -10,7 +10,7 @@ namespace NetTopologySuite.IO.Esri.Dbf.Fields /// public class DbfNumericInt64Field : DbfNumericField { - internal static readonly int DefaultFieldLength = 18; // -9223372036854775808 to 9223372036854775807 (20..19 digits) + internal static readonly int DefaultFieldLength = 19; // -9223372036854775808 to 9223372036854775807 (20..19 digits) /// /// Intializes new instance of the numerif field class.