diff --git a/data/ArucoGenerator/aruco_5x5_250_A4.pdf b/data/ArucoGenerator/aruco_5x5_250_A4.pdf new file mode 100644 index 0000000..99c8fba --- /dev/null +++ b/data/ArucoGenerator/aruco_5x5_250_A4.pdf @@ -0,0 +1,87 @@ +%PDF-1.4 +%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com +1 0 obj +<< +/F1 2 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +4 0 obj +<< +/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/PageMode /UseNone /Pages 7 0 R /Type /Catalog +>> +endobj +6 0 obj +<< +/Author (anonymous) /CreationDate (D:20260514123712+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20260514123712+00'00') /Producer (ReportLab PDF Library - www.reportlab.com) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +7 0 obj +<< +/Count 2 /Kids [ 3 0 R 4 0 R ] /Type /Pages +>> +endobj +8 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 50349 +>> +stream +GatSCc&OETu6]RCh2T;Op:O3dFDm=4[Krl>'7kPtB3^[1(Bo_na1fUn5rl$BlQp3?EnIpYFT&:=AcSA$V34WQ^=hd;ul`*PXA:6u>tLM!HF_q4&^e"O(B\&s`f3h+uP^$b8gq;H9PU]&QmXDqlO0;p&e?9UQf%fblIoi`2n^5Lp[I^F3d@9>G4\hg;/`YSomV@TJ)01-1R%G'mQ80!nfNY9a4KM+l1W`jkMpUY3W/^A]:n]ZnbD9*E4R%82u-4@+,An.n%e,NkB-C4J,>;En`+rn])>,Ta,fibGWq1&k/dL)p]"F:Np"U3T1jA)rqQ:L*lc_eo&'Ek,n8!sD\G9Wp>>jZM6P4tqWkQH[b?f.TC)[6FL`!=jj:L8n9$mBhsd90a78bGqX^?ZrQkN9q>'hNs7t"@kKeYWQf%i.IkhsiI9`pVk'LIeO.0%kpTB9U+((XQ`*R=sE4MJMqt"g@?9StuIJW`QXj*!46aQ')6aP'-ZcWd&3ZHX!UDW2CjPF6kcO\qeekVtj3A.Z3ZH9ICo>9JXqJeZG_<9KUiEte^EObrn])=LhbQ3eSJJa.#OG2JiR!&'=+pH*=X>Yjr_qDNHjr&$Jjh]LaBchShL8+\&ia0l4\:ZQ/!?Yqns];/$/CsTJ,m_ri'_q2rljm`64NQ5\EnT+I#q1L)<48Ab>o]nF-#u0dPqpks-Z0Uqg#11;k?QTOHd!b]gr7)=8@)9E170UJ!KoSV+^e0<@7YT,k"nL(9g,8r=@"'EKGf$T]^VH!r<*%`%9>m"J5"8Me?aT0\P$eTS,"4WfkYj2c'BEW\(F>)Mn2`j+h9QuM6DL&c5!Y.H4FDh998&I(;gX,KRFPJUCVkYp$qm9ePXgl?,&!&U5Iet%A,eJ\-+=IfKBpGu^<)I_5L5u=OG3jT1lX'MdQdAR&t[2/f]_#Q"%!,B>VZ01.Ak0qq%B@"2p]H\):,>A*?1,`#VOE?P]X_543@0@tAZqLCRsWDOIs8j,q"'h8T:`CObOK(jk1uTmEi])UI.Zarj7Ee/oQJA:T5K-6&URI$=Ea#).kG3&9qRR^X4(`p'm:jRr:'u&Yo64!k1OuYe:'rU&e0o[go[qrW-\^H]^CT4OSJ3\PS.n_jTD'/ics,&0,Ojg9/H'ZP!ai+SdSI=cce":^qWW/-rjjjX5MZgcf>A,gpN?hVIf2MPXBC$W4.:`0^ti4-;_P(8on'Z\>q]Wo`di3FA7!mBhnVtri6?0($eWr:C2glb%IDGoqglC[XhQrN[:YthAq7:$YP@2Cp>N",TD[LYhk/N8I.HS@T0.V\?St4ME'",-&(&X?7mQndp?C`6hk/9ADJ-cR$hUd[)=Zh\S'?:A"9)Q>ft>]@r2Rl-FZ/o92YD7Eoo`Z>WF!GVNq]Sa0DJP2lNOB@!jLnuYhG:oe\):AB_Kjli:?^6F8S&bc2_p%1[j)>f6)Isr]@?4?C`mfDE?!jujbL%d,?("%9K\^I&7A>)1Bm#JaMuc:3S<[]g7tJ(#?E>q]Sk0/s'0hWh)8hTgF!#j^>.S)3uZ+MCcNc$`8fld4>Kd+S'BcN*C8qetm]_Q#Q1HJJSehS=C[]i@kQ\e3LS!7j2Qen[r]CY%0PpNO%/0O3P@]?9!F@4q?J:^Wm5E:Ri6HkDNXNm%/Mb6[aDN?bbC_jog,2EkV,HIJroqb\SY;'G@)e%89@(gH2Pn'TKld3=+3cm8;J9bEfpJgU(_RbKI\d%)@ecE#3%tJe@KN2rd?ME#6._Ts_]`D/\*O*olYduInCX$2Uht-[?EVd?9r-()C2pUn'=RDqfUf,SOnjn/+U$ikMbHCA3P:LSKgm2k*).h?fN/p:L7pObO^uF]j5MgbKH%HODJU]P=VDM@')e/;fDD;f*g"q>Q\EB(4^P@^aE'!:B=&#SP9RL-W$f"I2lh-9W[oN'Ym)dqJ@@'q'Vlhs(NC\Eoms'.b55@8c@Sn"83hFeWso:47@:&++bkgNMDtDPtkQ(Ne0].J.Y2NdeZl+rr.Q]r\XLm4,&-3S_:Zb;sCG%\->TU[d5mm8I]qs5eY+q#7o7jS84&qefp^no!f3gR^p\Snl=F;p_=>o:"j9Y8?$ppUgIKnLsWd.c!e?^";Sra6/S]<"i\fW,ZI1CLAEXRo+?SVO8\'CQ4#=hm(MNp!9#gpKb_d@:!c0N.CLk\`ioQO+"^2Dgq]^%DY%Y7t2kLc2"rdadfP-=QSiMf(ln1oMqBVCQ_4]H73YjYhBI*9kU,&FU$&m,llF&6.iRc!U@tOa7AZ"Ha>g"BM.Ki9*!9$GlaC[_'d'73s*pdOg%J5J9ij[G3oH`7^/4a<,pX@7H`<8IgY>H6Rocr\>UUc-Zac7IQ*6VjJ$_^DLS!Drg8V_78o>J;=uip@r(N[L$r=>R=I$Tk)qAu=)KWVQ(*]a/N9#hb0e6:W7%@,2^!et)L&JDF?u;Z`=e-%N16<<>E3/jM!@@FZ6pet)IeC0b^I[E/a?C-1`r_:PZd(8)G0YcBR3W\_GfZi1--Fr3LCpPuHjXJ6@9YS%A;(@2cOG*M^)k2"\G;]X"4gN@O\XP*.#PI\FE5Gf;Cb:IjI^Q(A;=f+85AnrG&R2T(D'0WetDG']\R\.\YF&X`2V%m!':drnYG"'q*G"'rU=0u"-/Rhd\/X!r5Fh=tj*K:Ju9t?o"QeSVsnq&g->XN.0"#)H$##Ir^=LA?8mi92:#1ArOkjIXrLp5G2]V+A446q3Dk@rVj]2:&/9^<>&j1'c&>$]!;?,C?CO]SHU9i!R9A"*iU\(Xbb9N"MKB*4pQ*k)iC#@PQ>2A85)W:%[)l]0Y.t1OU_m9S'Y57:-5P,'F.DU6gj@TIjVSTIjReBT(LXBT%2CB)T^0B\(kd!9SD5r<;31!+&@-^7C7tJ9>e'?M+M/+SIuD0.(J,!S6q,)I.31.G/D:=R/U^f*c=i^#2=df1T5J"^o$i!,ES\.ih0oetKjk)]\oo*P`'$g672tAt=onJ@0!m348@\LK!Z]mM>-LCq6e1[H#c^i!sgQGf+ecZFk6;p1pmBT&mfK@Wq$6d@ab;2UQ#Mmm_TkSbeaV0#u83TB**+=i@Jq=i)Y3(9oB5(9oB5QEZ7;-#>C?59[kQ$(G@iYQM]`Zo##$>XF=DQL@B_Kj\5\\jA">IkSlW.o3h-K!nirl"XDDMXac89T1-\+4#2t"m7DpQCC!_>b4En-UlhqG\.hYRu%1VmH/Op0.o+BcXc+BcXc+BcQ28/AH\8=$IeOsMK+BNADZkQ"`Nd+S'Bg%(#%aknM`\i7E>/H?_1!386hfP'uAUFHe#3pI^>XAI$eG"]eM%nBVhFdVL4/(_BF3U.Tr)e%lk=6lk!mVHtFXE=NV8I+1PXr"=FQa!J+Yc5)nWn.]a?8o`)LX,aF,HQ"f]h&IeeCFZ)eq('R!O1DkKU$/&Q"EDhCY#%;RWUNW!S3]^2OXZtRK;!.]lFI".eYiUm)JJ6#NomgK]*L1S3iaq4dl7!lar:%0%c0^*Zi<`l[1E>k#9@"aOI/7S*7,bG6>VSViYPC`#O(rgfL2Y,aq)o[tn=`[tn=`[tIcF/RhfF/^hJ(ob`bRd+QnV=P);'+fVrkGbj3AVI%'LhL8XI]tgV\-UHgKHR#Wc,[fFIWRnh+pJ#Qh*[JE"]b+<27TemT=R/4uZOYe;UI/UJ%Y1qsJ@,lXofZ)QC\H0_5\]!E">IkSlW.o4h-K!rirlRf^aHF;0n)'U"2GngqmNDbZfb6Vs3tOne@a&tf\!ejid:]T.X"LJ\&9L+H&L;iGtV7.hBI,3h@`kO[tn=P\#;6$epTTJFZ):&2YDY?>]9B$XBT>D(7i]R!7ni7HIWu(Bs.\KV#t,-"(855@AO(*f/e"L:N)du]mt7=TE`pS][o"P<]'k820:MChBAum"g%0<_J5\D2OXZtR_@_0MT$Vp4brJ)l?$lGYTp[OLY.48XP*.0j8'2eV?-#>3h(FW46etX>Yd%])R-3MZD6:!VV]5bn'1[ShRq/qRsI/c]`VC2#3np$[fcX:L.28'3`J"Q%+o5ofqCd:2`c?CPWo+/?H"sI2EFf\kYTs[>HblVI=C#%]:E/u1`(L&+?(jo/\kV^[r?Z-.$J,NW%UL!!\cXa%%*4NOd_JoVBE88_c*#Ggh`s&Q^EBBY/gs/Bqm_%cnYcbIAWOK4/hWhaVj3E\A.QcptD!LD*RX,##4k\Mi7;((RB1Hmj+\-I9c!#44e6CU'DfraeDe2GPS]t>;G4\hgo[]QaCB7Q'd+RU_=T@ajX>T<[1jd?@PF`eahMn(U%5orrbCc#/D4aRr[hqVaH^Zt#]Q9$Kr]91E%Ql@UT,n`$;UoQW^KPt?)#V4LT?1qC:bR)X>sZ.,W=&:P8*Rma7("8#6%%o3hYULANRC_2!HK,Q[D&e)'[EbX,n6igc%RIK6*DNr4Fg^.I=4Ip_CIZt,)*kmJKO)b/:^d!NF0S*Ca+Nn%45V,oSaNVX?:TP/ak/W4As=R4BuYt#N&.o6BJY^@H#p5Q)5j2pXf=2)^9ook`ZH2pR5hX.qN=Xo=/[c;*U6;M($Z0'L\_X,L&(l#TtWnt#mT`kJcXAQ&U"Hb:l,0KMa/2e#i.m#6:W7eB>##c.ht)`'gQD0!I1qT,OAT@J6E,n/enA$'`]0f\rB2`^e0<@]!IEo1[rYB3s2,3Y?_XbLsT:Kf$SRDW`<]mZhr8j5i!;dfCB!mS"-]U0S!?2f+'4S4!+]l3Hi-//0(1__hZ^kF$O^Jqd?iS5g3q)U'"$-f"!!rkie.eja`MO9Y"n4o[qle;=4r"P\23.&oA&k2HR7?5TO]8fG/63:e)H`<7/]R":5:HMjIfO[:"YnJcXAlO_W]Ts40BqFuD4"ehqtrih\7m>qTNu`sA`s8@`W?Ipnpp!P03-=GZtS.t\5Cd1\91h1(ljVZ`GFj.1>G?iA[4=W,JW\r16CN$)\5Ig;@Z$&]3#0*IGA:Q]mRBT:V-EPXYaZF`>9.$agP)0U1$ojh("/mLjX<]$olU_;t8d<_4Aa$",)*45;!3=p@h?(%mJ@,fY29>h,=u$*-1([JAOI$>$"(5k1KKY)K:GD%L`i9c_83ioRl].(2K?nU-hAhela-ekdZ_4j\V(s9Y"n4o[qleWV-jXMPlX.SEp[@BQpa<@?p1QhPsY_1LZR8$s4l='3<6#Uc2ulhQ"%sKU$/"[:Xrs%YU)WUgEB6hq!huSP?eJFhOFPeI16LGJ3(^IdK_B\mA9elg8W5HTqKg20:`6oJbL!=_GFfKQXu$#1X+<-?m.Ve\+Q2B\-E!Z3Ae#?Th![^u+-*VN1rh`%=3&;H^8%DgXf=8+@r$!0eaM>goLu8k;O,Amacrf!=J[JLeu?fF"cDB;0fiD^O"!S,f-PZqCaJGJ9k<'36R/KN/@9@%@?n=J\7beg\u("CTKcUII&V8i+7d#Js(<^fgt^>)3[=WJ:t6[17`;h>qFLlYL\,V\&1@SN=Fbf(BYVCCF>>##5ruXZCUUR'>/8Zg"Tul)gR/dT^ked9C6^DeE!e5?YMQm_5ZeYZ_FOl@&i:pFfsO).9T"CF9M1g5hH:*'<&="O>'>WPKbS3E\=UhotcP7glp@SLcP)%Kr1iB80YB-]:r7b#N5Oa4B*@m!gut4Hl%sA7si7:3HiCPFW#\A7r\=fpT':Fsa;RSV[j)$okXP"0=?^XE>YeFg0+";3<;/Xbe*'HS\h)iO&)JC0sl3JP/$-)J%S^"e)YfJL7HrTE4?mBYl5&Rckm=J>6:(OKW0=#V-nqCE3[2*Ct,"Tf[C=kd`k@Xg@7$YjMtMX56)WO4TAqg?XEW%Y1qsKU!&*'G;F4`_YmeChi/]Mq$+[GbT+hUD[HFDa+94?Jq!\005SN7Ten?=KNNMXVkQDfkVr8#LJMF^`5GnXkQG@Ed,R[k6.GKr.43aUp(fc!?bmq[lo_@4dV'+V]Jd>=n=a6p1CW0KE"0$gZNZmi/pd$-EPXl!UFiA_CAh0YYLN3XO%JZOh).6_P?rKGe^!,6abhN*nAAosU[;0DeDl]H,F?oL=iODqseNQ>)>`c.Okso"K)m463>Q:g;&1k+Sh7;sb\)nYrlX,qsgshhjR`XHJja9NWSp"4de&KN/(0@%G),==#YbhQ5E'qr@6GP"h`TB;5Q:X[?aM)lP^/SNe`>QD>#Cd9C0P]tK0MqtYR`_mS]EHE6DrXg6WDJ;k&P?L.+Rol31%FEG<1T63'bJf7PUn`+`gUI:EMU8-FsAg'4(^1scflgk!o3oBr#P.gq^-0oBU,@E**B;6;O/QlT`)/0'CId\kW1V%qZFU"H#>\Co'f,:g?R[)6hMiHYG>&CifZYFTALck\PA)m*MGPo[';)1BmLX$AMR\pZ6.dGhdd32U\UK9g<":^=lh9I5G@')_-,6D8T!ar]W3ZH1I3iY19I[jEXfK*J$6f5oq-gcu4MY$U1.C)/oA]+h0h:V0>@na7i+ldT,XGil?V4%3KIs(L'YlF^4nk=q5'=#q0qNcqsd$9EHfI[])TM!-lm$9h?rLuV;f?;I06iZ38cVg@dEtqJ=]\7fj&`Vk?.B#+lTj*Fo)R8a!&c%NL]17Wd8Wq>(B?W?cmfT+[f^'jM?23F&9b/m5crXRT-Ga1It!K@0g5OeDEja*.$T41P+_%<6*58/0p>,u8\uIZIfb^goGKqIQVS5le=bTU-JE\e1h*pNBS%]C)MoTQaHm0*0RuauJ6E)m/eJ(u&P-CITmN_,k\*!ZX?,Z\3WmpD1[r)23pUHO!7RqNi-$RNTY;]Y]65Dah&33CSQ-J#[2i8PQ.2DiA@h&5F/UPYe\PEAJ6Dri/d27?>E#dZ/q@-/fDJsKo@*.a-C7bZI@OO[pXASrKYO;M^O4\YZps'LF6menR7L)EbJipKPc<'S2UQ#YmmcU2rVi444m,J%n*F,i1dRB[NS#giR\7fi7dQEoNR3qDNC8k9i6-NT##L-V:c1^=2+EIGA,RtZ=5-SR$W'pZfi6_@fCq%Be;\V#N<.OgJR[.HpekIY!Rs%R@@%6"oaOJpWB`MN$M@[*MbqN/:snpc;7G(KKO$M=6)E1+7ft-qO/'N.>DDS0I%.hPp;bRr1&O,urf`-mP=KH?]WL17k`iH'7*T^)^f1`)iQnIEi@s>]37'bjW%(o)KblI(d!:+r&%Bd1T8+1R&XOiH9m]Eg%2o8`'d$o1An'OW1n:&)ok\PPIXEt'BW]0Fm^%Wd[>m$MH2:U7M6;@ZtDSF`2q5Dh)tKJ5't?(N8^NYhBV<9lHRsDk0U@i)aa_%C#9&Zek#$[18ae%\:!;jO\D"!O/^CYc\eHWOM`-jTVUN[Z76;MRljZF#.N'=R@iY=p2]7"i>#&!Gfe`3rgZCINAJE-JMS4I&pTko^`'UV#!mpZd2;_aT5e0h0h?uakCgH)urmdT\PJQg3<:/jSf&Xn4_?%A!DQ73CXmk.n1D].n5r2MGZk0MGY_%@[+t8^m]C5NFm]`Dh)uD^sl;$29Dp=?rJ^d[2+9eDr&pl>;a,LD`:86gC5X$&QX6!YgsVpmL:"JH>@sf>3i+KX(WEPB_naclaFAhjgHG91a&kf!3B0CXDT,q>-cbm=0_#=HS["h<;q2K<@R=aH^3\VW9_?ZlshL")\Qld+7@>(=C_JsTpMMDWhKtlOH#kAgnL'#''3:gFLg?^mKN0ET@TOs4@TOs4dQs<&O0iMLFhNH.]qbkagO7E67Tcc3@+-'&h-4O@>PI"(gKEu$_R_\A]!otr2rMAU2o8/l^q*jfVVZ'e.AHe4XLJ^-&I7N\^5T_5ZcJ@-V^Q+/:"cpj[W(0^^7PideO57L=a1aLtBCb2T*D?l6fter#7G5M5?.m&M?.m&I<=1Q/t1CF/fYf(FV5<%fp]f*a?2][m2Mh?^1=8A4Gn#+0Z$F>O_37s+jJFY%EC;_;Fcd0ZjB"0<;uY`e?17o]cgFOZ8k#8JR,Y>jTXFOZRK^4Z.JD3'erl5[G5T]_G9k$ml0P[nO9ZH`!ngUm:DHTup._bE//`,h/!N7aCO9N^Bb,Bi/W'37-2Lg<$YW&JDpI*\5^ehrP7>sn?AY6A=I(4`g,KQV4+?ME$!0>2Kd]lc6H!S4r8HIWu(4msE.8dE.8#K#bT"0=@)X>D08=gMkmOfYsCu)_.?[pBalNAmok&\BfBi&PTS*$ELG>mAmVhCtBdi;#.\eTQ@aVB[Z#-;]^cIdkZ\]t4XCI)QDpdq6$D0"T]X+Af5-J`]IXU#O9;Ip\*51PGNSLe@VfVff0_k^?K;VW3of[_tWO.KE:#%c&)PQ,'5`FJU5f"q;_6qAZ\t^X'=!!=@5Sc[=GXWq/NoLiKA=ANE(-QDeGh3A[BJZ)p&Han'(LSf?HHS]?Kutp#_mUs,_KtgW8XU3A]DI1,IZZ3K;iNARo(aB"$U:c82d)pA[@K^1Lof7V63.T\RZbkKdLp]pmZ'HgEth^Z=G$UoYlK\,05^HNEHVhTdIS(U23O"fsM,4.FINc48+!h[[m\4)1^1C?Q_-)EJgc4.COX46g[;2p-"$W4&CpfS69SmU4^XSP9E]*Ao[_afSUk;*dQ>!VPo/V$cJVB"(PR5/5ifo;P8QFHd+>g4lZC'p54c9HgXmd8gYn%FcFP9-$+>OicBZ>BoJCg4cZCg2ENgQo&ogD6I-[KUIM!tUAl!O,IqUJ[_kBs"^ZNBCRJ28ErQ!:"S*Rr\D4TW>2nMlgN)Xf+l=cZ\V,,H0;tXK)M@b3b7+Wj\*D[\DX:!+!duaTt_jo\Z8m/HA&anSJ1/bqYWL"-7S@C:bo@C6)X==mr_==lcY<_Gib@,2Ei!aqik8#&C`di/#N>HIr#FDHDL]mt7=jF_L)>9,Q^<]&?MFD\9XVQKiC]".rUE!ca$h+pj@>bXTN5P!O.`[UX9(GCEim;HG/C_NijG;S2%RR1U-8V:c)@3rUJtOS0YUR&1bH%2g8_;ZfQeF*r9#5_V.M\W5?A)V=$_Ug0_CiA)._UWD(9Du(CV;33#qD?@qrM*truTafFu2i"=S:4l/1k8;ZiIL?YBYK$W8mP\CcQT(Xl\Q!^5gem+F@#@qtZZ%,PL$NfQd[)mscdXQEZ7E,r/T.DP,;WYgriZetKG7Xg@F)GceCV5[?!M>qRSBj]9-=[?^BQ!RuPjQce)a03)9Y=&`B(F^KgP?6jHHkrp>n<$8;GL?c9LTop"]UKUpl:79l%V7N_qTl-p+kmO_%>ejMGn4oB1!ar._9?.,^Arkt<`an@phR;r9TR.Xh*9012IuqEW3p"8&*=q;bH,bEipiEh_%oSUjdED@KcelFLRg-Sk*]t0-joA]V?F0fV$*+&3nntl;F:"uJ?,/KdQ`phD-,!HfrZ69*k\PA)CjH2bHNWr@2t5,%k65\aXm]-!21W8iMRifW]!E1SYca:r.Mo=g\%]iJqm*!]XJ0F1U[G27lF-Pi`p!l8]$JI`c5$GbqKi=s-jEdHp52![dQ7(]`g3SM)dC=K"RXiOEje=U*aZr0,IX]0fQlV%bP9*-Clb?g6+N?Rc_%t!HT/*SDi`3iL*^/lr+npoZ@l5j/79JO93B0V&m"P.J9ALU@&"V7R?MdWCjPD`lKt\=,sQHK]n#de&QZRGf"D)B^%J!N\[@4)V[5`8C)O,S/s8;])[s.GNpC@-q<*2J#]/(adQEU^i-*0FH!UC;#_CC3SYR[?1%NWfo3t<8lS)-2qHFlPVhX5WfQ`sXP^q*k1\uE/!=gfS@h-!8(=@Ko8*K:3PTWLITL4W!7fo[d7@+$3=8^nbN:"MjT;OVl>-S*X;1&;,^[Y)*D8Q^3FagEk?H\cSUs#kfid"%Xq*1LO-/)d*';KjD&[Dr(4/eNVFE6%T0Ii"p28sbhO^?2*_Z,VYV8Sn!nPc*KN7Xq?l_C'=@LOKJ:UR1SuT>,`"2\paYVU#Be-$9ujLf7qPpk;XZ$*2QY_CB[DYYL`8XAW\f%b@]dE'srH]!ot^2o*#6DPlh2KQXe2^q*jhWa9(ZWOI26[r7?$n>ZN=,#gB;FOUrq[\NnZ$ZTO,eQkaKM#^Ye"tVgK"C6CW6!GOf?aMq<-)]S\:NL]smsbDd"&9lHRs]q>S[$S9nF$s;*h=P$2\E4sdC/T4-X6(_-\!#P7h-*.4OXNLc`lE*84o`_;$m:\ndW,G:Y>(U(]($N@G#ln`M3ZAY2l^cDU-jEdHp58#o0KPMhTk0IFSX,ZjS2u\r"RA=nLDR&4Li%)iFris%o$VM0479%\;!R*=oB3TGI,A];@X6+L$V7Cl+.lmk*uM5MpZq-g6[g6h.[jS>UV:e!R_F*MC$Y9YoD;%;Cdl-/K?=Z93ZAe`RgfSS864Am7R^[u^H_-`QiDImo^hsIm9&MopWpn)E^j$87n-I"."sp!VE&\3gk^je*BS[es#nX!I;@efSC^si,:n.=/ps/PZ+2gRU43\3a5=5AhTWH5)r\gCnC8dR.oTQUg"62(2PoRJ-Tm)-QoGT?kGe3Q;e^p:J;R&l^TgLtuNF$*"hD`,7<4"BCC2'#B0"UN9q19OAf?>Eql`'m3Hj&&#?'>m^S]&eK5#!)SS=4sm`GeS94WF>@lZ<,,F]!`UrRpR^/hp[3.RfrQ`4eQ>>j=_HPo2fPm8-`o[)>qCfnVnfrt`ffs"!M$eB,SNE%`^Fk!g"e>7?[o\'ArCJ3;+!C4&!"I01e0oOBuF>VQGoi4R:/O8,m7FP7ZcNjnT=3t*:d(d&u"oqX,*DHS54(E,GJ9i"CG&7>37K^H/'dK[MHGsV>rB.0)2g.,N7nDB&*Afp\eoB2$lMfN6Qt_L1le@ET%]0]p4X&)p:Y#&6MRl.6b;5^g^]!I9kZ&ZE!MRkD/]!_D:X@iP0C8`d_HT)"*Rh<XS*H<,6D8T!at[[%'Yl\-/2Glo1R\$sg39jqWA0eD$KEH`X!AT_`.*W89?\!3DJ&YUR'YU[,%RPP#*XWpQaCmA?4RX"d"H_R_J;]!K\.P7puH5l_kG?8=YI.SnN_A"-IIQoT>epuZ::$@*]Bp#/p=h2"aCNbqg^R:Ks@?;*"PR2V?oR3)6P1GJ[AoUZB$E[3.i#">g1?'24A-_3\g+gjiU3C*k@s-S5c.AZ9_kJ.l]qb9S9CG?9Aa[S+`]@^8ju]_YM]Pld)O7Lo*rC:?LAJ`\T?5,oGUfsFKr:)1%>C](G(lhsYl3(BEgLMZseR>V0Aa/uc\[f!GkS"b:>Us;Mb^D1`hI=2b"-#mF_@7>CS5#,eud/uojA5Q##I2.;=?r(8cmA*($I7c#qDE/GD*A1J@/dUNFIFGA1osM&s]@^c`t_rQ-:6:05BA9eWTnesb5'fK7LUX@/,Kj>9@s8=+7*DFIea2CmVEq3J2:"X*D^J=G3;HK]?;?YHh5\0*:h.:%8[brsOp.qNA368+=hm'i(A&BeDZ@?/5C]l"ef$S!BP7`4rd=WK9+Z^k%Bs0GcDIqnAg%.i)*km_iGuPkruLZ<)(HO>)EJe;B_n_4UohPTpD##5GBPN?AOgC(9l%FKpNCo7q`b#F+"U!!'hr*lfibnCu7^2IZ?3q>9bq8gQ_<94jtC]?Z)`Who6.]j%S,irI!Cdpb].OOdWL<-l9Tlo[qs2.GLJ]gTgQY,Y`=n6CnbG@lR5oO3_HieM3@8md&`Z'OK>0RXJ&"cMFOe(%LF$l"hNTgYKj""^q-ktVR=^0hOc^a8=S^]gY=E!a,XDuo5(>eih5k)RiiPEr8E;QGrrTT\QSU2HSc@B1ooH=[-CEWMYUqigVTY"kkHNikh7A@edSRKCgZ?3J'H]`lbR!*Es^d>6.PWrO3\=(@eC?QF9k*DNO3!FOTCTNYR:8qN'm"2M(I"_dOSl&u+fE0$%]k1KA1mm(eUjZE0_HktXZn5'H'cV.h:T*Rc>o[r'5dGasi_)!fZakm9ZZn$VBT[)F@m)n2hW:P3>]CL.PWr--HJd#pj)nd_8#qG2B3pEMfU$;r3bO:]BltQp$?J4;-+8hPWtY?0!faVN3*@lJQq+XEmhVhelOkH'fao1bS_C?guYR1[`0-MejR'6o(-8J]/C>tALU[G4XBrn)tX.jJ>fWoZ%5V3"F[1`Q+c:GK`XW"?(X(7+TW7JDP?<_q`J_lXqk[nT63Z8;cS&PHoc9SpTXa@Ct"fPJ'UM^L5lDp[oX4saW%%tb@7qn5qK+&Y130f]N4*a_(``Dk&(X[9R]X-4Cc5XcPWn31FB3oN(Is=XP*2YXeYCl]=5oKaSSIno)Oa>hfr@pTAlT\7nP'&U@Fjtj4>2<6Z,shA/^JOE_FZ,ckeuaLLeQ`(0JQqH=Q`Qs"%%ukneEXL=Ns!fH@.abkr'3Qk93;SQfdI&,9D6LG+T^mh,OEGqhqZoTsJI8ZgJ;#Let3reC=V"9@cu7e^:`-Id-%0!39rE=>)=9/Jqlt=D&l394mVEp0m*)CpRLS^tY_,'0j^r@Ig983:E9tLs17,D&2K+Ct$,T0QU;Q.9Gr*pAMZD9>A_uuG0>fTJ@/j:Fh,;2;fB"J;/Sg$D+D"H*DKnkG10L"Yu,=M;aRr`f2+%HpEW#3$38Tsfhnq>7kI#NdO7rJAk2o(CB.Ipcrof?_HO4i7^AANe62:Y8a"agInl9<7ll!G32mSV6X:d_:Tte#PKpGXs#cK.daoF5lDd11b1B=JrOn\C^N7ilB7fuCr=%K$g!>1kp+p-Br]3"]u/`fdI&,9D4P93t6\lrZ'\:g:@&VFdcR2:"X*n,AdVHcLUc:f+^SkO2W_h^i**YfaW`XE1QOX5%L+3qo)Ib.T.87C11XpBa:9"#PlmF9kppkge$'=%/lbD(B'95-Ech@`E/*2KDf@LeudP>-GcU?*C`P,:MKaUKQE5]!7-iY?l"uqY`Lp1@"s&8uQQ@q"jg]3hoEuaBZL*RB'[Y/jH!.qPUdAofMJFd+KfT=RUmfju*H\'J&N7s##>ucgg%?H[Hn7)Skggc+h95#4O_FrHT=])Lt>t^BP6A3WGL]Nnc9Hr\]5tcf'%p5)k%$i-48JlfU+.[mnBP"u*#V\0cNEK$Hi,u>&XJ9+-N`q'm7Y6L-"fg6f`B$(!lYJV_ltEN,l)bhK(:TE/gIbY#7]*(QNfL+gO.JDuQ0mp7TX3%=ZebkV*K%ONi,DZq3-"<)mKWoNrqeD.Ii;]73W'BnK[N(?OI>7P3WtDHF]'&4Xi&)eSrXkdW_f^#1]>k]S,X2=_kH+YHpNNuUF51U,TEF-,TF!m82`aKP)\*G,b(G6aX1g,lOV7gX-8jMUJe.U&Z_Wn8PLM46gP]]!cE&h,[%p'mO&/>FeJqSP?YcFhRbLIVl7uWi\n)cq:1ZrdfV."fP&tm.sW\:bNSmf.I2>jEg'S"f:\6Nu$m1p5+jYV>*VCo<&,9$h*Ha2%!ENKKeFt(of*24gjEg(GTRd#eDO=q'gFMPR-Na7!!;#!=Il:\)h1+RlS&lm92e5U"T:'dFaRsRk86)Nl\S$6Tn'-?4i8NJ\9U)/:XNB)j/&[mL$F*(e(1L!7KifRC$aE1b$F*&E=KqY0^@eL:jQ`\nWas'5W3kicV<[GPWW)"oVp8Q3!/,)_urOnW/s5P6RJP2;%\FB>#4:VBMIeDGWIFs3sa#OgMbAI3.[3ZGa4CW0VbAd?-_CYk',%FpU32I-R6%r6>NrLaW2^CStV/?9b#b>?5QbB1etCsA`T6*89mdpmlG#2SaMq<+/65K>dZ+0_k,B>gr4B>Q.D)6k^;)6k^;RBVQi->YO)^LFN[*OT>kNF3Jq?PQ:>i$W=n[^2qKY[623VR=^\[r.rn(SKJi*HeV-9s*@JDVAHNeX?Ls,'5`FFk46+06IGhe=NY8/$3@I"M\?n)A#qb!8&\"=DIn=m97:pZ'Utc.Ibg.kLeq3b*.lV.s6;%\[(He.DJ&&bn2s]`oOn&8KOGg`Q;'/TN:/aVL>\ksgDf]%W1Uf^AU8[CU$p%:HjZJ5*T1a^&iVdR`+amB98WJP*MOlM9\CqVp]FYjMk&m]3[#=i+q"!]GqLjS?s!T:S9f2Q'UHIGA*'ps\i"U-GUB_]/B_&UAiFjOBShDP$15o2Co'=72Itqg1,[s2"/MP76ZpF)FZh7G""S>G""S.Hssk$e4IM\hBqaSjAR[!:.oklO?1[iGIR/nF>c'<@GM`-[:4[ZM@nEs^#\7sMP!X-a#NZ+DrYn/m&UWCT1+3"rJoLbiLALbiHSif)M)i_3I.3$WU#32>?3=nTd*ekmqud0Ne#B[BULctg#jh4(`[SP9E]FUd.r]a=bi.Wj1ZJluAp2nKdY=_eCImf^M=2,LK&X#B7g.d=Yskt:j'?"^XMCq*Uk5o3blV`)SmmA%6A51HEC'&p35Z^LW+O_G*LA:FUcCGho3e-X/\G>c:2'SH8g"*]n(LYg[.f"-]C^em-(RWUY]#)mS,^WhDsa^dkp7SmYRX7mCdO9cl]>Ym3[D8B#taQ$1oi5HaZ=1U.N6,QR_C74g8`GfAa&J/TsCYk4(RL@m$P7C=k9[\UP?pO)QJ^+1NYNjdFhB8AQ*OICELe$leX[lSIScf!*K88k\N)&aiT]!*\6!)h&Rn8j`7?]RE*L6H>^mIkalLK/9_tAbC[`-bGE5Olt)rl:o[bVrRKf;q<<5bHR9dc0u2i^DT)Sh<&)1A>qs+pFUTs4TL3T*HbR,9ip6j;JcHaI<@H-!HtRs5U/U.XTEe%>Ug:a.KJ&]!]K.lLJ?CIg!nC%e,UQ^,T/jQ/n!;g%tJte&U*OrJ4?cg=toFK/&;K@_$IXU"/lAJlk0`"(@8G!?0@B3BAGSV4eb!rglJ_c5p$WL:.l+o7.nb\7eEpS0g2:D-9]B2H?n.;/9(N`lL7/d4:M!C0TO++29a!BR5T!73.@fe`o5E$:r05she,V[qG7E@r]u#:o%H(`>eNcptNKO)&J5V:W(k3VU+@Erq1ZW+u$gNFSq50V]BjHJ;(`h,&47-:!o=__Q3mH/^Lk>Z$8Q$]CKrn\)Chja3nWG0KH"^_<]dhe\&oHikHoED0LI0mM@I0loI?Qt()le`LOY>/9(N`lL7W\%&I];d3D[Q:Fb"_d`6lrmSE=p*-=6i^R[9*Bc;"G"'e;Ltn9?U.h#_Cfg7l>etUEr1('(:U'QEsSh#k\()$XAo7k8HnT8YuC_%fNC,o,J8RHp4Os%KFX/7[@>@Z"<31VIf\cH9NC/W_BsDch,lI]+O?"G]\r0R9Kh0u/HB$o!f0P',BA@\'l6!0ma/F^(M8bSVC3ph82mi:*Kd^e>F<2YWbj)kS%V#8X:RV@`%GV^\YbY5=l>VF*dW_BsDch,lI]4pDSj*`CjbpgEc-#0@U&lpHrj@*s_r"<$Z^OUIL04C.:96ue6rM=:&##H`QhYNND*OQ(OPm!a\/'qZ"NWbnI$".)i!+*tE%O8'n"g$6#XEjtbHL!5)>@56^Nr_/-!S3]^2OXZtRXs=s=b#ZtRXpgIXTMt56YE.r@''Op9fde@\ZGsB[F;Qg9j2JO"%j@^J6*89mdpmmrk-j^h+jVFK-(pY'P"PhpKN18l?l`';=9TBP7Xc5OrBOKP#JaM!_FcW$8i+7dZe#W9n`%G_kLaC!%P"qf3mN*iW^G*,3>gR.bn1h.`aj^i8QM8F`DBL`TN:/aVLgVJl+_mOqCc6IrX0.bRT8O-A,qm(*OQ.QPm/8:"PlnL5W-Y,6"eYKB2`\,C=h4"0C&U?f*b^4$d:R&<^Vk\K[lUt=RR6FVRM!S88m$T8%kJ<=od-eFZ-r+"+Yaa-CK!$XS*oJV&<[C).B?Z@'/*t#68CrNs!0;gMGWDjgK>FRu[Z%'@9*P+5X$TNT^A(1"g_^P-sJ!3<5j);m+n34neVfQMUR\n4Xg+P(8*T3XHY-:')cDP(3T!,[eJ=$(.qh![]s!ZYle/XJ8gtUDXF'8LHL&kC)?B(A3pR]7PPG+XXOi'.=pr,lT+P+m&QY@6jH9i4N_Af[:>6#BMYWS<,n)mgRE4khm9aehN@`["A'l$ocTG4$Wnu6@+-!$h-,#0pBFmNCBfAlg`'\0FTH7u#V-odDq:UDC38[u0BoUFkmalb%Fj_#\l5N9*Yaeq#-;t2CifZYFTB*H#N4+_TsM;m#qO7+/'S'0bm5iE?9'ui,k1Fj#E(IOc(QL6mV\%s\:MBb@rGG#YOGrGfi/)QeaOP;88PQ'e[jQLgmbQgnr>F[qO>b,c".sb,0OY\D$s:OV'39+iJ9@A9@21.`HBVt>#[kaS.`FI6`W3$Q5QPc'qg\GDX;gK,[fU!G'`]2l!,K\ADpf&a's&9]V&<[C"(855@AO(*f/iPF7I'8VC?TJKkanBRk\TPOD!D0]W*\D[Y*ZBH4+R#&7TemT=RS&_9!al0$B@3o;.0sj%6gcU3Wp^44XUCH^!!h>Yk>b8U]QW1hQ')Qq]HT0/G49j"SfBekQ"`Nd+S>V!j"7plp%i6:U`j`S!p7;rVl\_`SpOr##8>$*P%_&8+sPb7eV0WV7L<:N3(3^m.]DBbBa!RBr9(on`Ok[f39IEqgDB1AXhng\MpkPJ)C+8r1:s;j2*T\GRes&2X,a)_CFI]YRYn)X9+t"X+4iu3oCm[dB))@1]sg:lYPkRm&7BslDV1uWOK09\'C#j.Q_sW<]tc0D"],^dp$BRDj=%8h1!gWB6.F%2YD6:e6?cFH`+2Q$c%'?!#lq.4*7E;FQbWNFT\^&lYJB[X>L*]2=#'8Hg(go;#,)8(h:b#*D^U#GDQ2W"?>[1PiD0g;atTH]D=q#=,&M?[gZo$.`3./>D=q"Q/PD=$Uu2RQXBr]@";6i!-Mq)9kWAb>b(n;/MBB&]S)OU*K:>qNqTO:q>sW3#1/1Q=c38DIZOgP7#:r%r+Q(O-r+n:FbMZp&RNmdUs-%?9Y>ZS&,(#6d"AUn3:PgUTZSa/8Kheb8RWiQ8LsnAW>=obF5*HZ:6$/0_2os&e(EK%']"*T^Ib/iru;VF^Lt>'1$U+])eOoi<4%;?Od=>!A-3h-r[0`j$D8`SFD8`SFD=iSD9%6>s9%6A.Y<.RWe1(kPWtC>1S+*A\L_l`D+9n\Ali@:NW0_)NS"sW9iqQe,Ba5YUY_daG`1IJO^A>a#Js(<^fgu[8dEe6Fm*cAHTqKg]lc6H!S4r8HJMg*,sg+lZ`*uLWuAcXr72[gY(=g_)YtEFeq('.\$Op%J5'sT#5&2WFE_YVN"Oh-DX;8HA#pc'mn%^Gj(#+7/il-pPaJUE@OYph@[Lph@SpIN#IAIN#IAI[[KuT-gWs,P%Y0NKi!4S^%tIAmSP?eg9tfK*HsSbI]!ot^\'Ck[cFPt*"$Q;]=RShuW].`)2o):Ln=r)>f%K["=PZ>p9lHSFDrerYlA`%%PCU%NK[gtS11X'JYFth6"r,*BNslB_&#E\6b`n50)e$9lKuTOl!*DO#7-CFm*X`k\PS2`s_Xmm5jnAehqtf5\d7+)BAgI)S04dL2L^.A&@ML+(;!!@''N>F^G."R_<=b$F?@JSM?P6@e!sH$I>>fXbcpA>p%q!+!\&V3OY>lAs*bhHEld8ASQ=nApWh4c*70P]7)(.d)jtZdZg7r==%T)FsUc7&d$CE5I*FT\^f!51r/@&r^TYj)\%mZ"I)%tp2XJ;k&pg7naXX[?aM)dqK+BAFN2@./6R=pMo:#JbXM&6>53M5m<7lCJYdWD3h+t3X54,_FT\`6H,<1[fBc[lq9uK&-BhI%IZ.A0rR7oNMZ41?^H+SKimr0eo2nd6)pZuCeu?d@k[dK\f\N%s*5I205F(!$9PS$Mb+qMnb+pAc18tkt18tS\9PVMK9PW(H1]ulQblDN"#V-nqleY1Gm]DtYod-\Tk\P"t7N$UTX$$dAX9E"F(7gEpTO-j_9[u08<]U63ooaT+D`:\^$eWtU=kAku_C]Pjo/aB0:Ar):*hU`cGdVnI/N44G2Lbg#7+%L0A$HEQ]KJYMU"jj,*^t"0CsLcApaBRrtdu=LZRFZbl]'Zi5>6)gqVN1@*9$?VqnXB)VQ"/*a=+=g*sU=`;GsoU]cWgb1TBl[M-#^3n2LqV0*MF/qRX>9br1IS_YES*7,fG;JQ'Q(-^5*H)8I-#6-a]A\Jo9DD,HtC)S?Q$)n=70nqPrh&aX4B3dX6e3,ZD6:!VVZ2fW>DdFj3FO2cDJ(rNo$f/ANt9[e54iJcn-`9FZ)+!G19>?.VmhmB\(j6De2GPeOis6]kFRT4NEp52QkpH1XM)nXj/'%CKDa]X[%-B6iG'AG\!**Lk#)nZ"%Qt]^]\=S\#<#$mJD_q@Bhn-GeH`MN@]Ia`1j9]Zlr";s@^P#l)^ArDp04@r#00gQJ$eP^h*YB\85UA`eh,m1r=D-G,H0/=j&QCgmYj)XimL6>a$p7+aFT?)Ikc@DW%t'rbYaH:i`+^M']4:o?mn(C!"U8X>k\O5^O.=q8"LVWfQ!bVl@"=MM*K=G[4e"LQHT[hDZ0dt-M;WjNFDgku3d&#Y-masfVD4gCdlFj"<+[I?GNO3s3_`V,Eoim,hqu%+ja5I)-AsD]^Z=G6Q1,/X-i=U#-2[ho$,;.!$,6I__ClM;Jq;7&-!3Yh6:Xs+W'Jl7Dc3tCp$r18CIZsaAcT4GUbf'um4m^G2DoU-2#o/W8c[?eOD.uepG&j*@'s_L9t?fh\_rZX.Fumg#2"'"!n@+%YS+%4&aUeoFZB-"dQ+`RTOY]QOq%R9/"L1>!G3[HA?H_!9i\&[j_La6rn\)+hco>$).\St"lF>ML)-GBTdB&_T`qB)BF2:[BF1[U=sAP%lX-2dY`;n?Ni#uVJZ8l\L8nF-W`jpf)$m7^8?m'6Ir">h3pI/D=EOgEG6Y'IBAiYeXTLiE).?Mt?rLtCHI[K[#clN;WeDRo46p]DlX-#oMZGXY!*1:c2!YNO#mO36p55+__)bW2)nR&.ZERog8^*3[-WbXmgIpXrBoFTYh2U5"Gg*NgHFHA4RCE'mQ3*^c$GpO,#cjd%Ch*OJ=bc@CQD((9!O.jjYa,=&$Dnh8=A/A9@DUXPj015X2N)e%[uUR8![!1$-\bF>++18[`eY*4F)82XbbS`6Y*[$mW\QF]?Sak=pMT^"riklk17@`X_->"+h^,ApGKH?$b24MHnok-#r*@/hJ!]e>c2*pVdB'\%TsNtmYjMtMX5:YHc0c%FY(=g_)Z&45W<'6WPCU'TKQV4+#5&2WDK]rOQ+6i1tmY3]t'W]c1+?\/W%!kEotOlaWNOk-(jk18IH+&6GSh4B9B1l@gf`K`M[Xa?Li5\C>XL$:TYjSX"l)h;[NVpR_]`H^M#$BIbf[L:XN2/TCf[S8Nf0FdA,g?UqH3*?F6WgGo@C=D]CWuhuc+oC1X;PEJ=_FKI@')e/UI/[h"8Li@XS334X]];3fh4g>kA?8)_]7EihT=S;$om-k*#Y7JDTYQ0SnX5Ka=tXmUX)Up%-2^p18Lp9\T6$'n*f'pnbnU/R09d*l?94%VCl;BWCp?)l2oP)\qF(\/mt6L$]YYCXBP,?%'\'Hq2_jfo&&_ZFhgWV?-aY7eLfP7EA2(Drh4neVfme>R=T?6q%Q7T6]B?:5+=gE]\Q7QF7,th?OaV%WWZ:"q5f'P,ZFZ):&2YDY?<%kI4cO8CLg[2p?!7j12en[r]pBKn_Dnp\3-OHi"$*/@QRsM]C=^StA2o*#]cDKH9-f-q8p"pe,>)1Bm#JbYF!GfqdZ-$T>a!u:CGCrOlZqN0Ad]pq?:JYa*k4rn*=k@QXDK'*_AV/rg[`VI4WDWJ[l*8!I1T^=Oq+NPFEa4/a36)cPB/mqsYf^r3XE%PHlPs!C.`[h<@*Q8W7C+&oOkr-gh>llu5eZFl`,^*^$*2n_l["+fVqrKROa7&/4UKcjgF_(N!rMTG!RW%XNNcRo^j;Ub<]Z?!X@'JIkg1PEU'"f*6YFjeW7S_*X%[Gs*PDJSqj4PZ3HTJ^A4t)tP<^-]F\HqNj27qR]922p]f>\\9YmSbl1?=2EFf\kg3K$LX$CS3ZHo*DWGL2NZGj:,=hY+oDS3#3/nnpO,P(G8\+>-U;uEQbgHFg@GTo:gpGc21HB$lZNYO74BoZPcPEb1ZR)^DC^I.)>JN;G(9g04C6M#kb)Y=>S),VVHE1k.lSb/W!UG%nRsI.XlE-A@[/d<&DeDRYPo[Pqc/4]0VV]UYHE6^uH9:G@f%JGTB>)<8obr$tB_I=c3u<8=qJPY;a%=pLALE6p`h'PT;bH]-9QO`Im;D:Ya.CD=mHY3kG?'i!jkEIYp%N(dpOfkkFi'7HPe97HPe;Mp*KG,'+@.7HP4^Oh$.)@,UQVJp#SnFu7`mf%#ogg/T^j[Ch/ub6q.'!)SRRfSBO!W$ML1eQ>=?D.cd!Gb.sD!;2Ltf!cN)dopD?)L4_Wl2oH]!&c.qVeN,':oR)iFk0DC"C]p,"4.>IdUTa1[-)N)*8;O$*QIJ:C.EH.#B'ioLK`ZoA#:uT#Oa[]4YLTJ4AtKko>+X2m3l'(RJ-Tm)%ll+cd.9<3JSE!U;#aY&l^m(Lu!)r$*"tO`,7TJ"B>pb'#B0NO4,CW7oKJV<[@`anj3n2/He>P&:en=J5'h8aO1u7eQPJl>%c;fB@C$C17-bCPRH,d9)pf>Fk3+G:YjVS!DosQ@@(@%[:"Nm$D]JY!'YIj$6>*5J<^H^N=(2AgBO;_lm:griqIQo3O\akZbu1p:)G(umi:mih1%nuS&lmqr].F_[:Y;ol[%%U8GQZ+U9?CbK8,fNs.Z[MQ2QCbJ+VCbHF;K(Ue;/QbMA!gm"7JFB^B!^OG2J^&,MpWCF%b>/cU*nO+spn[=rm>m[TaE#,Qf\J&@PPs"_)m8M,"uRl;1HkI+B)).RlTPtojoepu3%G#rTM!!glq5&^lq5&^0>"=h>fU4qJlNV(F_#%n"(U,M.Pb<&Jl`"->HIW;%egh/085@BDn0]dF,%c!IYT-Y!Zkh2U780H&V#bTq2Kh1[nK!*JOe=R4>ekg3Ju5^o"F*<9jq#V-o$.ieV**<7$!^e_kL6YE/]B2`_];_Ro[R-o78VI%&ah#Qb`lYL\,XE=NombS5Mh?^1=!:/JAS)1qV\?s8/ec#_g1]sg:"0=BGCc$M'.&+ZIGncZVgB#1Eh*,@/iHlP5S-*Y$=lGc_Np%lHa0l)'B$)8af:,8B,CinlWHL&TZpXUoUqgl!"!O/^C*!9)W[G^6V=R/U^m5)PT[shjYDq.mD^4$eiEf^3e66ZFJos;F9&Cb!3C>,XS335X]];3fh9?n-'-C4`>mVB"jSgr_8/_+j*9NFoMF.p(]&>#3aU%8m80IDEcBCuk4(c<%;JkVApWh4c"-MGn`'I?;OeD\M$5EgR'91B7dN`,-EIi?&\A[9&\A[9OUfsD>C1GlXEE`CF9&Cb!3C>,XE=M5#58=(f1T5r$eWt`Nr`QG^nuk3VM9!)^>Ao0blI'U5n0h1=J[l"XS)a(>q]SaDmq1]$eY(U=SLBLhoCE#)AC\j]jefQ1`mLG)nR&%ZI*6d8PkHO-YIj*q`!hb,Kg^D@s?u*9K#sZDcj6E)Ut^5c1KZGRu-MC(Apk7SC<1KodF+5"LTX`(pPSs(pPSsR'91!7dN_`7QOYX*pO@Y!,ESTCE5I*hR]i#2dg@V%j3FC]b+;Y!S2$[=Qr(sZOT,L`bS7MlMt&Qd+S'BNreLILW*f\DV(HrKXt8A_FcW"\mAdrWOH*#pNgIBDh)tKJCT)KXR?P6>-jR^>1qrbY34GLZ;*-`&Nf<+fX1e.-a\@JIlAR\Sn"81Y)-W*]%SuVeMO4%pR:NN7aD!9N\,,,Bfn!UY`(T2p1@2g$$f9oEJFl#3o3,_#2t,@,2c1[Dma)%YU)WUc7VdNAA1i2Y@.&ol`7dFp$%$FZ)+-GuXr#Hc1B<9S*B>OVZ'OqS5Y?l[qa58-q(&RJ9>UHB9QL-=JlpY2Q=ZGF_WYp/Xi4p^46-Q5S>(e4*7FfW41B?H9XX.cS/5/Z_QC&B&+puHL(78\'rsr<^%VQrWTBGk\PA)D"],^XTPL\3rH]bI/?9gHE6DrXg;?ocApb-^$b:_rUKQ%@I)LtX9E!;0;p&ehAudFQ[e_k4UKd5GNWJFPA&>CU@t6W-(pFS\4=XP=^e0<@]!IEoZd,F(n=Zjt46gQBRVFqMC<>N&g:.:9Oo\US!S!Y@2P#DSfsM:iot:I[PhT?-9:f_H64d*(6.i"85ck)rfD5QuJcRc]onRVs##G[3=:*R+#R4B;f$OcsdaPi2fZ3%M*8@(%*Tc]:FU,XAkBY+bLJi5AAf;n?T$NcF__[LJe8r;cc_md/Xie[Xqu5F]R,8ttSdE&&/2I#tJ&NT6e?R)J?*VHNFY#:V="H*l*K*TZY[H:/UB4i"6:]j78(1URdoeWn/-K?\DF[WCB3d-/>qZ=hf0TJejcXNr>]+akh.Qe2[2huLTE8+$/5Odt<*KBrY*N&FC;Hh3Wj\\Z22#9$!)VQ7KU#pcNF4E-Y-ZH0l-?QY.\3;O4*B-N0O6'3:MTdC_48Ul1>Ro2.Pm:T1tRZMVCGNIgbV+epMRG:hK5C3UJ!'lp_I)5a8g?411=661-hCf9\>Vf9MhQ0'+lcts(XYG!*1Rk2!&m=jn-M(u1jS5'dbWR3s,rif82YD6?ne-SabZk4:<[@`m;@*?2\qH?[J9>Y'>dr:dbcQHj]tap"_FK!8F8s1bos8o>kFQL4]V`Ee%R@SBR$Pj]*B\9Pe))ghpD%J6V#SnAt)eQX$%#\[m"Z7%V,H0eZ/RBkf-\A@GjS7_i-o!b\uME"c;+-*]ir7$%I/]Ug8HqG03D.kCtR5VS!UcdDf"(U)[hsXA&G2#fZ](_qb,f=@:q[Vc?;+^17QY6D#6l^]cI<7%m/P3@;"nY@.?PHN=Y"pDgX5lO6;H*MdE.Z^&*`BeLT:BRp\5a__R_.OP.hciUL!RBFnu;ln;)nY@6IpH#Yq'$cCuAc>mfW`Ns3O]f#&6p<206+Lc;QU"roG7XN>59DuMM\braRU3_M=]LCk?6,SaC5TgY'O&D_^"lp5B05%m/P!G*^h*hdkhP(G)m12R<^Uf`^'_`8>)[gWjt#_(qKfF8ZHS53sgaR(rk`9Z!m/gYW640f!D8l)5o>5[g[?F(A&<9F#-(0qRC+0A0$OOG'9<)\Rju.K"a>.AtYdJ>DB-re58DQ]$C%b?2O;\iK5n)6]u697>U/npX``/OS,&o\CrT"9#mh1/nu&b1Z$.^/li;YI=q$<6DVS=Mu\S`IaqlfW_>+(+b`iL.u6a@8gbou;_\]s1tE2`>L;NK"Hn[^WWn#Ji1Mc;sBTmFAg-YB8YbK%X54WGok3N=UX&N")906sOrE4oY4_LmAgZ#K,Q=c?;+>2m\A'(%`D&B5H5E-sr7.=Hn"XhjaKI[5k,D+CM5,%9Mq3R?lE7^8BCm8W#V_s"*#n#L)F?eT^Fm[c\I]1hW)Ia:Ve.ZCndBEj0k@RigmO\>UQJ$qGbU*CYfaOA'"H-Tm07*B^X'WW:GA$^]))g@q_/dPM`Ns3/SPJe=qHWklj&Vp&Z!3mX=Jo`Dd/2Ybqj3S3ZX`BuEAoq04[+j-+.5BLD7-TUW>68U`Nr>rIseo>g2Fg%f(2V;kYajInNnJThSaGgbn$bO0hj#4gm;-E>fj9koXUk;Fq!dh:a04BMh"OpTGdasO9X&cMZh7"rGdamW>m(-#);]<#^LdrQgXk?9II0_eqWH"n5QB"IpoM[XGUNpUfkIU:J)%,Vs*@!2n*PUkS\G*-nb9,9ccW>?+4LmoNUDRKYm13jT9%=qo?V44G&-V=Bj@^#pIK-9Z='XuhUtpQ$^N8Q_,?!"Z`QRN=ZdA&NXp_1K4'Ih2("*5Q/sP"47o[lp$OP;]fXF1+P>u8fqEVL5/%hbXhQqZoWIQ-]11;s].m;..9F>grjgWoNJ"H*eBc-IfSf!D7u[<:WVeB?Qi'XeiAES:3\L2'B4TdXA_Vn$hWDQKB[*'9_$*1oa"%TT@"4?NMfHnX'Yho4k*[;bLC2G^?N44p4j%Q<\<%MgJK_1k,/_#gGp=KjMR4XqNi$l]Y1XTn=ZH#qT1Q*@Sc0MdnAlUIRfbck_8JY$YnTU6kSRNNY5@tHs#@;#1k:i'ChdCQQgF[8-3k0/"UPO32JmOWCtZYU,rTK+jH*Z"s:$\gh-.o6Y$m\,t*naY*jf5;,"oTJf297-JZm%raT<-lp'doa_%DqFQeg7@e"gX#1qDcI83-m(NVkBjHcr@XccWLI\NYkajd.2isM7DjjC7Df2'B\9PeBNUoA%3#t@@4"S+Jmj^FK1<"P.p)X4rH>mZ7I?+9X\]S:ju:s`X["lO_qqOcKB?o*/2!=3E++et>hIFr&DJC;O1`'9ZaEK2k8G"I8)%091V]>AmKsXE%"#-3JRY!TO'r+/YicXflLC"`F7#9oPaIZJ<1T)'V@\/R[ho&,:95_7]9Z^h:_+*NYid,;R`ULl-JSRrR)sN99?aWL0:G0gR8D(;q`c,H@7PZVJjo+Q,$4]SD%8n**/%a]$Ne9N_k&C1TJ>f4KPmW3'Df$.lh:5)PbTUQ>G9o,DUJ3FmO4UGC1G<4]F_@S=T*2Ha0mTRa?O*WJbP9Ym@7L(CQJq@`,(TfWaTm2Qs?]]@a@P/iGU-b=k1@#K'#`@B3g4]m-D\#t)VUU-[kh\TA7;AVN@7NaZuh-oNuNdBGpL\V17(U1%]8@8A:(#P0hhH3K5`SOK^fP?^-MjjGl"/fhjL1@m8%/2M)nHS-[['H]=qf5BhB2`V18KDES[HHmnWDkt]S@jO.g[A7#N8cn_XRZg_TKlV@JTC9b=oXgW@W$@9K@.B759u)KX'EaA=;u5(T*(njfNZH$1I;HJFD[o2P@&SFd.rXY4K?Z.XlR\n48UB>Aa-0CTFRGdqW[N[+YkQj%%TgXu_QCk?6,SRj\kf:8=W'.c>'g#@X?@!iM:4r?1A#SnKjRqp'Kna*70M`,\Op>WCOI8eLqn(]n0&\PRhm1#];p&4L*b)-##G&@Z,:?TW*Hlfa56PUSA6QnXD7[_W[&9"56J(t_0.TWfXsK.^.$<=]CTpkR'Y;u]I_$>bc0p8_Tr'R`HU[_WfPB+rp'R,*?GiYF=0OOT)E*SgB"$`f$/j%)fJB"*1Rhk"Ckh=nHN87J_(scjFuI/lgWhRD#iJtRMETS&@IZXfpgDbL@.`Hr*nL!mB=T&lM[qmR*s@K4@Q&VdDZY7)458G3[X*X^kS4-B\J[<3$'mA*CjZdFB5H4Fp=.=j($*';QqQ=\"Dop?>snM7HYYnrHD1'Tf2qo(.jsZ'g:8Hl7d$XWHlBI06dq]GZJ"DYZkqKImqsZtl>!*!p\1T>5I,Q=YVc(AC`@^)94RG9[]ro<2"lg[nEecacYqlos,@\u$'s7f[^-:+flhP_p?V;tPAK+4fqEV&X*8-1hRCh7o$RQ%lZ[!^Cb%SZgY'l\lXdMS^AdJ![V6,8n)hpHLRmgK6:5C4s8(.3r"X$*XDBc,s8DKekJR*G=T%".qC>Zs54!)K'.f_lm!lI/s8;ikSGi&OfiJ+&](>q#B=*qRXo/%m2VQ;V)/\K3dR2l^\oKuP[$?-CrHW`/D<5+Ts89GWaQK+Zd8iF[B";c#5MW;Vje)S;pXd+*/ZKmAD/0gS*`6bU(+`1q452)i_9rH;=IOba[S=P!>L3$,lYM/a[[jPWSK3%.kj',Tm$MX$LYe::HIk.BFgeVD_oc#t*]s%2BBtsn\K1ms[D'!?@:t?+C\/&XGnbZ_sOdQLL$eA*lZ8IH/7"XlL_.kq4WSIe3!W(#nhjp78HuV\?u.o*FZUW`5n,mIWX7^"S'eNU'(QgtE'NSg[A^YX-_ECtR2C/5SBY%=:-e"\L/H?nokfVOkm4b%-)mY$`c(InG]1!j.-HXT\/JRHqksEHao'GA!%RSe!'tYXbi]\JPImBS,Vbij&*&faWfH458/+[\N4@UPUAUN+UFqB%V1?!lY>\So:Gj1$lG@jE,mtBB65Wd5ET9IJcgkpj>V-,Pe!-C\cV>Ps-J>[G/$)GKSra5HbU>eXtdiV,^-Pi$2.V6!j)ji=7:,pA8*:p'FEn\j@IoZ0@u1K3A\Kl&;':_6>f7K^W8U6$'`gGHS.g>idtUb[3/9SHS2$kr]ML;CC/SALc9][2Ei?HQ/ibHp9t0GVmFg-SnkfCm7muFIU481Wh@?gB;bY&?7e+N7e@pjE38sOs59BH?\),JCY2SY.o<6p%=>+(%@X;(@mUS;s,*>g"<+ZPNEX/!mJ_%F3F78W]S;CP43I(32MMMP_h8=5[f=6%L@&X`'5S*3d2F?6>S*+<"nBpeEC$6X1P80!;1R@XT6h-(4U3-,-5.ekm4=HXJ!/);#S[p\HV=u!=/02b@0V^":Ye`A<'K^s`nIs.T^nWM"H(UIh$!E8([C_W$f-XSdf$KFI1J#T3qis@o=18,Wh@?gB;bY&?7fX$hG$,\Rb(/B&YuBo(+>HhL.ru"@8i#!hKDO&[?n;i5TW"XclSfLZk$/h@[aXPrHtdadU/dJOh/,i-_%lD8pR^N;k>OBb**:(nmoY84B\nQ-OU^96j,<8@*p+LC(Pl3Q#e`tc:tOn].fDJWJoEpoM6*TPfD"W\#TL,hij0)kdDAkFj9u5D9S](j*=&JM(Yjk#`S?ZM_R:5-D@.ETo#YnP!N8Uib3)dHGE(r@iN8R[FQV,MLGNqdFGcokSZTBI1r>>("Nk\8/D@8h2_fT[?`QBGaqVW:j`PT5Se`j7fX4.BX*.p2G$\?=[G.XT0iA[\/sCcgD)p1Wo2CTNQLG*_IV'!7M[c08@_krICtKF<)`G[S`eSdcU7Ks?MdF:jY@+DTO)*$CYaoWDX&it"miKql%Jd*4JI8&Jf<+.SaPZf[G_!%m>oc)[CB=,)TB[i-\^Ph_ksrrYUM1?/B,S_9l[H.+eFPi'kS+1)FRh3_qq@j%>'SSK!!lmY,cc-1p/X^ePa(B>J3?joST#&YNSsEHQcLo?c-J6UR0[-SeV);Cc1QVM$=P>pq*m*f0cVP`n$/;dhkbo(8GZT^2L:A#2aWf5CE(7Z"p0>(a,LTZ/NqU\j:^/PNn`j[3TnPjjPaTnM%%.H)!m-+nt,$*R_ciAGFDGg1'p9S=Lo#o3u%XbK!c3&eZSY@)DeK'dA@0=1')f@^:rCJqD0@:qZkd#cpKpn:cnS:tAH?5PT,)848&LFVJ!=FAcSqQR;s9k_Ua,5dhQYaJ4i>a'o%%t`nh0Piju.bN564`\5/-]KPZ-aBW]+0hDtnH$>\]s^+*aP"bjG8b\#'A2?oM"RHU:mpD2F#VgRA`_N?J#H8)_VVat[3&'17LFJG94@;7[]ii;'_^s2$[W%M@BZ'#T"TR/C%$dcD':d=3&5!k>-0XY@7%9&1lFn@<6=<`GA@`YSp]o+(+_Va451fa_9rE:=F,LA[QVDf4$6`2HH`h'6c7'@5pRrC-/((;1n<\L%b)Ig(a:_,g#r:j=Z,-(*@_.4p[J?6*PUBZh<[a6uA97,B^)Y,]"uUd^%]fc."Y16d\6G:0f%)/o0?A3-I>s3BiKt*ND_SRbLU;1Z+*rjk!I[UlVVm^ZKh4<;[Xk'u,Jd'u'gHin(E4i`DdPr!Klem16ss]fcuWlX]cEP-j+:`YLM"mMAloHt:XmE=JMNX%cX[)g1;RQXoo+9fbb.J.6)3#8W&7AK8$,)'KkjfO$5U23Tf7!$)S(U9IEr=jX&6.bHj,C9cTN;t%mD%q]9]?uR`9XDV2p!d+4FD".a@,3M3U7HcaDM;D0O-dDa1GOa&OuFVI?CgHnY2c?aKZm2RIW.S)9@#/ms7Y"`2i?"Yf.Vn!mS2EYo-9?N$ePK2MWVU>VPMa6(k_qf\8>ZTeYo5KPl]k'7-aN>\tR,ZF?sl:$?bI:[7Z!IWo7T`4W1"kN^^aAFK:U&pgL.)Uk4ImcSr%-2a4YO#394<`arQC39\PXfc)2X)$A;lC,3+;QFTceERqkY\XiklJ:-.f\'pl;3nObDiPja'RTHj(;1pcigF6&CY7hcD"O/MMneNdYG8q"`=nBdVb%(sN10MFk->V7uadUoPCk'./H?Ze9FuC8_CWJLp`L_-,D"O`UUK>+6N!Al'oXT,ZHd9L4\TSZ++3\QA#P6)Yc:tRa1W.3g_e(g'+g[#,Mj_hoRE`D$I*UBK3Fg%J#GX4ALt@@N_6EIG]X"%`2JbJh/=m_;Siq34ciWOi"cTjQh6"Oh^:,f.G6+hr0(ni([Hb"`.UUc@Z[;%\npPm,G6((]TU=m.F?eZ@"l7eBJ4H'Bg1P4#BIJ;;L/";B@-P!TD#.rWRm(&mdUt)_HFB_op$QWRlteMW5=R]sB%Z<)D"JV]^#filU0"QZA&G$BYgKNN_!#%hL<[-/fQ.gc4[']@4r>%W7/AX-@5FB]1Rhd?9sDiRrj_,rPD[WX+BU`^CcjLi4;09;4dX`A?&uA\=u)DpCiYn\m?,sVE'r%$bt_PY>0jT\`ce9@E'LO?>ucMd)Kr^;pL9K`26@rLmqS-SSl2\R2/K:'%@\hM_,;RpfMos"Q7?%"f(EiReY.2"X'nfiBFmbW^*Zk5G>C&-;sZLP_kL5.C@mDEiArc2Ai"8qRe/u9SgMu%W7'c!%0J&e52P(3j*t0)1b\Zf8Ubt=A(*SOf6FHRCT"cM^*lW,n$IVX!#p[*O%rf6=dG$?l]@[I=!JZ.$8((n\j>aA<$tVE$`ochCm)p@V2AO_V*9e;=C+TN7:i:f(r['\"$Z"grrYT[p=rW&6csfjnkL@nf`74]B(L&5T/l=tnhZ^d$CVgG\=qi]M05#gN1kH)`\3bJnkc<8!33G[8hc3fl_=i7+Xf$&k]HWF4#@*u3bd9s75r[RX:CY6k.fJB"*R8%4!Y"?U(CXTG3B%V>T=F;fKNt3Rej+Cg%%u-&SL<]Caf].V4)]qIKj+Ce#K4+5cYig4kC<1'Va071'PqF:g$0:jUA(:`7\d^?s2jDM+^"@D(;30>H@PtipRcq"It!c5GIIDJr:0OM^E:^Zr>c^]&_T;H(i_W5UBS_X$VHu!)2!-:]B!+F0JmgCM4?]7W"Nk8,7BU#C=$8[:DhMSVPO3Rq>J*Hg^\a`QIcQEibhp^/Qr`fe>k?o*I0pc\"9DcsruVn,tc&cEeTSjlqkflOtP4"r#\GjuV:UXjM?\qa`peKraK_VmjNCK;NTfZ+%SMK;NTfZ+%SMK;NTfR1R8(Nj>irZ`f4_EtAO=jr-)=)E*d.[@'^a==+\p/ht7!RU@#Xa??;d`&j_31ia=X]?C_QactLQ-3>ia#rIF7f\<6<:aRu51R\%Jn!QkB9P2p5R6\:s%!sT1JR[8QnXKsK):)g[KPJZ")n`.tT(/=[kR7(^(A_U?X:W]fmGo`Y-$oBs`\X&k.QcD?&,0PJoNaRD;YNW7Wqg;He$a#<[&khOf!]>?[&khOf!_U*e$c8MLgbYk,/Kq7+P94=s&9lV'RQ%Ecm./HaPHHJlc-/B&8X1jIo2./_a]8edBI7S^1mj@Y$l6U21t&.;/BJkPJm^qDi\m(TX\C^j+9O9_6CDPO$[@/;s?jOnOU^2G0;_"PfZ)RQ:Eu6b']nshteBUFX;Srf5@kESPJbKj%.4*JuS*QF$JHW,3bF6piSL`?*22MdF5o=8WbnAHL-,T\.n)f[sTgj>l*U`Q#4H!\/W<1SDbAM3TnB2gWoE49I&bb89I;9@<1W'`r-OSRc0,KF]0VJ3joCAS7M0iEe'N^'glpR\/"ZC>Rf@Z`%>/Z`&2&oJDIUp,%[G2U.tR4jB^9[Wj.U2J$73Amb43kjcKnnNjEMY@5hj-OJCb@@9iob\#MOB(V\JbZgd/c*4b0'mk<^Ch?Ul1RiVFQ.Z;`Ckg2NJn6j82m\?"8=@`,kNA7ZM`![82EhC)f=GGOfi.]>POQZN\TUV?3f-F/RYs]8dVh7HT6G5-cBUfW>e:/PG<4F2O!B.TBeY[?D=31+YpT9!IimpSU+94Aou-)%rSUb4JA0;uGS4(h6,.lT7LO6;!pb!p9Bi1UU<9+,jUl%;EUl%;EUkVSGWFAX*WF=7@C2ss5p?\hmJn6jVU0$DooSW!&Y@>fq/,#L<@<6=@N=RAfnR9a8c9ee`.p2G$XH$VLPFS+OcabLuS=lT:j)cJ(Z.#4*F$9KEKDN*):O'%(lXT;b1-6egq7,QJRU@U,gY<>6@SQG?fAGI,Bj@CYdpuh^4:RcD:W8nh:W''U;mE7H;mE7H;u%!N7/l1u@H2uJd4c/B_jSE,nV(iFs,W7g(,M-W[^/3DtN9u<'J5VdH5riL5c^q7Baf*kV_%[1H*JgRE_t`X#*5Ja?K7a/D#njF6tA6ZPgGh2NqdAbqr&R//3H61W.3;`?$,ND"0f%.R&ZcMO^q[d;(R,YK/p"mVL4oYW4Y[`Ws>#`eKIccfKI6KP.HK[?JUE,AptgZZtX/.5nn*f/KJf$F)eG:*+&C,W6aq<(@No7;%tad9`nE^.\-SqOH!EBp(-?Ru0A"RtaZ#VIE?aVI@raWS#\1WFh'$,(7ih=S*LiH3G8$-@KrQL<[7Xp@r%Jbbk#E2Nb_aILV2>ZgZ:LOtZeQ2Z>3"phSMeB8Si9W7g0_86#3g((GjaK1MqG%uSWB$'oWgCjZdFk@W@kp/LmcBQo-u=LppJID*QKXhH$,;uJeNpUcd+k=Y;aY2*!>ND?YM_oU[a)U-U!:%%.iYsA(:H*>Iks7cQm5?);&$i~>endstream +endobj +9 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 12287 +>> +stream +GatV$c-Gq'EJ4)DKXjaQu2L.3'_qI>CB/OJN8iCrqZDk99K50/k%)XbD]f#+uX')VF?r\/mle7Z-?O+#W2=%XMXF2MMj?q2GLUoD@0^O9.`]s.?51H\.6cl4ZC=]fC)H9qUG0b;ACJhFh:pWa2fKG"Hq$U=#>I31MJ@,n6lZE<24Y,1"*[ru6+Z42A4?K;%f._>_^J=Z5X_5*ocf+'UQ_DGXN^*EV[#FTohpckf\/kbNoUIfKr9`)iG2'Ops!VLGk&$XO1ef$:?0h0eH#0";kDpu/+5QNK%d@^_o!_tlPUNLp-bcTcpWcd*\_3W@RD(AY`3$HA(ekrNt1[]qr#[r-DIjln\iFfbP#fO\EBAXO,,m'^cq&c7s,a1aGV@?Y>8SgMcuet/.CntBSmD'eN%l9'3+2=!-&=mN3CUpnR]UpjsD(,_RrX')PD@'tK"2L/?/ag3`uP7Jt/Hmm[D[q)VMc3_YRc]Q@p7=&@dWp5moaS+n()WKa#$L3Bj#p'HQ40LGMt&5L(*rd\G`TNS9A6EW*g.VkNOU,\,F:'%P5LSmN,)==rR\&W/"d]Q!lPNb%fFkeZ:5FDpq'+@GCV[<9jooPm1?W#2XX773ea9!,T/AUNQ[BD(bn=L=N@7")mAa6Hr,?NEU5E8hPDPhq"-e;&Naf(U030J"Rpp!0pg)[d=>sD+DIOo`_9'qrj6!rn0FVoC\l64Ec0eY`EU!n+8gKk$abMB+OmdclZ+X5(E9f8)gk14Ec0aTS`plnnmaup+aPUkR[]d#r2p:oall.W"#e1lt%&f0.5icZd^j9>VTmq+lTQ6!qD2SEo>E#e'+TQ8pJ-dt>HohmoeYiqX=j$s]68$@!O:0E;1Os5b!3=7u>#bd@7Yo3%[3j09iknbHBK52HUdAaJ-+q/n;@]C(NPf\1Pu"/a_Bnaj-f'gh9Tb%"f[]c[-;WFthja1gZO^?8:Xe_)4kC=G/kX@iYs8cs+/1lu4q95_!B]n?j.J@45pagE[cN-Q`==+)9@je.ER&&tlZAYd0s7D$+0W""5a;!%G#r->_1$mbE`S#TL/Pf!X&e)bUT9/MU[F).7"n\B.O4!EPM7FKSa.4`Q8C\K[**#D.A7cdd-?=Jkf.[*KKad(0\(KkVWTCRR'mkDDBFSd%$6:(4^;3`ek8W?f+#F>*("F2`,8_!q-d>k*4%>VYpMlQ/K:KDU+*?:K)05Y]muC)R^M#KVKM8H_T(o$gc-DQ%'ZlDBSbBXc1'-h=Qp!joF_V]>Mk7>[32Pc"#n,u2Sd?3"g%DN@HH/i=Zu0Pei*8hXM0Y,6M;7a+6iCdA)R:K=]mo\6ha^[+Ygn%DZ.aLbKe;`.q(S%,D,TWV\E7hE4$iB9#Im1Nbp;4r0Nbq`4<%5M3XG3V9jEfY$ndr5_U(eZ9NNf)mYgNn]lNKLBMmWPdeq1-+X_(jCc+5h&@l2_:ZX1,0[GI@;?Ll"Aq"k%nkp:/I)e!74!%T,kCEL?Qd:1o;/'ht]ScMl`!EPfBX?HIE%']B[F*nIa1I*!C_gs.[JWVnb^=oAbA0%Hc[4rG9"2&hUi^]Ss>_44KDWNX]atlF'X+X9XS3B8hXSK(Z`1#Q9"2X7bH@+J9>]dle:W/GAUogVV2$Ng1jZl+i([tq@'%NlC@K1"0C&TYgNobg3Uq)96pUXlUKN/2o'1a#V459et.;Se^*7jrO?H^*]la_\\DQYdmrZC_"jt;Z[*]3O'ds;fku#D?Uc6?o@TJ8RRem/X/2n`,Z@9XS*=87B3@Cl9/eu!hm.QU,HL!QM&Z3S4PS18r<$ZsZ:Dt=1NhCE3aeg+^DNJ!FQ:0L0&?;);'V]YI7`hO:k/3mY1QJ@,S8DeK+gV:Q8dV#dgO;#ee,%tN1K'3;NkXS+\`A+'t0Spcc7o=T3E^KpEs1A2'LA#*HYkLhu$m?:i;feG=EgMgT(pN^+8>/"7]?7Frl,,orIkF!Wa9![2FpYnB\Z[GVCg\b9I:%./rF,G>3lG)A+`fJl/nmUdL?GK/dd3-,F7TjZc$q9JOfN:)J\i-3_[FNMu[+>U7%<\O?")((HcNkJ]!EQT?2JN=smFphfe)%(Wj9&fO"(:.H"B^!T=F'U;<^2pgI]h;(c=:M.mN^b^4r3!fD4eU)X7r<1=>.bgY4Kh-7!0P4"#f:=#4#GAW?oVb'&=nGQhFQ[+$3q7Vr*[6Xd3ep&9k>.BssX#k7o?/IL9?bR&Kn=@p*67*^="a^NElV;s:g-V&ll=?I2mbZdK3osB)f-sDgA_FB_r^oGL0@ACpt@+F>)YgMNue7R&#A(pY>D(+a$=RU5C!Gdoo=P$TZBe=)N[FH0pgU\FZA[W@3laZ^OU[eZ:nafKX4V^--X([lu`&5DIb0Pa[m[,=hKI[1SINe?iISZm5<%H/s+Me?o,jl^-udc#_[<2@]IkD'\d*c]gi4k.0+:D9MKq4Z]sp/U?5f)Q#F&+E>m8Qa"jA(U.Y,9A!p19A!p1$WsgQ"`3b29YKLSaX4\IS+N"_dT\&$dTa"k/S`kEQ#*J&A6iE1ADY'Yle2?>g1o3HeSM7f9LupQC,TcS=_js7ci2Ls4f_`OXkBMZ9W+\qB(`a6=g&!:[EehgcUp*@p.=hTo6#rIbLe=%eO)E=B>p?XG*d-*,U=;qJ$E6=2O5B.k,O,,42ijNu;PPPGhT/1DlL\[IRTl7qrNF[,BdDR%k-9TW\*g8V@rF_-)_b%fFkeZ::%PL8\(fPmNR/Jid[*caP%`m+ad.O/c1%%pd2_RB+@W!jmtaKR^E4`AS[?BC,N&-*/\!@i-sgWTi"9H]&2"RlG9Qr'R3NJ%bYC=It=2@QW`)tm.i8&sj6q0D>NlKDNU30+9q.Is5AG%P(TdpK!"847nJHR6)_M(n\C*;NV\.]GTZ\sN,-1[Su=^XLe-c#(Ss\uiLp6)1tB@aF2F"HDQPLcq6^,.'5:74-*[qTE>J8RK6-t]$=Ndh]q2JGY5db9YD2STp)[=qK%%oBBPAjRClP.X2Yuds*GBO+m)JhL*eV-(@Y8c]S1hic)j^mf"e20sZh/kB*F&F85WBM]@QhG8Pmn5X$mkjT5O'%QE;n)[N;^;*jO9@(9su3/@%R-e_00?^jTS<:p\_La-`0p7_NVg'M`FM685rK8:38/VgD8Al1juDNUQ$d5>8pXCRlm`iGBRg\CCN.:%J=S[p&VDG:p\RMDBIHd+`-Kc^oB<07VtPGC'1q!`u5ULp+KfZ)dlZMc)N[B]6!0>XRm,`oE*Tile@3&cNkKeN828iCJ7iUsb'dPC5GFp)6BVe'GNQkD8*8sE;I'AZ=Y[aF_);;Z(mV5C3Ta#gCP.UlU\<5M+'<5c5BW/,:b;$e19;$h$alK#9X^e/Oi>&VYh0DJD+eu`Oi>Kp>ibt9YbThjkUXS*N>V&-Ae$[rd(Y9C\b0489A#TNXLYkFc&jTA%FbmRY"$\"0NrXq-_%Uc[[KT3A^CodeJmFb!d)SM,OU?8^:$DU8"dP=uTVaQMnb@71lZ_tniOf3Ql'ni/+ZI0P1U0:EgUcKj6QM,1Mk%g^*dlL.(90n`>FX^d(lVb[0etn%Zetn1>X\/s>X\26[g9WQZP2;Y8L,pW_ThMDl(,]m@2/BmJ8kO#m:u5i,bk:Deb=Kh%bLdE2BqCX,l!d9MUe"H_I84l;mFrE*f;*kn-'m8dP(\]NX/(#0Zroh6CU8oNen12Od:O,uXj&?d6(ZV`CAJ0l?.%'\.[:&rjAVkj;Ue?&BH@H2Jr=SYe"=uX=@Z]@i]dGHsV!:nb[h9dZTkoT5fdg;\TSBf4K%dV;/*!#Q^/%7B1,eG_kr3m_E8b4sg]s)Do='tS!Xi=Vn]Tm#<1iGg!CYh\9B\nX!f"@9PdC^4!Xa)Fs9qKlQC!Qc0cYD%&!EPfBX??Ze49N"5ZT:nL).;Q/c.Xthb-RPEB7Q7[TXO=ujKs:7XF).,p]+FH7eE^h3r`Jic!#&1C>B/rg48%Y%@erUf)[B2A6ruKF4qN4)f#IVm5)W!\cGjt7Tas0aVc@m=/R96*dX@te,qdm(M]3%'1at/2DX.W9#$=l6c!@#3&u5PG.'r.dKq2`8Q85EVn#h#D+j<_q;\U.A85O7m:%HqXr4HY@9^'U@1-2FYcV';YQ_+3fRhi[RCh@G.EhHGR(p?TFB$hFe2Wi]mHG6"\W;mZ0+Yk"l)s1F'\[--sh\?lh)L\?3Z[h.Fe[f-6^e[l:O(?30/3Oks.,HknE(?3el5Zf,-L%mk$C2fUoejaZfnO,7^D4Z)[?a^MQTA.aI2GOVJoMfnTh)Z_8EYkrp\QcCX\I2NIg]ac_maeIDmaeI&WtWpQ!EPfBX??Ze49MZIX''dMZcTO/9p6)6RsZX;Upjm:[n]Jt0jn!cc$J1GX*(IGqbXW@LGG]i%jd][X'+%TZDk9q9sp7CT(LU8op0FB>I)ga-a2,'YhG9uldm(`jV_If=j>[,O%pGX+mrjZASaO?"E$]cc4',CY&f9@QIR97A`CoS*7?0^2/jZ4'B5F]$64gaac/=I?=pYqSGn=I?=pYqSGn=;\7tN4e[uL(Q6N,A].ETJDJ1bqO[j0YlBrn.%Si"/lV1C`$3JY,l58)0p_g.O/V*$W&E.?r\(P>o@n=+-kAilnErnD9Z69Gg@IH!?+%YYd%dtlH3jBQ%;^OU,%2H/bS(?d'Tg=Abf]C/8q'mE;s,f7V$6:7F8Q.jeV8[!'Cg4cU6A#4H&W>/hrPr0:!J7O)p>n5qb(Gb-lkpgQF1=HP#2Nf!2#IG&rGG3jIO+.jK,KDQIZ&Ml]&LmbKL&Ml]&LmbKL&Ml_J&Ml-b$j/FAKOFkG@>&KP!E=dc2I%AiabBTB"h@I)Foei+6B/uc+K.s6KnTik^4e6ATJ?PP>$o-9Bgf*r.g%_E!,PjGJkBq*>&G5'?ATSCAUoc_!341lg8GG8h[l%R<-sS.m=ba@)+N7j(dZ'DO,ak@-L[_JASaQU!,bHeNX>,ZYG6aigaD7^\W3RZ,;%^"fQdNho<^kO\sSKj8WbF#Nf!2#IG$%KG*I6L&Y](uK+s;/e,WJjC;NF^C;NF^C3&KLoV!UJoV!TiKOl9H__Qbb1;\cWKFQ,GNLO>Y.8;_MU$LD4X4h;h92&I<r&hO9^9OJ]8s!**`dNEo$+=>k3OAlqOTYjA]KJfCIY.e@Rq"qDtEHP=FQ)i3AU:SgTNu^6fE<<[:;;A"nJ!q-E"+)\C3PlgXF,`!_A1]ePsRWpX6d'B#3j;n4o$7pB)eXDN'&&KT1H=J5ngQ_F?b/_F?b/^oAJ9@-&:%F^oYcf^K!S4Z0?Wb/3`58^@DanHL"Lco[ZTN]nDAf,Abj6=KNNNj)5W>jk4:E&3]5#SO2o"r&R%*M%OaEcsnAL$IQ1-`,)p?KNq"+']QB@Gjmh8^@9*h$F(dP;B6G,9De8t(:R5`4.S+^`uQG5qR?W.IG>,JIG=k(544)`544)`546@En-gSM49MZI,A_T/=F!Bgn;OU1)=^"aeY`Rt&JY&0+SiCrCY&B6Yi.6DA+'CuSe3kCq^g:j=GW4,H#.rKZ(E:1HNd:&HIJLO6>Gf0c78eQ]611^*3and:3agJSSZpKX*O+ge:>"cg:210_5XrmP_M2]RQ"PaZcN#I;LgKmRB;B=D=mN1mXYF6a)pfP3JW/(s"'4_Wf^JpGnq"%("0#!Ye2_@f!#te9YkAL0nuQHj"4/P?lEc(XX''3#9PJed!V>gr60t?AFP3tFK3^*-\RGf?WC?#>0s1Po/,B>g3FiI8uIQB-W-f&R-%H"Qd;nGSLNF\*uR5kf>fLeB$V58D"LO/XEpfY2L;;(<^"q=)a2\BD=VLiFN_"(T+ddsNS0=MWHQMbouA-[\AgCA+%eGnEQKOLC=YSuHKE&UG4WqLRfHRB#$C8JRWWI4YA5)hC&c),8up<<=c'_o$MF8HW%BF@Oorn&S)ujYa=[_!m&F4c"]uXCZZZb]ZE.O8oEcH%A+#r70g@s6O83\YQh1E?@q8`6K:cnPOn9%k;t5)@cfC43\b$Gm@r0tm5A?k&S&]*aQYRi1+W?bH.Be$bV1&4PNW%),*ll(J;.Y3S6_t^-K8I)ga8#c14XS2g)h4%X\d>I7ugqnJhCcG)7fJA1tHNp-`Mm1GYJBG(AhX&6L$hCo8O2[UC/Jgs>gc?>7DN3B+R^HDi@=Q?%aVaFI<:0fgEesq@/]1G#92aUJ[(Xn'dT+giUF>]*+f#iBlqJ-.j(3KR`5SkO*s?9aacbg]*%j*C!V^7H_Sg6Zl>>El'cbW4(a\o/[1E/jC3g't'92Yh[2[Ep76[*V;/fg;1$d6\eWB+&R0[MITaJkV.MHRHC4QGcXhOq(g)?71)YK6o2O4cE1'&()-@kR"_ZYLE#lp4sKP`%I1e]$Gab95cEd:KEHCkDjXESPG=r;5oq(U3h%?4uM;F3dIVZ_M2Qm*C&Ot"o7rPYrFSY@h3skLkd59j$u3uiBlduO>bSK0.Z&WOiLe+##>p<$X_3"%uV'cME*&q=82*g(p:o?\,%C?hf*UsIe4(>D!N%#IOEM=L*O/"%4>ua%7b7#)ieY@cbTMWnr0g3).;PD@Dan:atpnhB;@G2#(BLDg1o1WC=X<=rVY(D=SZ1-em#K/$gtWn?GL<8#oe0kCVAgmo%NBec?iPlU+WN:K:Wu7`TDb[Z91"D&p4p)]cNs/'l:ToYNE$L1c%%B7p`?#TK?9`%n)!&8!Dp='U+WN8>uul_/Fqi.W/IlW(gsbaKT2<[@Dah8b-K>K4Z`W+9_VX7EBHS'BcR^&aI+*1,;9j./FZ=SEMhp(jpbips&S`uTPc:ICE_T(FUCodeJ[2+:X%j:o>6^=XmL)QXXUS.j_ZqtAtNf;$2ED$nfAS&B"tasLp]b!p2_PYKeDP`=>H-l]Fn;)[tg49Nt]cN#KA#TK?9/%!Y^G8nsqbpCn\,V/nrl-+@-p'(l8&2!Y=pCnJ.B/LZ;5oq(U3h%?4s]'TeCWi45JR1>i2j'(~>endstream +endobj +xref +0 10 +0000000000 65535 f +0000000073 00000 n +0000000104 00000 n +0000000211 00000 n +0000000414 00000 n +0000000617 00000 n +0000000685 00000 n +0000000981 00000 n +0000001046 00000 n +0000051487 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (http://www.reportlab.com) + +/Info 6 0 R +/Root 5 0 R +/Size 10 +>> +startxref +63866 +%%EOF diff --git a/data/ArucoGenerator/generate_5x5.py b/data/ArucoGenerator/generate_5x5.py new file mode 100755 index 0000000..67cc68e --- /dev/null +++ b/data/ArucoGenerator/generate_5x5.py @@ -0,0 +1,203 @@ +# aruco_svg_batch.py +from __future__ import annotations +import os +from typing import List, Tuple + +OUT_DIR = "svgAruco" +FILL_COLOR = "#031740" +DICT_NAME = "DICT_5X5_250" +MARKER_SIZE_BITS = 5 +BORDER_BITS = 1 +SIDE_PIXELS_PER_MODULE = 8 +START_INDEX = 0 +PDF_NAME = "aruco_5x5_250_A4.pdf" +MARKER_SIZE_MM = 10.0 + +def _ensure_deps(): + try: + import cv2 + from cv2 import aruco + except Exception as e: + raise SystemExit("Install opencv-contrib-python: " + str(e)) + try: + import reportlab + except Exception as e: + raise SystemExit("Install reportlab: " + str(e)) + +def _get_dictionary(dict_name: str): + from cv2 import aruco + if hasattr(aruco, "getPredefinedDictionary"): + return aruco.getPredefinedDictionary(getattr(aruco, dict_name)) + return aruco.Dictionary_get(getattr(aruco, dict_name)) + +def _draw_marker(dictionary, marker_id: int, modules: int, spp: int): + from cv2 import aruco + side_px = modules * spp + if hasattr(aruco, "generateImageMarker"): + img = aruco.generateImageMarker(dictionary, marker_id, side_px, borderBits=BORDER_BITS) + else: + img = aruco.drawMarker(dictionary, marker_id, side_px, borderBits=BORDER_BITS) + return img + +def _modules_from_image(img) -> List[Tuple[int, int]]: + import numpy as np + h, w = img.shape[:2] + modules = h // SIDE_PIXELS_PER_MODULE + step = SIDE_PIXELS_PER_MODULE + black_modules = [] + bw = (img < 128).astype(np.uint8) + for r in range(modules): + rs = r * step + re = rs + step + for c in range(modules): + cs = c * step + ce = cs + step + block = bw[rs:re, cs:ce] + if block.mean() > 0.5: + black_modules.append((c, r)) + return black_modules + +def _svg_for_modules(black_modules: List[Tuple[int, int]], modules: int, fill: str) -> str: + parts = [ + f'', + f'' + ] + for (x, y) in black_modules: + parts.append(f'') + parts.append('') + return ''.join(parts) + +# PDF helpers + +def mm(v): + return v * 72.0 / 25.4 + +from reportlab.pdfgen import canvas as _c +from reportlab.lib.pagesizes import A4 +from reportlab.lib.colors import HexColor, Color +from reportlab.pdfbase import pdfmetrics + +def _hex_to_reportlab(c): + try: + return HexColor(c) + except Exception: + return Color(0, 0, 0) + +def _layout_grid_vars(page_w, page_h): + MARKER_MM = MARKER_SIZE_MM + MARGIN_MM = 4.0 + GUTTER_MM = 7.0 + + marker = mm(MARKER_MM) + margin = mm(MARGIN_MM) + gutter = mm(GUTTER_MM) + + usable_w = page_w - 2 * margin + usable_h = page_h - 2 * margin + + # Anzahl Marker berechnen, die reinpassen + cols = int((usable_w + gutter) // (marker + gutter)) + rows = int((usable_h + gutter) // (marker + gutter)) + + return dict( + margin=margin, + gutter=gutter, + cols=cols, + rows=rows, + cell_w=marker, + cell_h=marker + ) + +def _draw_marker_into_cell(c, cell_x, cell_y, cell_w, cell_h, + black_modules, modules_per_side, + module_fill_hex, index_label: str): + # label area + EXTRA_BOTTOM_MM = 10.0 + label_h = mm(4.5 + EXTRA_BOTTOM_MM) + + marker_side = cell_w # statt min(...) + module_size = marker_side / float(modules_per_side) + + + mx = cell_x + (cell_w - marker_side) / 2.0 + my = cell_y + (cell_h - label_h - marker_side) / 2.0 + label_h + + c.saveState() + c.setFillColor(_hex_to_reportlab(module_fill_hex)) + for (x, y) in black_modules: + rx = mx + x * module_size + #ry = my + y * module_size + ry = my + (modules_per_side - 1 - y) * module_size + c.rect(rx, ry, module_size, module_size, stroke=0, fill=1) + c.restoreState() + + # orientation dot: 2mm inside + dot_d_mm = 0.4 + edge_gap_mm = 0.4 + r = mm(dot_d_mm) / 2.0 + gap = mm(edge_gap_mm) + dot_cx = mx + gap + r + dot_cy = my + marker_side - (gap + r) + c.saveState() + c.setFillColor(_hex_to_reportlab('#510000')) + c.circle(dot_cx, dot_cy, r, stroke=0, fill=1) + c.restoreState() + + # label: exact 2mm gap using font ascent + c.saveState() + font_name = 'Helvetica' + font_size = 7 + c.setFont(font_name, font_size) + c.setFillColor(Color(0.7, 0.7, 0.7)) + tx = mx + marker_side / 2.0 + ascent = pdfmetrics.getAscent(font_name) * (font_size/1000.0) + baseline = my - mm(1.3) - ascent + c.drawCentredString(tx, baseline, index_label) + c.restoreState() + + +def build_a4_pdf(pdf_path: str = PDF_NAME): + _ensure_deps() + dictionary = _get_dictionary(DICT_NAME) + modules = MARKER_SIZE_BITS + 2 * BORDER_BITS + PAGE_W, PAGE_H = A4 + c = _c.Canvas(pdf_path, pagesize=A4) + grid = _layout_grid_vars(PAGE_W, PAGE_H) + COLS, ROWS = grid['cols'], grid['rows'] + per_page = COLS * ROWS + total = 250 + for idx in range(total): + if idx % per_page == 0: + if idx > 0: + c.showPage() + i_on_page = idx % per_page + col = i_on_page % COLS + row = i_on_page // COLS + x = grid['margin'] + col * (grid['cell_w'] + grid['gutter']) + y = grid['margin'] + (grid['rows'] - 1 - row) * (grid['cell_h'] + grid['gutter']) + img = _draw_marker(dictionary, marker_id=idx, modules=modules, spp=SIDE_PIXELS_PER_MODULE) + black_modules = _modules_from_image(img) + label = f"{idx + START_INDEX:03d}" + _draw_marker_into_cell(c, x, y, grid['cell_w'], grid['cell_h'], black_modules, modules, FILL_COLOR, label) + c.save() + return pdf_path + + +def main(): + _ensure_deps() + os.makedirs(OUT_DIR, exist_ok=True) + dictionary = _get_dictionary(DICT_NAME) + modules = MARKER_SIZE_BITS + 2 * BORDER_BITS + total = 250 + for idx in range(total): + img = _draw_marker(dictionary, marker_id=idx, modules=modules, spp=SIDE_PIXELS_PER_MODULE) + black_modules = _modules_from_image(img) + svg = _svg_for_modules(black_modules, modules, FILL_COLOR) + fname = f"aruco_{idx + START_INDEX:03d}.svg" + with open(os.path.join(OUT_DIR, fname), 'w', encoding='utf-8') as f: + f.write(svg) + pdf_path = build_a4_pdf(PDF_NAME) + print('PDF saved to:', pdf_path) + +if __name__ == '__main__': + main() diff --git a/data/ArucoGenerator/svgAruco/aruco_000.svg b/data/ArucoGenerator/svgAruco/aruco_000.svg new file mode 100644 index 0000000..01cbe96 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_000.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_001.svg b/data/ArucoGenerator/svgAruco/aruco_001.svg new file mode 100644 index 0000000..a8ee7dc --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_001.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_002.svg b/data/ArucoGenerator/svgAruco/aruco_002.svg new file mode 100644 index 0000000..41e3fbe --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_002.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_003.svg b/data/ArucoGenerator/svgAruco/aruco_003.svg new file mode 100644 index 0000000..0b0411c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_003.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_004.svg b/data/ArucoGenerator/svgAruco/aruco_004.svg new file mode 100644 index 0000000..6015152 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_004.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_005.svg b/data/ArucoGenerator/svgAruco/aruco_005.svg new file mode 100644 index 0000000..ae86fce --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_005.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_006.svg b/data/ArucoGenerator/svgAruco/aruco_006.svg new file mode 100644 index 0000000..30a8544 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_006.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_007.svg b/data/ArucoGenerator/svgAruco/aruco_007.svg new file mode 100644 index 0000000..f3dd40f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_007.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_008.svg b/data/ArucoGenerator/svgAruco/aruco_008.svg new file mode 100644 index 0000000..15f7ab2 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_008.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_009.svg b/data/ArucoGenerator/svgAruco/aruco_009.svg new file mode 100644 index 0000000..a7e19bd --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_009.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_010.svg b/data/ArucoGenerator/svgAruco/aruco_010.svg new file mode 100644 index 0000000..799ef8c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_010.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_011.svg b/data/ArucoGenerator/svgAruco/aruco_011.svg new file mode 100644 index 0000000..250df89 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_011.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_012.svg b/data/ArucoGenerator/svgAruco/aruco_012.svg new file mode 100644 index 0000000..375311f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_012.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_013.svg b/data/ArucoGenerator/svgAruco/aruco_013.svg new file mode 100644 index 0000000..e9a8ff9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_013.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_014.svg b/data/ArucoGenerator/svgAruco/aruco_014.svg new file mode 100644 index 0000000..cf2a46b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_014.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_015.svg b/data/ArucoGenerator/svgAruco/aruco_015.svg new file mode 100644 index 0000000..39306af --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_015.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_016.svg b/data/ArucoGenerator/svgAruco/aruco_016.svg new file mode 100644 index 0000000..f437e82 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_016.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_017.svg b/data/ArucoGenerator/svgAruco/aruco_017.svg new file mode 100644 index 0000000..fade78b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_017.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_018.svg b/data/ArucoGenerator/svgAruco/aruco_018.svg new file mode 100644 index 0000000..1b76ccb --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_018.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_019.svg b/data/ArucoGenerator/svgAruco/aruco_019.svg new file mode 100644 index 0000000..cab402d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_019.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_020.svg b/data/ArucoGenerator/svgAruco/aruco_020.svg new file mode 100644 index 0000000..f742fba --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_020.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_021.svg b/data/ArucoGenerator/svgAruco/aruco_021.svg new file mode 100644 index 0000000..87bb730 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_021.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_022.svg b/data/ArucoGenerator/svgAruco/aruco_022.svg new file mode 100644 index 0000000..e6cd989 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_022.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_023.svg b/data/ArucoGenerator/svgAruco/aruco_023.svg new file mode 100644 index 0000000..3206b03 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_023.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_024.svg b/data/ArucoGenerator/svgAruco/aruco_024.svg new file mode 100644 index 0000000..70cb1ac --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_024.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_025.svg b/data/ArucoGenerator/svgAruco/aruco_025.svg new file mode 100644 index 0000000..21796c4 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_025.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_026.svg b/data/ArucoGenerator/svgAruco/aruco_026.svg new file mode 100644 index 0000000..c16e786 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_026.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_027.svg b/data/ArucoGenerator/svgAruco/aruco_027.svg new file mode 100644 index 0000000..daac55f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_027.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_028.svg b/data/ArucoGenerator/svgAruco/aruco_028.svg new file mode 100644 index 0000000..098bd5a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_028.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_029.svg b/data/ArucoGenerator/svgAruco/aruco_029.svg new file mode 100644 index 0000000..85b264b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_029.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_030.svg b/data/ArucoGenerator/svgAruco/aruco_030.svg new file mode 100644 index 0000000..9879db1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_030.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_031.svg b/data/ArucoGenerator/svgAruco/aruco_031.svg new file mode 100644 index 0000000..ee8d341 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_031.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_032.svg b/data/ArucoGenerator/svgAruco/aruco_032.svg new file mode 100644 index 0000000..2dd0614 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_032.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_033.svg b/data/ArucoGenerator/svgAruco/aruco_033.svg new file mode 100644 index 0000000..cf14dba --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_033.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_034.svg b/data/ArucoGenerator/svgAruco/aruco_034.svg new file mode 100644 index 0000000..34d49d7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_034.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_035.svg b/data/ArucoGenerator/svgAruco/aruco_035.svg new file mode 100644 index 0000000..a7dbd13 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_035.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_036.svg b/data/ArucoGenerator/svgAruco/aruco_036.svg new file mode 100644 index 0000000..03a3005 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_036.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_037.svg b/data/ArucoGenerator/svgAruco/aruco_037.svg new file mode 100644 index 0000000..ce70a7b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_037.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_038.svg b/data/ArucoGenerator/svgAruco/aruco_038.svg new file mode 100644 index 0000000..a30d1bd --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_038.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_039.svg b/data/ArucoGenerator/svgAruco/aruco_039.svg new file mode 100644 index 0000000..e105830 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_039.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_040.svg b/data/ArucoGenerator/svgAruco/aruco_040.svg new file mode 100644 index 0000000..bf2dddd --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_040.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_041.svg b/data/ArucoGenerator/svgAruco/aruco_041.svg new file mode 100644 index 0000000..9aab393 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_041.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_042.svg b/data/ArucoGenerator/svgAruco/aruco_042.svg new file mode 100644 index 0000000..96991c2 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_042.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_043.svg b/data/ArucoGenerator/svgAruco/aruco_043.svg new file mode 100644 index 0000000..69c0231 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_043.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_044.svg b/data/ArucoGenerator/svgAruco/aruco_044.svg new file mode 100644 index 0000000..767cfc4 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_044.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_045.svg b/data/ArucoGenerator/svgAruco/aruco_045.svg new file mode 100644 index 0000000..40f3635 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_045.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_046.svg b/data/ArucoGenerator/svgAruco/aruco_046.svg new file mode 100644 index 0000000..925ea06 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_046.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_047.svg b/data/ArucoGenerator/svgAruco/aruco_047.svg new file mode 100644 index 0000000..d19793b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_047.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_048.svg b/data/ArucoGenerator/svgAruco/aruco_048.svg new file mode 100644 index 0000000..7528a79 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_048.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_049.svg b/data/ArucoGenerator/svgAruco/aruco_049.svg new file mode 100644 index 0000000..acb3ecf --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_049.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_050.svg b/data/ArucoGenerator/svgAruco/aruco_050.svg new file mode 100644 index 0000000..2d29709 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_050.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_051.svg b/data/ArucoGenerator/svgAruco/aruco_051.svg new file mode 100644 index 0000000..c0caf19 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_051.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_052.svg b/data/ArucoGenerator/svgAruco/aruco_052.svg new file mode 100644 index 0000000..e1fc386 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_052.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_053.svg b/data/ArucoGenerator/svgAruco/aruco_053.svg new file mode 100644 index 0000000..c1e55a6 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_053.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_054.svg b/data/ArucoGenerator/svgAruco/aruco_054.svg new file mode 100644 index 0000000..4e323c4 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_054.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_055.svg b/data/ArucoGenerator/svgAruco/aruco_055.svg new file mode 100644 index 0000000..44ab9f1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_055.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_056.svg b/data/ArucoGenerator/svgAruco/aruco_056.svg new file mode 100644 index 0000000..f73b10d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_056.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_057.svg b/data/ArucoGenerator/svgAruco/aruco_057.svg new file mode 100644 index 0000000..7de7c9f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_057.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_058.svg b/data/ArucoGenerator/svgAruco/aruco_058.svg new file mode 100644 index 0000000..2fc1c28 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_058.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_059.svg b/data/ArucoGenerator/svgAruco/aruco_059.svg new file mode 100644 index 0000000..fe2a097 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_059.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_060.svg b/data/ArucoGenerator/svgAruco/aruco_060.svg new file mode 100644 index 0000000..a948138 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_060.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_061.svg b/data/ArucoGenerator/svgAruco/aruco_061.svg new file mode 100644 index 0000000..e5f1ab2 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_061.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_062.svg b/data/ArucoGenerator/svgAruco/aruco_062.svg new file mode 100644 index 0000000..a3b30ba --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_062.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_063.svg b/data/ArucoGenerator/svgAruco/aruco_063.svg new file mode 100644 index 0000000..24478ed --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_063.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_064.svg b/data/ArucoGenerator/svgAruco/aruco_064.svg new file mode 100644 index 0000000..7f737d9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_064.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_065.svg b/data/ArucoGenerator/svgAruco/aruco_065.svg new file mode 100644 index 0000000..d85db1f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_065.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_066.svg b/data/ArucoGenerator/svgAruco/aruco_066.svg new file mode 100644 index 0000000..a91d919 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_066.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_067.svg b/data/ArucoGenerator/svgAruco/aruco_067.svg new file mode 100644 index 0000000..380284f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_067.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_068.svg b/data/ArucoGenerator/svgAruco/aruco_068.svg new file mode 100644 index 0000000..6785144 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_068.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_069.svg b/data/ArucoGenerator/svgAruco/aruco_069.svg new file mode 100644 index 0000000..4fcc72f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_069.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_070.svg b/data/ArucoGenerator/svgAruco/aruco_070.svg new file mode 100644 index 0000000..4d68505 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_070.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_071.svg b/data/ArucoGenerator/svgAruco/aruco_071.svg new file mode 100644 index 0000000..30829c5 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_071.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_072.svg b/data/ArucoGenerator/svgAruco/aruco_072.svg new file mode 100644 index 0000000..baa0974 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_072.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_073.svg b/data/ArucoGenerator/svgAruco/aruco_073.svg new file mode 100644 index 0000000..568343c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_073.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_074.svg b/data/ArucoGenerator/svgAruco/aruco_074.svg new file mode 100644 index 0000000..b08df4e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_074.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_075.svg b/data/ArucoGenerator/svgAruco/aruco_075.svg new file mode 100644 index 0000000..7174618 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_075.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_076.svg b/data/ArucoGenerator/svgAruco/aruco_076.svg new file mode 100644 index 0000000..c0cff9b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_076.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_077.svg b/data/ArucoGenerator/svgAruco/aruco_077.svg new file mode 100644 index 0000000..deb0acb --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_077.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_078.svg b/data/ArucoGenerator/svgAruco/aruco_078.svg new file mode 100644 index 0000000..30740d7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_078.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_079.svg b/data/ArucoGenerator/svgAruco/aruco_079.svg new file mode 100644 index 0000000..6b3365d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_079.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_080.svg b/data/ArucoGenerator/svgAruco/aruco_080.svg new file mode 100644 index 0000000..22f4e74 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_080.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_081.svg b/data/ArucoGenerator/svgAruco/aruco_081.svg new file mode 100644 index 0000000..e8b1045 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_081.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_082.svg b/data/ArucoGenerator/svgAruco/aruco_082.svg new file mode 100644 index 0000000..1222db0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_082.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_083.svg b/data/ArucoGenerator/svgAruco/aruco_083.svg new file mode 100644 index 0000000..3de6d4a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_083.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_084.svg b/data/ArucoGenerator/svgAruco/aruco_084.svg new file mode 100644 index 0000000..33231e7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_084.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_085.svg b/data/ArucoGenerator/svgAruco/aruco_085.svg new file mode 100644 index 0000000..72387be --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_085.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_086.svg b/data/ArucoGenerator/svgAruco/aruco_086.svg new file mode 100644 index 0000000..782250c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_086.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_087.svg b/data/ArucoGenerator/svgAruco/aruco_087.svg new file mode 100644 index 0000000..4a114c3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_087.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_088.svg b/data/ArucoGenerator/svgAruco/aruco_088.svg new file mode 100644 index 0000000..71c4f00 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_088.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_089.svg b/data/ArucoGenerator/svgAruco/aruco_089.svg new file mode 100644 index 0000000..ccd1c99 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_089.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_090.svg b/data/ArucoGenerator/svgAruco/aruco_090.svg new file mode 100644 index 0000000..5fec977 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_090.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_091.svg b/data/ArucoGenerator/svgAruco/aruco_091.svg new file mode 100644 index 0000000..744f314 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_091.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_092.svg b/data/ArucoGenerator/svgAruco/aruco_092.svg new file mode 100644 index 0000000..41d7332 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_092.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_093.svg b/data/ArucoGenerator/svgAruco/aruco_093.svg new file mode 100644 index 0000000..e2ee5f1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_093.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_094.svg b/data/ArucoGenerator/svgAruco/aruco_094.svg new file mode 100644 index 0000000..7a9050b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_094.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_095.svg b/data/ArucoGenerator/svgAruco/aruco_095.svg new file mode 100644 index 0000000..c5e8e6d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_095.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_096.svg b/data/ArucoGenerator/svgAruco/aruco_096.svg new file mode 100644 index 0000000..22a17b6 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_096.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_097.svg b/data/ArucoGenerator/svgAruco/aruco_097.svg new file mode 100644 index 0000000..be517c1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_097.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_098.svg b/data/ArucoGenerator/svgAruco/aruco_098.svg new file mode 100644 index 0000000..c07fabb --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_098.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_099.svg b/data/ArucoGenerator/svgAruco/aruco_099.svg new file mode 100644 index 0000000..ff80ef1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_099.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_100.svg b/data/ArucoGenerator/svgAruco/aruco_100.svg new file mode 100644 index 0000000..1837064 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_100.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_101.svg b/data/ArucoGenerator/svgAruco/aruco_101.svg new file mode 100644 index 0000000..57b3de3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_101.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_102.svg b/data/ArucoGenerator/svgAruco/aruco_102.svg new file mode 100644 index 0000000..2a6b6db --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_102.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_103.svg b/data/ArucoGenerator/svgAruco/aruco_103.svg new file mode 100644 index 0000000..b9bcc7b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_103.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_104.svg b/data/ArucoGenerator/svgAruco/aruco_104.svg new file mode 100644 index 0000000..a8fbd21 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_104.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_105.svg b/data/ArucoGenerator/svgAruco/aruco_105.svg new file mode 100644 index 0000000..4cedc76 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_105.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_106.svg b/data/ArucoGenerator/svgAruco/aruco_106.svg new file mode 100644 index 0000000..6fe5569 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_106.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_107.svg b/data/ArucoGenerator/svgAruco/aruco_107.svg new file mode 100644 index 0000000..f994100 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_107.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_108.svg b/data/ArucoGenerator/svgAruco/aruco_108.svg new file mode 100644 index 0000000..ca70e98 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_108.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_109.svg b/data/ArucoGenerator/svgAruco/aruco_109.svg new file mode 100644 index 0000000..310a60f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_109.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_110.svg b/data/ArucoGenerator/svgAruco/aruco_110.svg new file mode 100644 index 0000000..a02f9b3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_110.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_111.svg b/data/ArucoGenerator/svgAruco/aruco_111.svg new file mode 100644 index 0000000..0b8c6c9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_111.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_112.svg b/data/ArucoGenerator/svgAruco/aruco_112.svg new file mode 100644 index 0000000..9c92f75 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_112.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_113.svg b/data/ArucoGenerator/svgAruco/aruco_113.svg new file mode 100644 index 0000000..648a962 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_113.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_114.svg b/data/ArucoGenerator/svgAruco/aruco_114.svg new file mode 100644 index 0000000..ad8aeb0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_114.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_115.svg b/data/ArucoGenerator/svgAruco/aruco_115.svg new file mode 100644 index 0000000..f5cda4c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_115.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_116.svg b/data/ArucoGenerator/svgAruco/aruco_116.svg new file mode 100644 index 0000000..1d59774 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_116.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_117.svg b/data/ArucoGenerator/svgAruco/aruco_117.svg new file mode 100644 index 0000000..069cf2d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_117.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_118.svg b/data/ArucoGenerator/svgAruco/aruco_118.svg new file mode 100644 index 0000000..0b58da8 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_118.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_119.svg b/data/ArucoGenerator/svgAruco/aruco_119.svg new file mode 100644 index 0000000..bbbbacd --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_119.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_120.svg b/data/ArucoGenerator/svgAruco/aruco_120.svg new file mode 100644 index 0000000..296837b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_120.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_121.svg b/data/ArucoGenerator/svgAruco/aruco_121.svg new file mode 100644 index 0000000..fc1e8c1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_121.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_122.svg b/data/ArucoGenerator/svgAruco/aruco_122.svg new file mode 100644 index 0000000..195c787 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_122.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_123.svg b/data/ArucoGenerator/svgAruco/aruco_123.svg new file mode 100644 index 0000000..53b8e64 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_123.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_124.svg b/data/ArucoGenerator/svgAruco/aruco_124.svg new file mode 100644 index 0000000..e873fa9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_124.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_125.svg b/data/ArucoGenerator/svgAruco/aruco_125.svg new file mode 100644 index 0000000..414a532 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_125.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_126.svg b/data/ArucoGenerator/svgAruco/aruco_126.svg new file mode 100644 index 0000000..95407a9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_126.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_127.svg b/data/ArucoGenerator/svgAruco/aruco_127.svg new file mode 100644 index 0000000..f65f45b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_127.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_128.svg b/data/ArucoGenerator/svgAruco/aruco_128.svg new file mode 100644 index 0000000..edeb270 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_128.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_129.svg b/data/ArucoGenerator/svgAruco/aruco_129.svg new file mode 100644 index 0000000..a15cadb --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_129.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_130.svg b/data/ArucoGenerator/svgAruco/aruco_130.svg new file mode 100644 index 0000000..ded75ea --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_130.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_131.svg b/data/ArucoGenerator/svgAruco/aruco_131.svg new file mode 100644 index 0000000..483532e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_131.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_132.svg b/data/ArucoGenerator/svgAruco/aruco_132.svg new file mode 100644 index 0000000..ef875ec --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_132.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_133.svg b/data/ArucoGenerator/svgAruco/aruco_133.svg new file mode 100644 index 0000000..eed603a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_133.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_134.svg b/data/ArucoGenerator/svgAruco/aruco_134.svg new file mode 100644 index 0000000..db8abc0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_134.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_135.svg b/data/ArucoGenerator/svgAruco/aruco_135.svg new file mode 100644 index 0000000..242ee70 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_135.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_136.svg b/data/ArucoGenerator/svgAruco/aruco_136.svg new file mode 100644 index 0000000..566f875 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_136.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_137.svg b/data/ArucoGenerator/svgAruco/aruco_137.svg new file mode 100644 index 0000000..68e996f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_137.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_138.svg b/data/ArucoGenerator/svgAruco/aruco_138.svg new file mode 100644 index 0000000..0679e17 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_138.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_139.svg b/data/ArucoGenerator/svgAruco/aruco_139.svg new file mode 100644 index 0000000..ba70273 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_139.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_140.svg b/data/ArucoGenerator/svgAruco/aruco_140.svg new file mode 100644 index 0000000..559a5ba --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_140.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_141.svg b/data/ArucoGenerator/svgAruco/aruco_141.svg new file mode 100644 index 0000000..74da846 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_141.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_142.svg b/data/ArucoGenerator/svgAruco/aruco_142.svg new file mode 100644 index 0000000..57dbf27 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_142.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_143.svg b/data/ArucoGenerator/svgAruco/aruco_143.svg new file mode 100644 index 0000000..41127e6 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_143.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_144.svg b/data/ArucoGenerator/svgAruco/aruco_144.svg new file mode 100644 index 0000000..a0b60f1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_144.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_145.svg b/data/ArucoGenerator/svgAruco/aruco_145.svg new file mode 100644 index 0000000..dd08938 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_145.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_146.svg b/data/ArucoGenerator/svgAruco/aruco_146.svg new file mode 100644 index 0000000..32b764e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_146.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_147.svg b/data/ArucoGenerator/svgAruco/aruco_147.svg new file mode 100644 index 0000000..5198fe3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_147.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_148.svg b/data/ArucoGenerator/svgAruco/aruco_148.svg new file mode 100644 index 0000000..6e5a584 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_148.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_149.svg b/data/ArucoGenerator/svgAruco/aruco_149.svg new file mode 100644 index 0000000..f6d8923 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_149.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_150.svg b/data/ArucoGenerator/svgAruco/aruco_150.svg new file mode 100644 index 0000000..13ed623 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_150.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_151.svg b/data/ArucoGenerator/svgAruco/aruco_151.svg new file mode 100644 index 0000000..b81e065 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_151.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_152.svg b/data/ArucoGenerator/svgAruco/aruco_152.svg new file mode 100644 index 0000000..a7409b0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_152.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_153.svg b/data/ArucoGenerator/svgAruco/aruco_153.svg new file mode 100644 index 0000000..c249f28 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_153.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_154.svg b/data/ArucoGenerator/svgAruco/aruco_154.svg new file mode 100644 index 0000000..40fe33a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_154.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_155.svg b/data/ArucoGenerator/svgAruco/aruco_155.svg new file mode 100644 index 0000000..3bcd504 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_155.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_156.svg b/data/ArucoGenerator/svgAruco/aruco_156.svg new file mode 100644 index 0000000..4dc9be6 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_156.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_157.svg b/data/ArucoGenerator/svgAruco/aruco_157.svg new file mode 100644 index 0000000..79773c1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_157.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_158.svg b/data/ArucoGenerator/svgAruco/aruco_158.svg new file mode 100644 index 0000000..f539e8d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_158.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_159.svg b/data/ArucoGenerator/svgAruco/aruco_159.svg new file mode 100644 index 0000000..26e49a2 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_159.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_160.svg b/data/ArucoGenerator/svgAruco/aruco_160.svg new file mode 100644 index 0000000..8c36750 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_160.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_161.svg b/data/ArucoGenerator/svgAruco/aruco_161.svg new file mode 100644 index 0000000..d25f3f3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_161.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_162.svg b/data/ArucoGenerator/svgAruco/aruco_162.svg new file mode 100644 index 0000000..3c24034 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_162.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_163.svg b/data/ArucoGenerator/svgAruco/aruco_163.svg new file mode 100644 index 0000000..23a33a9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_163.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_164.svg b/data/ArucoGenerator/svgAruco/aruco_164.svg new file mode 100644 index 0000000..e119321 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_164.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_165.svg b/data/ArucoGenerator/svgAruco/aruco_165.svg new file mode 100644 index 0000000..3b89df8 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_165.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_166.svg b/data/ArucoGenerator/svgAruco/aruco_166.svg new file mode 100644 index 0000000..cfdc8de --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_166.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_167.svg b/data/ArucoGenerator/svgAruco/aruco_167.svg new file mode 100644 index 0000000..34f0e2f --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_167.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_168.svg b/data/ArucoGenerator/svgAruco/aruco_168.svg new file mode 100644 index 0000000..155691d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_168.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_169.svg b/data/ArucoGenerator/svgAruco/aruco_169.svg new file mode 100644 index 0000000..a8e2a72 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_169.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_170.svg b/data/ArucoGenerator/svgAruco/aruco_170.svg new file mode 100644 index 0000000..108dcda --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_170.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_171.svg b/data/ArucoGenerator/svgAruco/aruco_171.svg new file mode 100644 index 0000000..c9a839b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_171.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_172.svg b/data/ArucoGenerator/svgAruco/aruco_172.svg new file mode 100644 index 0000000..1bacff5 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_172.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_173.svg b/data/ArucoGenerator/svgAruco/aruco_173.svg new file mode 100644 index 0000000..a063aaa --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_173.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_174.svg b/data/ArucoGenerator/svgAruco/aruco_174.svg new file mode 100644 index 0000000..b4add2e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_174.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_175.svg b/data/ArucoGenerator/svgAruco/aruco_175.svg new file mode 100644 index 0000000..4b01741 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_175.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_176.svg b/data/ArucoGenerator/svgAruco/aruco_176.svg new file mode 100644 index 0000000..6e242ce --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_176.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_177.svg b/data/ArucoGenerator/svgAruco/aruco_177.svg new file mode 100644 index 0000000..764e1ba --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_177.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_178.svg b/data/ArucoGenerator/svgAruco/aruco_178.svg new file mode 100644 index 0000000..714eeb9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_178.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_179.svg b/data/ArucoGenerator/svgAruco/aruco_179.svg new file mode 100644 index 0000000..91c7ade --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_179.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_180.svg b/data/ArucoGenerator/svgAruco/aruco_180.svg new file mode 100644 index 0000000..aebfe68 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_180.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_181.svg b/data/ArucoGenerator/svgAruco/aruco_181.svg new file mode 100644 index 0000000..309004a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_181.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_182.svg b/data/ArucoGenerator/svgAruco/aruco_182.svg new file mode 100644 index 0000000..505901e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_182.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_183.svg b/data/ArucoGenerator/svgAruco/aruco_183.svg new file mode 100644 index 0000000..4a89a0c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_183.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_184.svg b/data/ArucoGenerator/svgAruco/aruco_184.svg new file mode 100644 index 0000000..6c1b5e8 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_184.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_185.svg b/data/ArucoGenerator/svgAruco/aruco_185.svg new file mode 100644 index 0000000..c9dd412 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_185.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_186.svg b/data/ArucoGenerator/svgAruco/aruco_186.svg new file mode 100644 index 0000000..218b4e0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_186.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_187.svg b/data/ArucoGenerator/svgAruco/aruco_187.svg new file mode 100644 index 0000000..36942ce --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_187.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_188.svg b/data/ArucoGenerator/svgAruco/aruco_188.svg new file mode 100644 index 0000000..33b5650 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_188.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_189.svg b/data/ArucoGenerator/svgAruco/aruco_189.svg new file mode 100644 index 0000000..f74befa --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_189.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_190.svg b/data/ArucoGenerator/svgAruco/aruco_190.svg new file mode 100644 index 0000000..f6ee678 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_190.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_191.svg b/data/ArucoGenerator/svgAruco/aruco_191.svg new file mode 100644 index 0000000..fb84cb8 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_191.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_192.svg b/data/ArucoGenerator/svgAruco/aruco_192.svg new file mode 100644 index 0000000..f3a10c7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_192.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_193.svg b/data/ArucoGenerator/svgAruco/aruco_193.svg new file mode 100644 index 0000000..2ac1bc2 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_193.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_194.svg b/data/ArucoGenerator/svgAruco/aruco_194.svg new file mode 100644 index 0000000..2a44f3e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_194.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_195.svg b/data/ArucoGenerator/svgAruco/aruco_195.svg new file mode 100644 index 0000000..83b1b7a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_195.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_196.svg b/data/ArucoGenerator/svgAruco/aruco_196.svg new file mode 100644 index 0000000..fe820bf --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_196.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_197.svg b/data/ArucoGenerator/svgAruco/aruco_197.svg new file mode 100644 index 0000000..45c339b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_197.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_198.svg b/data/ArucoGenerator/svgAruco/aruco_198.svg new file mode 100644 index 0000000..c5a49fd --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_198.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_199.svg b/data/ArucoGenerator/svgAruco/aruco_199.svg new file mode 100644 index 0000000..00e896a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_199.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_200.svg b/data/ArucoGenerator/svgAruco/aruco_200.svg new file mode 100644 index 0000000..f76286d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_200.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_201.svg b/data/ArucoGenerator/svgAruco/aruco_201.svg new file mode 100644 index 0000000..884847e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_201.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_202.svg b/data/ArucoGenerator/svgAruco/aruco_202.svg new file mode 100644 index 0000000..0ee9367 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_202.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_203.svg b/data/ArucoGenerator/svgAruco/aruco_203.svg new file mode 100644 index 0000000..600c6f0 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_203.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_204.svg b/data/ArucoGenerator/svgAruco/aruco_204.svg new file mode 100644 index 0000000..43e7321 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_204.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_205.svg b/data/ArucoGenerator/svgAruco/aruco_205.svg new file mode 100644 index 0000000..9773a9c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_205.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_206.svg b/data/ArucoGenerator/svgAruco/aruco_206.svg new file mode 100644 index 0000000..adeae65 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_206.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_207.svg b/data/ArucoGenerator/svgAruco/aruco_207.svg new file mode 100644 index 0000000..b0c2dd1 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_207.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_208.svg b/data/ArucoGenerator/svgAruco/aruco_208.svg new file mode 100644 index 0000000..dc2af1a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_208.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_209.svg b/data/ArucoGenerator/svgAruco/aruco_209.svg new file mode 100644 index 0000000..354799a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_209.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_210.svg b/data/ArucoGenerator/svgAruco/aruco_210.svg new file mode 100644 index 0000000..3997987 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_210.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_211.svg b/data/ArucoGenerator/svgAruco/aruco_211.svg new file mode 100644 index 0000000..b803e27 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_211.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_212.svg b/data/ArucoGenerator/svgAruco/aruco_212.svg new file mode 100644 index 0000000..c8b2181 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_212.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_213.svg b/data/ArucoGenerator/svgAruco/aruco_213.svg new file mode 100644 index 0000000..7d3ddb9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_213.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_214.svg b/data/ArucoGenerator/svgAruco/aruco_214.svg new file mode 100644 index 0000000..ba04996 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_214.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_215.svg b/data/ArucoGenerator/svgAruco/aruco_215.svg new file mode 100644 index 0000000..9daef8c --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_215.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_216.svg b/data/ArucoGenerator/svgAruco/aruco_216.svg new file mode 100644 index 0000000..a10af83 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_216.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_217.svg b/data/ArucoGenerator/svgAruco/aruco_217.svg new file mode 100644 index 0000000..fdecb70 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_217.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_218.svg b/data/ArucoGenerator/svgAruco/aruco_218.svg new file mode 100644 index 0000000..7b611a9 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_218.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_219.svg b/data/ArucoGenerator/svgAruco/aruco_219.svg new file mode 100644 index 0000000..2515595 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_219.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_220.svg b/data/ArucoGenerator/svgAruco/aruco_220.svg new file mode 100644 index 0000000..c3fe842 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_220.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_221.svg b/data/ArucoGenerator/svgAruco/aruco_221.svg new file mode 100644 index 0000000..ef92802 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_221.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_222.svg b/data/ArucoGenerator/svgAruco/aruco_222.svg new file mode 100644 index 0000000..f1ccbc6 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_222.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_223.svg b/data/ArucoGenerator/svgAruco/aruco_223.svg new file mode 100644 index 0000000..1db4f28 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_223.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_224.svg b/data/ArucoGenerator/svgAruco/aruco_224.svg new file mode 100644 index 0000000..7330704 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_224.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_225.svg b/data/ArucoGenerator/svgAruco/aruco_225.svg new file mode 100644 index 0000000..f6a9780 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_225.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_226.svg b/data/ArucoGenerator/svgAruco/aruco_226.svg new file mode 100644 index 0000000..1071a29 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_226.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_227.svg b/data/ArucoGenerator/svgAruco/aruco_227.svg new file mode 100644 index 0000000..838b972 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_227.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_228.svg b/data/ArucoGenerator/svgAruco/aruco_228.svg new file mode 100644 index 0000000..2e0204e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_228.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_229.svg b/data/ArucoGenerator/svgAruco/aruco_229.svg new file mode 100644 index 0000000..9b69e4d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_229.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_230.svg b/data/ArucoGenerator/svgAruco/aruco_230.svg new file mode 100644 index 0000000..3c2237b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_230.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_231.svg b/data/ArucoGenerator/svgAruco/aruco_231.svg new file mode 100644 index 0000000..7fbf56a --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_231.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_232.svg b/data/ArucoGenerator/svgAruco/aruco_232.svg new file mode 100644 index 0000000..754478b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_232.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_233.svg b/data/ArucoGenerator/svgAruco/aruco_233.svg new file mode 100644 index 0000000..4c6758e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_233.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_234.svg b/data/ArucoGenerator/svgAruco/aruco_234.svg new file mode 100644 index 0000000..53dfb9b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_234.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_235.svg b/data/ArucoGenerator/svgAruco/aruco_235.svg new file mode 100644 index 0000000..2feb7f3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_235.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_236.svg b/data/ArucoGenerator/svgAruco/aruco_236.svg new file mode 100644 index 0000000..026423b --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_236.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_237.svg b/data/ArucoGenerator/svgAruco/aruco_237.svg new file mode 100644 index 0000000..6959fae --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_237.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_238.svg b/data/ArucoGenerator/svgAruco/aruco_238.svg new file mode 100644 index 0000000..352eeb7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_238.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_239.svg b/data/ArucoGenerator/svgAruco/aruco_239.svg new file mode 100644 index 0000000..c882494 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_239.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_240.svg b/data/ArucoGenerator/svgAruco/aruco_240.svg new file mode 100644 index 0000000..048364d --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_240.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_241.svg b/data/ArucoGenerator/svgAruco/aruco_241.svg new file mode 100644 index 0000000..515cf1e --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_241.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_242.svg b/data/ArucoGenerator/svgAruco/aruco_242.svg new file mode 100644 index 0000000..5572b51 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_242.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_243.svg b/data/ArucoGenerator/svgAruco/aruco_243.svg new file mode 100644 index 0000000..4bd21dc --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_243.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_244.svg b/data/ArucoGenerator/svgAruco/aruco_244.svg new file mode 100644 index 0000000..b687315 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_244.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_245.svg b/data/ArucoGenerator/svgAruco/aruco_245.svg new file mode 100644 index 0000000..86f0630 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_245.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_246.svg b/data/ArucoGenerator/svgAruco/aruco_246.svg new file mode 100644 index 0000000..8a3e981 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_246.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_247.svg b/data/ArucoGenerator/svgAruco/aruco_247.svg new file mode 100644 index 0000000..5d397f3 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_247.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_248.svg b/data/ArucoGenerator/svgAruco/aruco_248.svg new file mode 100644 index 0000000..8200147 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_248.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/ArucoGenerator/svgAruco/aruco_249.svg b/data/ArucoGenerator/svgAruco/aruco_249.svg new file mode 100644 index 0000000..0c4cad7 --- /dev/null +++ b/data/ArucoGenerator/svgAruco/aruco_249.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/data/5x5_twoFotos_10mm/DSCF0033.JPG b/test/data/5x5_twoFotos_10mm/DSCF0033.JPG new file mode 100755 index 0000000..5ec393d Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0033.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF0033_recognized.jpg b/test/data/5x5_twoFotos_10mm/DSCF0033_recognized.jpg new file mode 100644 index 0000000..b38d29d Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0033_recognized.jpg differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF0034.JPG b/test/data/5x5_twoFotos_10mm/DSCF0034.JPG new file mode 100755 index 0000000..5155f3d Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0034.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF0035.JPG b/test/data/5x5_twoFotos_10mm/DSCF0035.JPG new file mode 100755 index 0000000..78eb5bd Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0035.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF0035_recognized.jpg b/test/data/5x5_twoFotos_10mm/DSCF0035_recognized.jpg new file mode 100644 index 0000000..c364d49 Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0035_recognized.jpg differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF0036.JPG b/test/data/5x5_twoFotos_10mm/DSCF0036.JPG new file mode 100755 index 0000000..8dec470 Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF0036.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF1053.JPG b/test/data/5x5_twoFotos_10mm/DSCF1053.JPG new file mode 100755 index 0000000..1870631 Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF1053.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF1053_recognized.jpg b/test/data/5x5_twoFotos_10mm/DSCF1053_recognized.jpg new file mode 100644 index 0000000..9b7a0bb Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF1053_recognized.jpg differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF1054.JPG b/test/data/5x5_twoFotos_10mm/DSCF1054.JPG new file mode 100755 index 0000000..6b9290f Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF1054.JPG differ diff --git a/test/data/5x5_twoFotos_10mm/DSCF1054_recognized.jpg b/test/data/5x5_twoFotos_10mm/DSCF1054_recognized.jpg new file mode 100644 index 0000000..e7bee9a Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/DSCF1054_recognized.jpg differ diff --git a/test/data/5x5_twoFotos_10mm/calibration_XPro2_16mm_1m_f8.npz b/test/data/5x5_twoFotos_10mm/calibration_XPro2_16mm_1m_f8.npz new file mode 100755 index 0000000..4ddc42d Binary files /dev/null and b/test/data/5x5_twoFotos_10mm/calibration_XPro2_16mm_1m_f8.npz differ diff --git a/test/data/5x5_twoFotos_10mm/readAruco.py b/test/data/5x5_twoFotos_10mm/readAruco.py new file mode 100755 index 0000000..21c6148 --- /dev/null +++ b/test/data/5x5_twoFotos_10mm/readAruco.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import sys +import cv2 + +def main(): + if len(sys.argv) != 2: + print("Usage: python3 readAruco.py input.jpg") + sys.exit(1) + + input_path = sys.argv[1] + output_path = input_path.replace(".jpg", "_recognized.jpg") + output_path = input_path.replace(".JPG", "_recognized.jpg") + + img = cv2.imread(input_path) + if img is None: + print("Fehler: Bild konnte nicht geladen werden") + sys.exit(1) + + aruco = cv2.aruco + dictionary = aruco.getPredefinedDictionary(aruco.DICT_5X5_250) + + parameters = aruco.DetectorParameters_create() + + corners, ids, rejected = aruco.detectMarkers(img, dictionary, parameters=parameters) + + if ids is not None: + aruco.drawDetectedMarkers(img, corners, ids) + print(f"Gefunden: {len(ids)} Marker") + else: + print("Keine Marker gefunden") + + cv2.imwrite(output_path, img) + print("Gespeichert:", output_path) + +if __name__ == "__main__": + main() \ No newline at end of file