From 1a4151ca75d41fa01a5f7483a8431f43388e8654 Mon Sep 17 00:00:00 2001 From: Sayan-Chaudhuri <47924148+Sayan-Chaudhuri@users.noreply.github.com> Date: Sat, 27 Mar 2021 01:37:24 +0545 Subject: [PATCH 1/8] Added implementation for KMeans algorithm in GIL This is an implementation of Kmeans Clustering algorithm for Boost GIL. The input image filename(absolute/relative) must be passed as a command line argument.During execute ,input the required number of iterations and K value that indicates number of clusters. Output is stored in the file named output-kmeans.tif I have attached the example output of my implementation for the input image frog.jpg(attached),and number of clusters and iterations being 10 and 1 respectively. I would request the community to kindly provide feedback for my implementation I would also like to use the implementation of this algorithm for my gil competency test for GSOC 2021. --- example/KMeans.cpp | 148 ++++++++++++++++++++++++++++++++++++++ example/frog.jpg | Bin 0 -> 9282 bytes example/output-kmeans.tif | Bin 0 -> 784590 bytes 3 files changed, 148 insertions(+) create mode 100644 example/KMeans.cpp create mode 100644 example/frog.jpg create mode 100644 example/output-kmeans.tif diff --git a/example/KMeans.cpp b/example/KMeans.cpp new file mode 100644 index 0000000000..21d3029e59 --- /dev/null +++ b/example/KMeans.cpp @@ -0,0 +1,148 @@ +//kindly input the file name of the image as a command line argument.Input image type should be jpg/jpeg + +#include +#include +#include +#include +#include + +#include + +struct node +{ + float x; + float y; + float z; + int cl; +}; +struct node2 +{ + float x; + float y; + float z; + int c; +}; + +float calculate_distance(struct node i,struct node2 j) +{ + float squared_distance=(std::max(j.x,i.x)-std::min(j.x,i.x))*(std::max(j.x,i.x)-std::min(j.x,i.x))+(std::max(j.y,i.y)-std::min(j.y,i.y))*(std::max(j.y,i.y)-std::min(j.y,i.y))+(std::max(j.z,i.z)-std::min(j.z,i.z))*(std::max(j.z,i.z)-std::min(j.z,i.z)); + return sqrt(squared_distance); +} +//we are trying to find out which of the given centroids is closest for each datapoint +std::vector findClosestCentroids(std::vector&datapoints,std::vector¢roids) +{ + std::vectorassigned_centroid; + for(auto u:datapoints) + { + std::vectordistance; + for(auto j:centroids) + { + distance.push_back(calculate_distance(u,j)); + } + assigned_centroid.push_back(std::min_element(distance.begin(),distance.end())-distance.begin()); + + } + return assigned_centroid; +} +//recalculating the centroids to fine tune the clustering +std::vector calc_centroids(std::vector&getcentroids,std::vector&datapoints,int k) +{ + std::vectornew_centroids(k,{0,0,0,0}); + for(int i=0;i>iterations; + std::cout<<"\nEnter the value of K"; + std::cin>>k; + int data_length=h*w; + std::vectordatapoints; + //converting the rgb image into a set of datapoints each having three dimensions red channel,blue channel,green channel + for(int i=0;icentroids; + for(int i=0;igetcentroids; + //the stopping criterion for KMeans here is the number of iterations + for(int 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 literal 0 HcmV?d00001 diff --git a/example/output-kmeans.tif b/example/output-kmeans.tif new file mode 100644 index 0000000000000000000000000000000000000000..5d69f9725719b769224ce9c6ba00b778df52ebef GIT binary patch literal 784590 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 literal 0 HcmV?d00001 From 18514c03ed583f4df803cf8719a364676ab21d46 Mon Sep 17 00:00:00 2001 From: Sayan-Chaudhuri <47924148+Sayan-Chaudhuri@users.noreply.github.com> Date: Sun, 28 Mar 2021 17:46:30 +0530 Subject: [PATCH 2/8] Delete frog.jpg --- example/frog.jpg | Bin 9282 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 example/frog.jpg diff --git a/example/frog.jpg b/example/frog.jpg deleted file mode 100644 index 40450560e0edfd657ee27ff889bb33b4cd61ed34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9282 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 From 9904d7201b42cad64ff09868f44f14e0de93f93b Mon Sep 17 00:00:00 2001 From: Sayan-Chaudhuri <47924148+Sayan-Chaudhuri@users.noreply.github.com> Date: Sun, 28 Mar 2021 17:47:16 +0530 Subject: [PATCH 3/8] Deleted output images --- example/output-kmeans.tif | Bin 784590 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 example/output-kmeans.tif diff --git a/example/output-kmeans.tif b/example/output-kmeans.tif deleted file mode 100644 index 5d69f9725719b769224ce9c6ba00b778df52ebef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784590 zcmeI*f9ST`l^*oxoRc3Xi7*|d8ml9gVjGI1&>)0*a$Y+ANLpnq79lc4Py{n0GZaE? z6w$%97#IYpA`uKiQAkECN*#%U4%o3AaQp>=K@`QHhAM~Mz{>+EH9}kNv4%{^Dx9!iN=_tK-o6=j2-@&MAL(uvh$lRL(!~JAVAt|MWY*@apgQm0x^+ z2mGjUzT&xd_%_>zH}@4CpN`Kn zGhhW*=DVa*S$jp!OzoZdW_#_MXRD6SvGJM7^Lwp*<{WTl+zmhTz3g!Idwq|+Z_g>6 z1Dylrz)U@KRuwy|ik*ELUw4L0GiI`JZzj8QW#VX;-}v?4 zBd*lsnQwV??QZ^z`rrI@GkYaBuE=?|oN;E{4L{pm>~P*IezWcK^UN}R*Uxj;Gxadd zs@i*QeZ0BVS<-p)Oso&9aXQ!PeJlEvT0QfPSJvu7h2NZYGvf}iH6I=o?-1wJKI}HD z>d)%4xBkl-^{C%+pX+(%oxbbGyX(e&d(_z9GNa6?n7`JR9GbKikd2|s<(!E}Yw~CvsPHR3%;>nbvezhQRA2tH;nCP$o&OB?J31%I-wi**eXTg- z)xXpB|GKkD-(BBb%7M{Zm)@hw44Y=6w(mdBI!feLVjry!6@J<` zt*!7AXU48S6&?A{hAZ)TB+j$lZ{@tHH`u{m@xM7Q|1Q8IeY1U*o`X6E9wP^4YPIiC z&#n8Q9AmdrdUqG@}CW-m^`Ze z+3t7ry!Hk=;8FjZ|9Xaf)bF>?^%(O@-{W)M<4k?_J*v#D{X4_goo$`b&cx1fm3`%} zz{!Udd!4B{Q~zgb$mqUluTh=EpV3cipTVBu`3&}FxZlw;+8gYENBwVp&#li;yZVgJ zIrlx%z0cI@o?EXwlU9BXo94CM>?>xy${APed#2`5b!?`FxVGZYD1TJ5qA%x}aV56T zzcbWJqczaFF@s05&JBBmo$)i@Q9AoGf3tn|p6@ybu9X9+j#ccVb8FAA`_Hf|W;!*~ye4M_ zcHbF&byi?~TcLlH=4hR-)RV*+-K)Z{?3Flee>t}rlS=#_m17*94evawCf}azj?#G_ z^?U4dU27ic`|A6u#%dH-Vl}FH6@KOHkIG3iW5u3&jAXB9&Tt;}j;`_@wV(H$ zYf`V$_j2ER>G;2nf2BTK|I<6-&sfFIN{#oKf1Rx!38#9S?CI=@U$LuM;Xe|mQdcWA zCvjHmr+wT0=AXTe#;0BWJa~do}L4wUTeooF_ALqP@flJmcFV-DxFm@XH~JYQsaGQ*fiH%-Ja_0quTFvUo-Knyal6mNq*9o)A-mqbTppnjvmQA z8k0xm+cP9=FR=qoeqQ~K9_jn)v#gsb()->qUl;R^?MI7kr6ya?)BEDwD(<;;pSjha zhl=kt2d&sQ)!r3$YtD@Ria6X$vl0j6Ca%AoPuZV+x{*dsBeJh%kIH#IisY`N>(owVV%XwrbCh3kI$vzXGM_p_GkZ|fN?qyGY zUgeG+>6_}ayzJX&Vp4gR<;?8WYmdFVj_2!mj@Du8d3sZvTg5%Y-gkzr%o@+ku~x6Z zD`J~wRqZSG9o4MFGu7nL8rA$`=gk%IOm}^C`-)gyUDKW+;nYj)VAtoX+{M+uqxS#U zd8hLJCQjeQv3Jq&oR8;d9kzz2H^o^s;htg7pJ7L5jotXEu8!JwJJ*aqN6n`*I%)0b zy(GSMezaaSzh_wUXEpA8dzo+c3<;-RVh4NjdFQ)co#(AT-+P}K!}PXR>}UGfdtEE9 zcDS!f9Zoeoy)QktoLiYK>tv-~HRt6Vu|rI}$4A0D#CB&NQvZlSZJKATZ=}Iwngt%!?i`fx=-Hi{M%Uhp@7Y)Qpnk%YeMi@N7h>z% zXzkj8f0f?&s91SlV)eCO1?zv~`9B*;-$k-l`j84I>1*HZey{S4w4XhXbPjY5tjK}U znruB!?}BryxM$U4XI0}_nH_fHILlOglV8CVO=qGCPMWSwoQho?ab@iaP9@HAk`Hpk ziLc!_q#8I{$42?qy&dqV|2y!#yX23YopJKN?H_H19sQ9JJ?aoIPtbT<*!*Q=2@aSEP z@;#$*tJKEPnpWYbx_1?O<%~OUD)+k^XNR~wk`I+{D)k#P_O$N~vE41_+n=6OItMxj zcF2Lz`fQy~??un8k1@A8cQ{j2@KI~k5s&&Xy0)U9IL=%ZoOG^eH_jED&Y0qsYUXGi ztMILLSHzVw?!ZZRy0d+UxIK~&mG3L{8#DH_?+&ruIseaWJh|4N;lscEiFJ?&NOo@HlTxzimu zJIC-DeDk|Yy~n6sP4RB=+#&zlhn`b92Ra9K&VfqZw$7*bqUYB6`83V=skcw|G;1XO zQTEEd70yxqsIy{UHQnoxuxAvfGs+Pse#P$3WK%7z)Um{|zFiTgbM0nNcek5;x41o< zKYoL$-x#&4Dc&u%yL}7oPtPx%1DylA<-lm&PVa?tt2oVKZLiO{NA>@e8R007KA(vz z{wIG{taauRSN1xJvwGhY&txAxm;P7k=V(o{kG&!uJ?{?u$~~UR*&!zF!^?l4PU<%* z_R6=sTg=bQ`QEGNk~Xx;WLNN-2at@W9-GQW@Z`SR23pk4k7>|ST$bQXO` zoMd;cIPsmi5>9K6vajCPI8^Y=xkhVjrM_9yu8u3`-HkJPrz`lo#iae2pJCItymM?< z}a1~nH>^mbgvnH@?o`o#^=$sX=c=n%woXXjE=6H{*@y>C0X5aiS()X3@t`+Yb z&((R}`aQpN4s;GYQVvw=x%FS{+u^J#uKaAVIWOm2`*yLt{R%v@*UZ|{vsCtyvl~wH zm-gL!PX463OMLCF)t<2N5vQ7*>YH^eVe8vbIPJBK7Bc#rkL2zKO0Un%OlyHxf0&_yeo3j z^Qy01Y}`@}PxZ|@mT;sZ2-`ZmK!`>wF3I9$b^?l;-5a<2CC^{i?f%>T;wC10%O zZaC#_+uz)yc6>TModcZ%=D=ue_l-#Ji?gb@=hHX;?A5-#(&z8M(dT>N6o-5H<7_29 z${#hwqx!B*cvMqUd+s&z-%^--EXpA&Vl(H7_IrfHK~7dZWZ?o`*Mc0S5LkD4tD)){KNOZ|LdRs;=SUK z<~Z&8roDn)dlXJNT+y%iTzLzub=EO)s%b0i?zV{>5iE%4n*{aeqiFK1QfcYFA&U}p+_)}F9@apKR|(~MKmbZv!y zFOGhSlRt72PHT6wC;uz&g0-$v$5MS;Vb`D4*f=zP`FAioChKA{n%h^oi%R`z&au5~ z$Ft+vIq;l0F!L^?{>`~n?CkaoIK{`=Z3a72%;;3sroFT$ob(fa2fOppYJVzw$q|qG zR#{u&jP83BU*E))_sd#m|D3+ld)f7E1vU8Il5MU zMSqktbC3F#aOI7#*7=?K{oV`f&kF3>8^4^bIwtF4Qpx8l#=lZ?nzOEV?bvo~I|rUK z2S(qEN?+$pC%*d6TRppPapl`deS5Nx&IJ|z%w98VE52QYljf$?{*UgP_}cYZyI9UB zHfKiH%GaL?PTymyb$-i!<7Z-hSb@{o+rDmI>)5`IZ6%+t7^_rg+Wwrqbl-d5d*{IU zIZ$~!e1lS7=d3Ee%G|2Yp3$?LpZ3z)#rE(OY~OwqPWx8$(^~BnoijNV-@LmseH-0N zKgCH$PQtFOaO78TCH@timE8j)xrS0KYVEg}yzWjvMnc*0dq*Jl0 zBd)A{297aFcqR@>Q~RjCIVM&|{ZX90*-EXm4y?x3nWM00Oqy~U_dI)44y1e=wIAir zQ97xfwEa1I=Dzp7_s)U)=DnQ9Qlct=;J+~f}11aBT>__=l z(Xmz}tWM&z{k}bI$G_v>Iq*C=U`?)I-y{1vXI1f;bF2I6n?9%9PCc;p%8Vmt2b^XE z?fR+xig@%aqx>tzWYlMKeg@C%o7PtRN#D5kRO_r8E3mcbDC}91rkut-w;q)PDc@%7 zNBLIKu_iQrp1!y5y6?Jk;JP_bsqJ!nk5XUf{J3InRbLZ_fDcEkFd ze3R4ohwp#?*FXQoj>GFXnE$JBiuvfi>3i31eY2jdz^N|H*!5o>?Tvd@Jt_yxvDLWZ zbNZGmYvriZ__{r9-(BBb=fGpCX-KJR!8jo z@@&{RBs?0Eq;oI3^U(?)jL)dPz9l@WS>dO>X6$L-QO(i%km`W7Xa*&}74$brgR;M?JQG>X*`Cm$*~rcRm#oTKHd zpX{lxcCW_2_WqZ?_O17f)l5v(xfdRtn-V|yZ+sG`VjtaC{*1mlyJ5fUgsnM#`>Cdl za^xR{^|^7+ttkg8`DUJ1_`7k^*^@ohffaV^;R^lMe2m_^@3HT(bKs-pK&tb}?)&B2 zCzg|RM(@kFKy2@wW&wRmeAkNQi{*z~ z>y>N$?kc{?Pq?BZ$5iyVtYf)iFu>E9~agQFw))NmHK_N4xwT@Cx5j%}KS+TCoF8ezv{mR&(H} zT=nfs*zeT2wSrw+@i~3JuB~w7i__W}d#a^sCQh=uw(;Zj;eDrlr=0^IEeCuDkHRx| zk!rYh^_>}gADvGVN4{8oB8?}q&h$|fV z39HliqxH8Pw~kxqz~kkBb$bSn=0>X36?^5~^!@dH6sx0s6ssd1)wv@7sPnGSNt)Vs z!zurd@-yl0U{5vVDBqHPs(Y!|U13i?w0)ns)%>~Fy;O3~w=ZFJtS!Dl&Ys%ki$^up zPdaKE|71@b`4yaMj{0)6i{;ETJ2jVuDqeX*Zw)P zSdLizQJnl7)wv3P=De;=cr*?boy6I}p1zlgZmt zD|qxyQ~lKL+q4?{#`*4O_Z`@+5PSs zzj?MDt##H<`&hA@#*a6jrkokQYjY-HYl8K}cc+5YsqoL_=$qK{iscwL-)`+kVS5QR zQ;kh|lK4m2)4pxrzgO=&>N|So9H_jZGx4d^Sl^e`IK6AWW%?jr?AxSWoZfUfjgOsM zD|a^<^A(z-J|w=rjpE9;DW{?@|Jks0GSyZ4*u-i3W6ZGTgLw3QT`Tr`v_7PFN51cu z_Oy1jUH_9ma{P|ui{<#fi{%`JjcwY?+UT8XUya?janC`W1DylA<-q7$DSz}Vm3r&@ zvKsr|xtDg|EZ-fmZ&1=v)3;vxRdD5uGiOmQjFZaSJ2lPjd?@_|OFA4j-`<7`>YggO#=c_;VbFY5OcYgNOw|?@c zUuoA*?Y_m@ja9O{Htn0%s_)%t7rU2s>xpMnQ@hx;V%Jvi%-W>CLNo2v_MWpk2Ocj6 zdihow#NS|*c|Y!afb3ct<06K6_4sv_Ns8)SAWv{XbnvKv{t_Hbe42&!bvCP zm3z5XEJvMGi{yxB`06x%y#BxMwD0taIp8~(@XWbV&D8EYHHv++M%T($Ct=?d*NS~> z;!hj=~i`-K)ZvKy1Cn8^X(LGh@j^>7qhhj+l9-5$U}l<4yS}Z!$^W!h;#cfRQ+q{6j%$y?qu={#zUNxK*HQY`9I-XI@yl7&SX~`^zn(?A zvybzUxbjBG_np#S(OJ#$TXs$q>$80A^2O=wm9h z_-*gGrgNZkz_%~q(L71DXw>dovjXc+(wAeOFHUcV??}Sxh<*39CoDhVwDuY7>3;8J zUlH>&&*FD+6>NNV@Y%YW{E;J0wYu%EXINu(bzHeq-xuc^?de_6?l&^JR-H4kKKm9| zu(3+>rg0Fgy5HE;%7S9ie9 z7s($vzAp*OPuO=qakR@9%Xv1O?rR78in}=TTr=PJqpr1PR?aA2oYu-ob-V44H@BvH z*X}GMwkG&4JOlRZ6>QwZuJuh%v#NII%4Anl?EPvNCw={wuV%uYS1do(DDCna_q@|N z&^a)Z1C`#UqHm2l3R@?4z@E!lBl#w01+MfPEB3v*X1cFr_q>TSV^{wuJmb&ITECI2 z;1%b!W*P_g(msmS7gy@}vvG{iBVlI{v2%*~W^Jjw9nJZv_rLS2Kl7gPG=|39IaHix z$;6Sbe#%=pVs+e0EXOmdldyS}eA8a3Z}J=WT+=zwIZ)|UM)Rani$*!t!`-lNR>H|= z`Eq0jK;H~dFFXj-5#y~@{{IK_A~c7%I6()oDtIOU_SdsG=B4Z zIvOAAfHR%5UIn|>`xRGmPrg`vamBX^N6nOz`eSW0hT1FVmE+okSGb?>A5CVr|FE9}XKWIr=jE6zKrY3=g8s9@JNKEKB> zhwbgfa(ovOHvbc+?e)3U`1_`h&UD_Xc;>rP=P2wMok9~Jx7Cv4r8V-H|_tkv=xUw8JLxjS>?k??3esql}A&**)P z?pry_QJmzP`swXR_L(=O*Vg+G@6MdmZa=SGzHdzht5e}O=k+{m%)J+T0OzubT^(`d zJMtT^@YNT)*4)r8zk=;^j7bH%R_wm|*0^4CI#wO4)j5#*3hfmitZy^enl^)z4>Ou) zuC2UZzFDdEs?+!}=GHUw@QQn-Z@*%%oOg%sDEXPrD1VgWTCqC55xyM>%Wr&apX0rF zU*@g-xj6Ah=Snr*cU0$5`6(vG-x&J7r@5@s52z{j8#I5!qnxDg8E3Hi#>Y6MSS7nU z>Whs-<6~=A$Ft*^a$rR-VSTIMnR-=On|!FOJ(J`6B~CubN!YcC)AsAmu-^2Pclb}#YF3~QX#QD3Y-V$bMV8o#Vv9g~iU zIgt7X?eZ(w?@{bGy93_Yw-g`iVWnpJ=Y(S4$HqOY9+d+rZ&%wZ{#SfhT@xyP&TuMc zT+K0t;`Da-)+C(Pw!PlZc<;U=3CmA8IWs4!uMgU1^sl(qI2(tAjhpk7SWeQ>t`A~4 zqd3)pWY_1_*uKb~${1F#Yt>BtckQazu8vj5D&>GZL*gX6^+!Bf-=3N88zD|Hu{I`- zHB-&T`_HQBPG{`t-bXc$(y8oQsVB)F?W22D_Epop?uGT|Uf8&a)7zolH%Kg}@yi~@ zIE!auW&WgmUNIZGuXx2?Nz?PL_CftoY!8s;COJvp^Nz+uP5TY)6XWcQ6o*z?NKF1GH8<*1XeZ&u>8 zy*~3AfAMZH)HiX(&&1b$CLZ-!-;SzL6(8=!@w^Ee2k|K1wc_-?IIAX{);@#Xn0Q`e zE0!aclkPOxeIw4qqu-1ESJo!}iZkku`;KDYdU4Wm-_diqR_tEpSiSiW|#9IpYK~%c)OTOcyBpTe71;BR=9_C9Kj&;~4LK8=t5?L<`BCh7U7PA# zrEaJr_AS%ixIU{IEALJ$=S-{*6?~L$mA$UcIVx5wbXLUnsQRCJ31>8M;EPg1G> z#;TGVm7MhLcm{0Tj8En4t`)0O!LCiX;?F2Y-`rQbSdO`ua@E?B)~b^@N#8j!&6slR zwZwA7NpsY$ru%xXbavxoJjHUv>hFNl+4W8TJ)>Ao-H%2jJ_%A zSkn?;yWhS#jX&B&9=_j4a+3&?kKF`=woM-H* zmvC+sC;p?_jjd<2e@j??x_8$mjydex^hnq<8VBu_^U7C8EGOZ#m;9ue)*fX~`zGJy zSFm}Ta7D-57TZV7%#{_L3a8?OI`(y*YZR*^uIP9#=`O5YV%Jvo(l>Est$QV$d^?Jt zblU!Uj-Gkny}KQ7`WAMxTdQZV=Tb+z->mk;_q&$Uc-`Fk46#kQS2??DuZ}C{y%*=G z*dFy3B!ATR9rrC0%XtQz;$v+Wr~Z+z^} zWPQ669*wzow;N9Ryqn!`_9*Nb)zt3y==ZDLwT*jLJt_yx!%E1n81*=)X`Xjcd+HF2f{^+x3sl-8!an`;XSL&hXN;uUe`J>-p^Xv1hZ*&D$Vry>f zj8}gnqxyc!N8ySOX|Kv!IZ3DOk3G+t0|}4jfI5}6@*fFT&VDb>XqqHn!%ovtgPa?`79F{U1I1z4(3?=D&8a9M3EE?!)3ACGbZ2USeMc_==Ug2`fY!Vxz#*53Y!~AQ;sem=K}Zjof6B@2luUD*Cy;<;>6c( zoL!sja?I_-*M1b%e{m(A-gUxiiaon__Z`(#Ct>x)6@KDq_grH8v3t#`X$jHtS0{1W z{yej4<*v<{XTz2F$T2?Jcfk5KgIBx-$)Czz=`GvMp3b75si)E|KgCVEYsJ17+Ffhj zY8T6?;IvlzQP@}|?AedPX)o<*FY`pccCj3>9I>2AoW0XDS87k1>AZ=rUHuByXR(^e zAMNr-u{wTh&PNrTX3rUW+E<^&>FmZuIf(( z&%`;!N=<$6=ZV^%85d4nF_TE#T$Pue!&igG?uxs_%y~OT2iq)UNGv`YC zR`SOe4JUfC=0^(S$XzIJ^R%P|MU&SJ?QeR~FMOvIySH=es;^JE3~+c^sB=TVv! z9ryK{63bCD+2u6eb7s8Py_hps$0>%DbEUOcw^z=7)O(TkO8SYP?CPZVapnz8nxl4W zbp_iaReI4;PVynexnfV6o<*GamAw)tX(oHRNBN19?B=96@sr)PtFiI4zG*imM`88d zS1d;?$Jti9ewup;SAKS>rvB`J_02O{ALLZ9`B^!m@t0rOOOE?$7gsp)^~anM%SkcR zt`Em>c%?4xm$KU4G75hqPKqgYMfO5aoMtFg7Zg0129nF*&JTYFmTUKQUeccG5@`k;L^ z)}N#B>YPdX=JpI$Umfq)+NJ%d7<%t&x|cX{^wYURyELjebIPoiX^C4l+VywiK9MI=S#lEKrkDlG{;*qdc-i>obzjE*T z@JP7w#?73!l0R4Bm{+4Xa=`5~o+_UP{b0FpU3j5V#rT?Sx z@x5@ZcCnm<<%<(vyZj3FJ@x(7z5?r;`qpauVX-xTbUvNoyYIcQaS-c|_6j!UM`7=D zXPojd**%M#QLK)*5`VvUYnRymM=U2{^~L5=#m~eU)iFN$Gm6zoXHPzB_pa4U9QhTj zX2R}O!Rfrl&^)PNHNDeRi_%%HZui|3pLwoIUajVsOIN|>@M>&K{9gQiwI?iJ&DH+5 ze$T}-Ibg2thG)*T+uBNOeG4l5#5qbweKjk1=AEtRCyx92?x(t~-5zOXCY@QU538|f zpTYX6j&I@&_D;Qb?K|KZ-&`wB=NgTtI)2xwPF6T+t#)<975|gZX|1_uPKwi7eG}_L zTC3f)VmV^(TE6?rsbJTNU8~)F^-WH?Q~8zow8GIJ?^JAU*Uzit-Ogpstj6B^Rj}X1 znb`RF4T}9nJ*PWR|SFF`H{XY|@Sm}eD8EpQT!`hR+oHMcCi2GLjOdRcMisgvqh>hn8 zY~5C0AN2DmY##c(h~-rFm9LIi9nUM4V;tm|KchJ5tK(i`*Lrti&udI7GwCSDecj7? zE;gQ5!TK*=;lDYs8#WI|v3VjM)fwfx*O_?6&$PDk?VowZnZ42(XEb~5KJ)eJ`%U`E z{;0W;&U=(Sy+KFmAEo14Jo-kRHvj^iAv=q`k7X!cRKxTfy#? za7D-a5?AheH%{fei8FJSR6|DXsa7PN(X%A}s6E9h>6r6k^ERzbG4Z`i9PP$%)PL8i zsn7c3jOiIueUszbqp&`^m;R@iB)c(5oJX>I-WhC6W^~e8?>b>~HQ}^&glRiS<*v_o$9of5d89$Hac8u3drkN9=hU|HP}maQk!br8t-m z6?~LVWiNBGg8g19{M|VEpK$WI!uQ)0r?t;uPw||wKSSJhJEQltn{QY5$Jjm__U=4; z<^A%lbe235+ZTyFi}r+lFOI@#uTgu&A7{ohaq?~SjPlJZamp(>E3m$e;)*{>v$8gQ zrlxGA=lh#_fE9N4)z1nx4i)|=N8fzE#B$WvE?=D9we$`iW%vC} zn);^C6+D_J#>%y6FZl_lwaKnd;#BPFjAFmd%G%`5%-to;WY_1>{Fg7D`L5G@RIyj~ zP4|-guk5=sC*6CB!t{MkvYT(>#2>Zmo7h-s zPguTvpz}oqrx|mFz2c7?eejGaXN-v)*RICyt3RVS`8lfN_n5GnY2SO<^-Y}o@q6*x z)NUNKC#;S&VHB&A_VSE!Tsyk&Zv1q2p8a0f?^k>;e`fYI&u6fCIEu~N3Le!zimz`+ zX;yUH*SF7aL>)O|bsFz8zdXZTn4hEg8RE0^8AtDHHGg%iD*pRc`u^GvRIv3q;Z*1E z)w8XLe~P(hPdLSG)b1>qu$pqTSFmf-xl;a^Z)xocyZ$5}v?rW=OZIBUUH*tmaYmMBmicAMHo&yMs=OvuAJo=D+J|e9Y$+*gQN6r~E%k zzoMfL;>y}lPSV%zd#7FOzSd+pjeBnG9OxXVSuW(#@FKj%;o?R@*UeWhX?7Nw;e6f7(3CkBJzW(oqD|xHW-jP^N1-teroc8rz zysyMxZBOSl=M%OTiPdzi-@CQqDC}P1)%zah|EP{X_{fT>d_TBPF-;TnbeH0sWXD)k4-^AUpeu|Ty_5))1>dau{DK_Q_&+MBtN9`3K zR>ZBcuN=>1JxSk!9M>kSj^AvmEi-oY&)j#$=b5#hH{EHvm#f>&!!xmYHM*~B#onV> z&QVzX3a;#1(W!7MdnJzga;&ilySDN9b4tg&V}8^-cxEnHXO7xeP4Q9st9A6bf>-;K z^6IF4D`&LVO0!I|r?u%VOMRfdikhQXKgG$Pd)b{&XR!Vo+fi(+Qq1L4^yMebid`M| zO?EkF;&c{syMmLB-?H@~)sPi-_tl>jd)-UZGkO>1oAyV-mHga+WA0V3cPg%|t#H(= z;EHDARP+-kX^z?}bv60W_MWFY2hPcXnK!iW=$tzmjkC4dwaG4L23K-vM&GrbC1Lw6 zd$UpOTjo4f!J~WWvv^eJD1POPGxO=_KMz@dyq5|#CMmX~I%+2DUgE^pp8QcKagMUP z*J|vy?Dt;5mHLx7>gz+|U(xOv&5hM}x|{wE^J((I+^b;kw89_dsGsntW`&>js@T=9 z@MqqXivA;Uta~%(QYYaV{mR;V?OXA!Ij?7{bVsB1j_01UYUN(6=i5qA-E%cwHwUHMFy@Jq?5=IR?(SB^*4mq}`|g$l$!B{N zdnB=an(xk4uxHsB&&1RDw1O*psUzQfNO&~Pl{}Oqb}#J}ocz~5sxMz$@kfq6BrM#NNdyuH@~g=FWW2JBmG5 zTI;)z_}b+s&8yh2SjTqu`6~Cmv!C8?@>9+zPMU4sf1b4t`_^ms9`BVK`Xkn7u{~14 z_H4dESH$UzyV+-An`X}$P1l+a6`W#Q$wN6}HMLi8^0~4$ar7tQw6x&h-DxyFT+=_u4DP^Ira>eJgcXj(vr8_0!q4%OAz=YY(7r z3ELx8@XTEENNX#x8s&ILqif~Q#Mv3Pf-8I3w~S)XWqfwS`ZqFw)%dT&p-84TOVwY3d_e{=cok_lp>NNkS-v7?8{>*!oIHZ`j{q^suR${n<^9=D%aog?e zz6BNE>=~@{>ZG%4uk2Of`0ndl1=~A~V&A4`#-njNlV7gcEZGqFDFn`a-z#>chlixc0qqu6_?;G|z! zn>gNY1t%Tt6`jQKuEmMJn|;P-*Cy(+#VpEE5$$YlU*MY_TAUFQEY!z!OlC6iqq^idfrMrS8zuCoZnM(S za+GF8C*ALE_LL8!cJFr-kM4CQzjBsQf0Cwk#+t9b9I+hNroDEsA5~jgr#`EuSnZGx zSMedmaA$jp?NL4_{kFgSXCPav?Ilt@H-_oH5=Z+e)=&EueNNcEtAc&A&cx1%6}*FQ z6(1@wU%{#PCTE2Y70r~lN7*YroXPQAe#_ztC-Gfd!PXYB_04)EC)G*U&S3ZTEZ&#) z75L1(D*k)#_rm7D4EBCU@yxzwu085pNyoGJZYI9}3}M&Gujt6%0ngN#UOPXxu883d zc{S?8ia6X$vvT&GeXIC?MUHh_ocb}(nC?r?3ap>@Eve_R@2X&DnKQ9(D$mtC6DR*G-*SbM^po9sV!g7yX_ud{Yb!YE>vOszIV-UH z9;NR+iYxl^kHYC5cd)12*ul4o5BguhYF7Aie1p`npAq|Q%2!AIGqJvjD?Z3?yyr}M z)V);lVFl+X|994@#BB%vD}G*`V}154+U*~#^KxA4-Dy7xyRTS3#r9ei>^pTYT$v3= zIq58;I*Fh3XY7^xYR=1f)|mLsj$(BZRx@!bcE8y(vHrWS^~#ziw*JT;#p;OlEyYlu zkHTl}mFCULS<>23yD@M4!}q`c>!1JPnQ=(pOY$M{wYxUGS#tc=e6zHxe?O3PwJYrIE7rG!Q$MENH){n>Z|JC9 z-$vK2=2v`^GlRXm#;<2sd#!|1%oD$2pNW6^W{ z`nxdZGci%;*>I}u+E>Ix{eEY?_SDZGWluAs`iZlH-M++wirw>8_$xT(%$Ydl z+nGL`xmP-`cE2xuv+nseX-`=F3LdQ+&F>lZs2n&mKi%sn{~t+bCO(z56^`+g|7_T| zz@9<-Q87_d?7sGI6`bCt)%G;6rF|3sUUuL58Jzq#4vCZOt`%4E;VK-@wF0NuCVRyP zd&q>1zu)yyIL#>)ee0O@KVfTBImk8)q%G69J*T$n70Y<=JT`plkTNruf!_pxHfUFZnyp?Tsfm_ z6JL(lz9sc?_SJHY0;0_1?*zbdo*kB)d9^v%;R{6!%J;qwMZ=6gHltIOW)x_EDeZrx+e} zU+Sd2wCmgGeCM}6gDd-5a}ri(=3GbR(o9U!+BDN8zV^!6#M#-N@?o{zH&MKL-`(^* zyEyqNM=W1^1*cxI?LEJA4s;I8>(4jm!82% zKiMmL&8)5HS2)fi_reuF<;?i0jyT;##h&tW#$MT1j%N|i#HzB^y%N?>XFzd^m33eg ztDk&OGx0r_9I^gu7t1*ld&Y#*{5Z;2XJ)NBXJX%=9k6fZ4*uNB2jk#3mA>myKh+nf zUa{>xvvdx04$S0$b*AyldGn~4RNjJ_z0|koNj;u#)+n|Y9mS)2&G1Kko8edHl+~Q% z|GoB2{#5QXQ}Hn+kc8H@sVS#5Uc6FVmab;7CHKmu>6G6+N12o zWCoAUk7=)pPFkzIqBF|z4cYJI_|$FYjwK{_6WSrC!drX$7{AU7?>e-FG!!G1pv0)7VygmY?oUyLqd9HP+7^ zaOJ%AmSSUA!LAiod`O(izH;2Rf?Zp|*2W!hniKUcakR^?VAqP%S~(T$dvqrD-8^&O zN8KxZgT`5G57W43kj{b5fqUhEb?GYDSgr86qMtbFjhpc^Y1)URzAp8gSFx{{FPz2H z*WUPNUw!K*fBMyE9E_*s}R{bdtTIDaU%a z8?MZQ6;9<`>WuPTJBrggHDj;5n=|@XTthrRP*Y5@9wCx7|(=LuhRCOUpfam2hPlaRHIhgk2+)WGwCP(3VV7}l5feLd`tSi zYxZ&p+oP_)_QqGi_VA70Jh!Ght;B6~ZQ{@5ZTc>bvXA=azLoi|!bv`)c&a&CPxN1` zX2SAkus)CC%DlEhv$AjE=uhIDX-{v{s6D-X+DA1XiJ#(NK6qaFqd4^^ZSR?-bD(oz zGzTj6CuvsJj&fG-rT(aI6~6l7%Gyzm`W2k?eVcr?xklscxhnNUe!^*1P4=WyvFr0ucy#Vd`;O{V`0iEVAI0(A zS%K4gSF!7leC=1n-d*zFZ_01qTH)GCd@B7(b9#R19OxW4GY70)GdTIIX5wgQ`RrHOUK3fxf zr{sw3LmKyN(mBvMaP=IpHtu{D{Y<#x|LEGpPxcufd~3w^HmMJ^cTL#$E^)NWzdH7P zZ~W1Ie|U8cn0sg9^i3tZ-{UAwn$Cdf>?!{8lRs(SQM-O7JgS*|KGVK>X52yFH)S34O~F_U$_gS7yMY_L|YD_}QG7^QR>$7eGp5+epV?O*5_YeI(^~EN>0GA$Oso$(i_5&(>G-ukW<;q9;5M_d%})S$ES0kbKu!>AiYzS zIJnmLNNg`>ALzR_itT})0o(s4oZ^u9ZGZC&o8qZ`G;i<4_q(fLzge+swcD2(A9KvJ zCml7#iLX6jeM>m4)viCzkJ^vI>hFfF?azRH;}Sk94oP48QG3nk*c+(hH}1D4$Fn4? ze&g=RI|n)kItQL72YeUOy~`0NzIORy-zl+uop0PIwl{XI_D90@{|Tq_CVt!J=hhVS z(VUdO19o0ZIQg0KO1^cVg7qQs<%sQ{#d0b*?K^58okOjk;!&L$zWbhuD{snbfAk^Y zqkKsEGxno=^V_lR`CTV0U!8O=dyK}<)35ej_g!}mbPiND&)W4<`)*i2Q=aIv{i=1qc}n{XwziDo znSEXBxgHfCH4~}hJEDCDtZ(AgzPZ;?c+_Y2O>6BF5=Whc)oI*)Z0A7dK<7Z`K+1vi zj%atS_6qhbv!ArTJqp`bug0lwU$Jl6>ly4T;(0I4qw?H&&~K`OlMj`cm~Zmc)HiXO za_IUP?zHt?7&-_T(xj^h0wLdEMypMz{xjoA9JF4KM zKblMG*q4g^-kqVeufUZ!9JR0KdQ@x;e^i{_vShzk9FjjP?4D75YqA{e_6gPsb;R-; zcfZ;>&^gdK@H{y%^A@-^VRI>Qe9KaQXm9DemauQ)ZdjjZd`q*#jHYXozIORn#NI{1 zXPzthaFpHesDhmb<`I3c=hvQa z;v18+cE+CeozZ-@wcgQcoW7%q-QH5H&*|>u`&}nondw}c_;M=PI3)h)UWxxmcI&p- zny>wluxG5`GtXY}XEn$3S_j1XknD2A-Me=0+BwiU&^gdKFp~qmDWljo&c4xp(mwep zocisge-uCII1h>wKiTzPorIIlquPznnP+t0GqK;%4EEc!&rD~L@4S}maz?S5EAXg4 zSLa)k8~^bA@BjMeznJ1sdGFHN750ihXL76$?(5mLkK&oWrPp@f+d0rV&^gdKU=H{O zX&1}!Ewjh2^vS-DJK!^CqRL**trh+waZ)~fzcfB z-AQZZq<7FhFuifUiAUk|=2rAwD}Ltr(Kzgez0(!GslNjIT~y{%IeuS9;WU3G{luTK zr@dzE`ZKEI+8uDJw{5@g-0GVsKI&f7T!DA+GxZy7?>@G3pmU&epmX4;9Pkab4;R~S zi{-4C3uZJ&=b)L{c4qCUpT=Z#t^DM(cCl+$WA{yX)Cc1>gUxxd-$k0OMte)=tfZ-3 z{=KmNjN;_8I*D_p-FqC}*R=^-lN0A&cF%h+A6D;sX8hf26dMQET9+y~>8Lr1kLpia zr+eMbfzE->fzAPQ!1u`a%RXG3-ocq!V8z^YMqdM{vUXe>F=bfkg zb}HEKPV8D|1osll*$wMw1@Gqn3V*!cgi}5w{-|Aj@u<$d`1)MIqkbmMQJqnK+E=@p z+Qq3}RqW~Wj~up`L9o zYuCNb?p>dWNAvbf-)8ozoNGqkwP`Oo;>2HJcVBB-s(ae4pUJn>S0w(ZJ?Xc-d)m%{ z&VkN>&Vfn}`0n^7RUc}+a3BY#D#)UROAQo$8XIi4}u%`x-S zd^YD-WB0w+4E1dLdhho-yZ3%CJeu3d&!m(1E9}V!?JM?8n(n(A>w|k~x9({dyEfs` zo+0TZdquxF-Me-UbPjY5bPiNVSg$VoVTFZY_Edf#_n{mL)=;(IIN;9aY)eH5Elqif}>^K95StiWf+Q~%x9x|gsu zQ;wSARQD=&eXHP#W^=lC?HuSF=p5)AsN_I;cYNb2cxJZs&Ake)%wKY@a;_OaJ?|(^ z`=%Z&(^;~C%5T5DtC zXqRs-6<7L!QI0-T@Th+CyN~T0=p5)A=p3lzKzf5x50Ls*=TkY_eRCV{KdX92m04B3 z*q+MVsLU5B4=eVHesk(SKlSbszIr?>c{R#OHFkwv-&W}Ftm)ZT;L)=uAJnm~S|?qr zJ=Ik?m3RLrj%N`crQbT;$94{M4s;H54x}9L-SOQ_IQ6dDom<7ezl~qcu=XJ{c!${P zzd2x@BwU$;Qhrv}Hs|%+`baVKEZ%R$E~kQ1&D7rb*WUlq*S_`MnQ^Gx-BFx$uB7k# zD<{=z>!*9UR;>P+Sl<#p)1Tg}d)>}~&VkN>$IgND*7znSoaPSalu?}C@hjTxJ;b9i zsqobokH*clm3x<8!6|2svOBXhe))6Nbf+`1QgcS9vev!sg;ULJ`}wo#Xv~kwnaaM_ zL-*BQsn7D&5%18arI_sCTl?_XeQe)v-*4x@bLK#LceMLfChQDSnYrZnM$ce1#Yt1n zC{}ZHt$gE_uzayTRC=Mr@lL&Wu^fF6C;w;cmAR%lFK1O_;@xS#3fBL7VZViEz{dIN z=k+WzxDp5Ttz$wnpaQ2xq zS{p}ks?W)v?#CXxAM5+=`|TX)9OxYQXgQGHP3@`ANp|NKXQC@&&ysLDSK@0ohU(bo zh|{bpM@@01*U|_5OtX)i6*%pCMZ0&Aa5`7wCwtNvwW~j~R-GNN^{w&#zYn~_9a-P3 zrRH<8%cgO`9BXL>C(V2H05kh~mKmL1+dXjSK<7Z`K`CB&pV3MwC73l=23R{^6dJPaGF^v_N1x3qH`5a%7=>oY3-#Q_)NubrMc%+x~cStG@$dE!A$VmXq>f^u2C=_jsKHodcZ%odcZ%Z_a`A<|cdU z@w7X$RAwkSVs#RhFSf7HE>4>1ETepVu;&@Y_DR_D43+G1#51$1YtvF>=`kCxrS>!ZIdd=1=(}IR&R?T*t9*6D6(1@bXUWt%Ig^fJHQlRn zM$daDc2?RMd%wv~IpUezPCBES`mAQM%UO**OXHqfSLcB5nz?QLbe^@A%CBJeYTW%~ z=RoH`=fM6sF!KgI!~Is`lj7jo#JQr~bBQZ`LYldp-4b?fWv|3ZKHLAK9%*z|m2a=5 zzWaK{9k6rL&e*%wPwirJKrE+%U7K)4XE#ndOWS*H-7N>KpQ)}UpRf4-w$JW=-Dg$qvGRUM`_OJ=ugV4nOQ7pCcFM5?Ap}-IBzD@I6>FUVuY$ePge&=w)@naWN6mZTbe6XFta@e+q&G+({6?(X)>!SX6{o%0er(U# z@$7hZ4s;I89^waXXFnZar{?%DGyIpEu5{#!Gx zw{kpVvdeL=#@$zU4s;H54(yo&)^oA-yn-uh&4G%hoTRVjnONVB!e{z_uf2?wce(<* zSHfvu=f~6|*)Pcv%Sm&q9M|f@>bccfFYP5~XPoZT97vo|yP6fOeubYn>Li@jw!P=p zopZpqDb>T|zu$tKWS8TZM8CJV%^+Df`!fEzQ`iXxpd%DMDKPqQt zbdFlP;*3Z6);c{G&*VVm{Yv_2ZQ^TBYuo;ueRAJ>-+Sl4J~?2mJ__4M+4rX2TmDf# zsFU(djyUn#{xWZkTLq^WR@ScIn0pDEx6YDBVQ1BQ&9L{HH)r-u_m%7`@~1U>F6$gP zCkJNU4r@Z?zS3T8f7t_cOgbi=1DykB=0K%}AH{Ko6(6O4X55b2E1mr){d?)8bM0Wa zhpFJ1xi#r0O=nnfnvvD1{JmhmJMql?xO#1hVa2{fzO@hM%rzb7mvOfKUok$(|B5|v zDsgaaDw)pu>e&Zh~lo;@r2l~|2(D*2;kh2NZ)^HIlS&zMwd{#EWSoyEFmZA^de zCqJD%?bY@@d)K~~zL(B{=gfgr!$a+?4H+tNvuxtUyi<2^xaE-!s?4FbL9-jGp@!d&dIJniPQEy=d!++H{Z+XJGfgs zlmGf@4b<*h?G^0W#xHw`j!DO)bD(ozw;ZU{_M`6cI+g|^UjIDk9QCR(i(_YR~ zX>GD6&5Au~YFEeE(B4VAe09uK?PAyZJHYDCVB?(dRc2LVWegj?d9LaBJa&AnGYOC8 zz)?DtecdbZt-W$wJ6a!H+qm9WbgVj7odcZ%_sRk5|7gv3ZNm3DSMU4LzNyMRCQij} zjya2Iujt5etvGSCSFoD;ES95YB@gARw1HZZO68ApmSh{9PnN6ebGMZ=jdAb6+G(CGxIC)Jc?uf zq!~)iQTwV>xoi3QQ^BsC!S3aZY23tVZcTRAs(;iB>)Aa^1-rI!&#fzRAk~4pVeA5SOfVmV^<8+R|=InX)KIq*C=;5(Aumy{1_tvX`)qqw4z{2aCG z+vwV>^F8}0_KuvJ#LiF^eKqAD6=yZw>r8A+#KujWW>xL-#p=(T(YT3|rkut-tFF$0 zqv}KJe6(K3`?V$*&t#V)R#SW9k9J2Lw~kxqKZIdHEW@GbDY&@LYJ)3rO}%Gp=@uMY{Q8AN+p zt6jd>Ggj_8@wJPcmE3n`&hlJh_th>={^;9L*u6%vK8w{!epX_urg3Y0-MKY=zt3=| z>FjMkr`NKcq?lWm%t`s$#c~>-bEh5Wj&tWg=fG|`;9KJxA=YQ@E3p1l@CqN)^z19J zdx_K8)0{G6ci)*asw4I+`e_d%mXolvoB9>(@5-vP0$2P=`&QPb_!v*I{G{*QHGYg4 z_L=W-rl$4UV|zAhQK~=M&D*|x8xIbwa*H~Sf}oP?eG)URM?Sh1R;xU#RDq%SAMP>%62hGIGHt4_lD z(0HGD)^AYUcl7#>j7j5j`ZROTm|K4;*jl7c<8$t@a_lnOB`x=MF>w2(s*T!6qHK&5rX}stK`7Un^Jjq z)E~ta{Ta@vKcoCg4vcD!@{P~v+T{PJj(q)bhDunz^Ql=mD9)~c_L_A{|QRPdR;?XXuRCXdQ7{yUt}e^0CR#~LNJF74od z`_TP-=RoH`=RoJc>KyRx9>u+EHBT1MLaZ zyq|nK)1LC}>h_~zI1`7Xe7K6vOsuZ5wsIG%&ysv_U+a%{|2f0j6JJi_?jbt|ItMxj zItQLP2h#idsP;4;dEQDs$REYYhh$Isqx?~wq^~_`R_yAG;?cQP{fcihoJ#&Q=f3aG z%>C}X_EGa{H0C?R!8ug_EA}1yZy)YkqdNW_|IUHVfzE;RbHMldDC|AXXpYV@NA0W6 z$%kZj?F#I^6+GiZMPJV7tSVof8J}HiJ~TeRwycP`_j^UWA}06JoQeNxpY<*6Wz9+0 z8CFixZ2M!>nZC!q$IgMyfzE;J=72rGnb6I_Jrj>15R?Q7n?O_r=%D0sBN9m91B!9H4X?&bL6LxNuqmFxt-B&E9@yi-w zti;a{E6@9Ec=Ucp<1?y1${+P7@kjTSuckH1+U3t)<*3v6WnJo+bWA!2ItMxjItLy# z2kakKV|$N;kMbei*HQX2Iu+lHkG)(4yH-Cd`zB7?U)DflD}J_EdG=?(>3*N#?4xH) zvC?k6^3UJ=9b@aBYa73;OC6JrN#{W4K<7Z`z%%5)Xiu`5Z$Bfh>|437ip~m-zNzmS z?bGb#w98jV{l;Cp&ddSxu<@_G|D~^e>%C`-gZXBSvW|(ZX|8SDwX1WWbD(pebD(pe zbD)v~JM>!iJmQLPJD*YCJd0PFvb-)ZMS=RoH`=fH{_xJoZtIr|Q08J$(-SI*d+t^=!cV2AIheb|3SuH>QjnD}zU ziQo3Fft>@L1Dyk%1Dyk%1NIDJXRCzeufUc39Njl*CY^NlWcTN)iIaS2dw-8d2VUby0?oEbmusgA<> zqo0lY8$2op%(2EjW3I>n>!JE7hZEnm2`A0Acg^e^=p5)A=p5)A=o}c$fz)ptW!Imi zDW`&yj{VgPPWlz!n)4XnpgC~now{%1o?DN~0qbGX^zXEaE5CD+G|&8YdauW*y?u{; zkDUXZ1Dyk%1C<;|y~n7%vezgl`Cvbma9XQ<)Su?}H+57Fn1_vfR$ZL~)=B46?fRg- z!guXa-$?6pz3m+69OxYA9OxYA9H``geMkjYG!v(yKgvmawY~HIUO6zD!_Dt`b|wcZ zv!^qududn4pTo)*-|PG8eY>`I4s;H54s;H54s;Hz&H;O#3SR9`>vzr{l>?Q0ZqA$M zQ|Bh}QE^i<;iLAtmyYwM*z@X}oP_0zkNS36r|WR%K<7Z`K<7Z`Keul)Sf`84shr*oz6rR`lyI|n)kItMxj zItMxjcFTd(&s6NYou&Qh?kSp zKBVuZ?OjVd2Ra8j2Ra8j2Ra9K$N_tp)c+*AYsEX9t9^K$@5|h4{PJg}>HAIgj^WD~ z?iLegQn5dK9rd|u=JV9dzU#j0&VkN>&VkN>tK@+FOzK@Lc6G#8i9`E&-EY=>y9%y+ zQx(q4c~|St_||J*&&%FXiisTSn09f}(XLM8>(<7;yS}^5fzE->fzE+P$^m;7dz%V& zt@x4R(`VWLdpGxXz+SZVci*~w^>@B?``+L7*6qvx;9Ixv{!?$=KKHM@b^GSO_tx#*|N5=l z*MIod?FT>p_U$Ww^V_!%{_eMLU--GVZ{PlB-@bkJUw`}djsNKF+mHVHw{Ktlf8M@* z@3*~k`|=mwxqbKVd*}AKuf22o=0E?=?cG1~&h6{}$vd|n{NSD2S3dEv+XuhnW4AB- zzK`9${SSQX_St{(W4CYo%OAV_=->S?3;wH*-M;sKeC+n+AN%<2yMN=yZ=d@EAHRL` zANlz0-9P#9+t>f}$8SIQ)sNr4^51>@_QC)C@!J`u6UpKXd!~ s@A}N`2Y>r#ZeRI_K6CrvpZ?743*Y+8?c4wUXKtVU-iKetU;5Ag2Sv%<3;+NC From ca9e72784ce924837560955404c79961b0af9988 Mon Sep 17 00:00:00 2001 From: Sayan-Chaudhuri <47924148+Sayan-Chaudhuri@users.noreply.github.com> Date: Mon, 29 Mar 2021 01:19:44 +0530 Subject: [PATCH 4/8] .cpp file to be changed into .h for review --- example/KMeans.cpp | 148 --------------------------------------------- 1 file changed, 148 deletions(-) delete mode 100644 example/KMeans.cpp diff --git a/example/KMeans.cpp b/example/KMeans.cpp deleted file mode 100644 index 21d3029e59..0000000000 --- a/example/KMeans.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//kindly input the file name of the image as a command line argument.Input image type should be jpg/jpeg - -#include -#include -#include -#include -#include - -#include - -struct node -{ - float x; - float y; - float z; - int cl; -}; -struct node2 -{ - float x; - float y; - float z; - int c; -}; - -float calculate_distance(struct node i,struct node2 j) -{ - float squared_distance=(std::max(j.x,i.x)-std::min(j.x,i.x))*(std::max(j.x,i.x)-std::min(j.x,i.x))+(std::max(j.y,i.y)-std::min(j.y,i.y))*(std::max(j.y,i.y)-std::min(j.y,i.y))+(std::max(j.z,i.z)-std::min(j.z,i.z))*(std::max(j.z,i.z)-std::min(j.z,i.z)); - return sqrt(squared_distance); -} -//we are trying to find out which of the given centroids is closest for each datapoint -std::vector findClosestCentroids(std::vector&datapoints,std::vector¢roids) -{ - std::vectorassigned_centroid; - for(auto u:datapoints) - { - std::vectordistance; - for(auto j:centroids) - { - distance.push_back(calculate_distance(u,j)); - } - assigned_centroid.push_back(std::min_element(distance.begin(),distance.end())-distance.begin()); - - } - return assigned_centroid; -} -//recalculating the centroids to fine tune the clustering -std::vector calc_centroids(std::vector&getcentroids,std::vector&datapoints,int k) -{ - std::vectornew_centroids(k,{0,0,0,0}); - for(int i=0;i>iterations; - std::cout<<"\nEnter the value of K"; - std::cin>>k; - int data_length=h*w; - std::vectordatapoints; - //converting the rgb image into a set of datapoints each having three dimensions red channel,blue channel,green channel - for(int i=0;icentroids; - for(int i=0;igetcentroids; - //the stopping criterion for KMeans here is the number of iterations - for(int i=0;i Date: Mon, 29 Mar 2021 01:42:52 +0545 Subject: [PATCH 5/8] Added KMeans Clustering functionality for Boost Turned the example file into a usable functionality(.hpp) for KMeans Clustering as suggested by lPranam and added it to the image_processing folder of boost. --- include/boost/gil/image_processing/KMeans.hpp | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 include/boost/gil/image_processing/KMeans.hpp diff --git a/include/boost/gil/image_processing/KMeans.hpp b/include/boost/gil/image_processing/KMeans.hpp new file mode 100644 index 0000000000..b0baaa350c --- /dev/null +++ b/include/boost/gil/image_processing/KMeans.hpp @@ -0,0 +1,167 @@ +#ifndef BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP +#define BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP +//#include +#include +#include +#include +#include + +#include + +namespace boost{ namespace gil { + + + + + typedef struct node + { + + std::vectorv; + int cl; + }node; + + typedef struct node2 + { + + std::vectorv; + int c; + }node2; + + //calculating distance between a data point and a centroid + float calculate_distance(node i,node2 j) + { + float squared_distance=0; + for(int k=0;k findClosestCentroids(std::vector&datapoints,std::vector¢roids) + { + std::vectorassigned_centroid; + for(auto u:datapoints) + { + std::vectordistance; + for(auto j:centroids) + { + distance.push_back(calculate_distance(u,j)); + } + assigned_centroid.push_back(std::min_element(distance.begin(),distance.end())-distance.begin()); + + } + return assigned_centroid; + } + //recalculating the centroids to fine tune the clustering + std::vector calc_centroids(std::vector&getcentroids,std::vector&datapoints,int k) + { + std::vectornew_centroids(k); + for(int i=0;i + void kmeans(SrcView & src,DstView & dst,int iterations,int centroid_count) + { + + int h=src.height(); + int w=src.width(); + int counter=0; + + int data_length=h*w; + std::vectordatapoints(h*w); + int array_size=sizeof(src(0,0))/sizeof(src(0,0)[0]); + //converting the rgb image into a set of datapoints each having three dimensions red channel,blue channel,green channel + for(int i=0;icentroids(centroid_count); + srand(time(0)); + for(int i=0;igetcentroids; + //the stopping criterion for KMeans here is the number of iterations + for(int i=0;i Date: Thu, 1 Apr 2021 13:38:41 +0545 Subject: [PATCH 6/8] Delete KMeans.hpp --- include/boost/gil/image_processing/KMeans.hpp | 167 ------------------ 1 file changed, 167 deletions(-) delete mode 100644 include/boost/gil/image_processing/KMeans.hpp diff --git a/include/boost/gil/image_processing/KMeans.hpp b/include/boost/gil/image_processing/KMeans.hpp deleted file mode 100644 index b0baaa350c..0000000000 --- a/include/boost/gil/image_processing/KMeans.hpp +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP -#define BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP -//#include -#include -#include -#include -#include - -#include - -namespace boost{ namespace gil { - - - - - typedef struct node - { - - std::vectorv; - int cl; - }node; - - typedef struct node2 - { - - std::vectorv; - int c; - }node2; - - //calculating distance between a data point and a centroid - float calculate_distance(node i,node2 j) - { - float squared_distance=0; - for(int k=0;k findClosestCentroids(std::vector&datapoints,std::vector¢roids) - { - std::vectorassigned_centroid; - for(auto u:datapoints) - { - std::vectordistance; - for(auto j:centroids) - { - distance.push_back(calculate_distance(u,j)); - } - assigned_centroid.push_back(std::min_element(distance.begin(),distance.end())-distance.begin()); - - } - return assigned_centroid; - } - //recalculating the centroids to fine tune the clustering - std::vector calc_centroids(std::vector&getcentroids,std::vector&datapoints,int k) - { - std::vectornew_centroids(k); - for(int i=0;i - void kmeans(SrcView & src,DstView & dst,int iterations,int centroid_count) - { - - int h=src.height(); - int w=src.width(); - int counter=0; - - int data_length=h*w; - std::vectordatapoints(h*w); - int array_size=sizeof(src(0,0))/sizeof(src(0,0)[0]); - //converting the rgb image into a set of datapoints each having three dimensions red channel,blue channel,green channel - for(int i=0;icentroids(centroid_count); - srand(time(0)); - for(int i=0;igetcentroids; - //the stopping criterion for KMeans here is the number of iterations - for(int i=0;i Date: Thu, 1 Apr 2021 13:42:41 +0545 Subject: [PATCH 7/8] Change in function parameters,namespace --- include/boost/gil/image_processing/Kmeans.hpp | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 include/boost/gil/image_processing/Kmeans.hpp diff --git a/include/boost/gil/image_processing/Kmeans.hpp b/include/boost/gil/image_processing/Kmeans.hpp new file mode 100644 index 0000000000..1b1516dd78 --- /dev/null +++ b/include/boost/gil/image_processing/Kmeans.hpp @@ -0,0 +1,141 @@ +#ifndef BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP +#define BOOST_GIL_IMAGE_PROCESSING_KMEANS_HPP +//#include + +#include +#include +#include +#include + +#include + +namespace boost{ namespace gil { + + + + + + + //calculating euclidean distance between a two data points + float calculate_distance(std::vector&i,std::vector& j) + { + float squared_distance=0; + for(int k=0;k> calc_centroids(std::vector&getcentroids,std::vector>&datapoints,int k) + { + std::vector>new_centroids(k); + std::vectorcluster_size(k,0); + for(int i=0;i>&datapoints,std::vector>¢roids,std::vector&labels,int iterations,std::vector&euclidean_dist) + { + for(int j=0;jdistance; + if(iterations>0) + { + //checking if the distance from the previously assigned cluster centroid is more than the newly generated cluster centroid + if(calculate_distance(datapoints[j],centroids[labels[j]])<=euclidean_dist[j]) + { + continue; + } + } + for(auto u:centroids) + { + //calculating euclidean distance to find out the nearest centroid + distance.push_back(calculate_distance(datapoints[j],u)); + } + labels[j]=(std::min_element(distance.begin(),distance.end())-distance.begin()); + euclidean_dist[j]=distance[labels[j]]; + } + + } +}//detail namespace + void kmeans(std::vector>&src,std::vector&labels,std::vector>¢roids,int iterations,int centroid_count) + { + + + BOOST_ASSERT_MSG(centroids.size()>2,"number of clusters must be greater than 2"); + BOOST_ASSERT_MSG(src.size()>2,"number of samples should be atleast 2"); + int data_length=src.size(); + std::vector>datapoints(data_length); + int n_features=src[0].size(); + + for(int i=0;ieuclidean_dist(data_length); + + labels.resize(data_length); + //the stopping criterion for KMeans here is the number of iterations + for(int i=0;i Date: Thu, 1 Apr 2021 13:46:05 +0545 Subject: [PATCH 8/8] Added test file as suggested --- test/core/image_processing/Kmeans_test.cpp | 646 +++++++++++++++++++++ 1 file changed, 646 insertions(+) create mode 100644 test/core/image_processing/Kmeans_test.cpp diff --git a/test/core/image_processing/Kmeans_test.cpp b/test/core/image_processing/Kmeans_test.cpp new file mode 100644 index 0000000000..381c9307cb --- /dev/null +++ b/test/core/image_processing/Kmeans_test.cpp @@ -0,0 +1,646 @@ +#include +#include +#include +#include +#include +struct node +{ + std::vectorv; + int cl=-1; +}; +struct node2 +{ + std::vectorv; + int c; +}; + +bool sortbykey(const struct node &a,const struct node &b) +{ + return a.cl>&src,std::vector>¢roids,std::vector&labels) +{ + + float distance_matrix[src.size()][src.size()]; + for(int i=0;i>sample_sil_score(src.size(),{0.0f,0.0f}); + int points_in_cluster[centroids.size()]={0}; + float distance_to_points_in_cluster[centroids.size()]; + memset(distance_to_points_in_cluster,0,sizeof(distance_to_points_in_cluster)); + for(int i=0;i1) + { + silhoutte_coefficient=sample_sil_score[i].first datapoints={{ { -0.6907989735015041 , -1.3912305298583527 , 1.496994223371903 } } , +{ { -0.6822914702668513 , -1.580632090018075 , 1.6495487112669291 } } , +{ { -0.49848080744136103 , -1.4416344598042115 , 1.7135340126451841 } } , +{ { -0.51372260524311 , -1.4858886588129374 , 1.6659145098379182 } } , +{ { -0.9111124472109686 , -1.6698203525510975 , 1.5879749706140402 } } , +{ { -0.6582517875123519 , -1.694614825779501 , 1.607566831207036 } } , +{ { -0.49939958419991537 , -1.470938196931092 , 1.6496914759404633 } } , +{ { -0.6529158851737891 , -1.655980225134066 , 1.7593238352072271 } } , +{ { -0.6358987010850634 , -1.5599730992945577 , 1.7369942880651768 } } , +{ { -0.6473228057610234 , -1.6649939684250568 , 1.6324243181372746 } } , +{ { -0.5804078891437018 , -1.524336039293675 , 1.7376922890800186 } } , +{ { -0.5453756554712076 , -1.407743642519552 , 1.5041003015991252 } } , +{ { -0.5827618362786728 , -1.1609262801933955 , 1.4802697746463906 } } , +{ { -0.5754134791278148 , -1.6542237519593004 , 1.8765997425061676 } } , +{ { -0.3256428451551792 , -1.3008299237025036 , 1.6283279462711437 } } , +{ { -0.6468035985245514 , -1.9498130217403298 , 1.713153131024956 } } , +{ { -0.4722296872050008 , -1.4426811297479663 , 1.7333443324146758 } } , +{ { -0.6205609376353236 , -1.5610234349601617 , 1.4963000677192126 } } , +{ { -0.9640017032178767 , -1.687828154485815 , 1.4816563846220674 } } , +{ { -0.5657546772119829 , -1.484603752568926 , 1.7070914185408013 } } , +{ { -0.5455199312796575 , -1.5566198933946023 , 1.6536699625041742 } } , +{ { -0.725639522645633 , -1.478816001645669 , 1.683210678738679 } } , +{ { -0.6829456604920304 , -1.7124328649608944 , 1.773086009779932 } } , +{ { -0.6868847395751762 , -1.4920696131985507 , 1.62054396505344 } } , +{ { -0.791451447640304 , -1.434012864766713 , 1.7008758135215454 } } , +{ { -0.6939460981984722 , -1.4277189617376127 , 1.5857765862374058 } } , +{ { -0.6102913748237806 , -1.4707299701283791 , 1.6155885837348731 } } , +{ { -0.6219279310089314 , -1.501092256703539 , 1.6695856515768952 } } , +{ { -0.8704873763543851 , -1.4432606869978217 , 1.519300251244178 } } , +{ { -0.503342546361977 , -1.6764163917926365 , 1.6125776719464597 } } , +{ { -0.7483531232243098 , -1.3881313650607756 , 1.3917474745571934 } } , +{ { -0.6122292330677367 , -1.623563406917556 , 1.6119696058210689 } } , +{ { -0.8625906119749935 , -1.5851094360796756 , 1.6271410253474157 } } , +{ { -0.5906423724017094 , -1.4685882922297406 , 1.774594663254591 } } , +{ { -0.5724749233898091 , -1.4198303602705042 , 1.6318256959344462 } } , +{ { -0.792182623733571 , -1.3726542539637177 , 1.6296040204655255 } } , +{ { -0.8442364752215499 , -1.6338472252771943 , 1.5696646264614398 } } , +{ { -0.7107634542029563 , -1.1640497383189576 , 1.625380547623516 } } , +{ { -0.5011649170685535 , -1.4681574680370277 , 1.5774877815213535 } } , +{ { -0.8495201363132633 , -1.5460594829155985 , 1.620569909650202 } } , +{ { -0.5859707635134661 , -1.4640385222999055 , 1.5224868642368097 } } , +{ { -0.5544914442419311 , -1.1615862060653928 , 1.550141525974418 } } , +{ { -0.43848339420610866 , -1.6548624742013327 , 1.5453174086572323 } } , +{ { -0.6730183300656118 , -1.5767195114519736 , 1.7818433441986044 } } , +{ { -0.5968273212964059 , -1.6671336261921752 , 1.73794010711285 } } , +{ { -0.5610447669626074 , -1.7701075189656004 , 1.7313267110919002 } } , +{ { -0.8050433581078491 , -1.3976023205845727 , 1.5321257786394193 } } , +{ { -0.5464664399485472 , -1.4320022804119064 , 1.6393456275111715 } } , +{ { -0.6496517806257909 , -1.4254195537332028 , 1.779938731303612 } } , +{ { -0.5661263723304617 , -1.6231572620117387 , 1.8501790069428086 } } , +{ { -0.8223344422801362 , -1.3129991981883002 , 1.769833884690926 } } , +{ { -0.8421927823180034 , -1.818837488058807 , 1.6343647012980773 } } , +{ { -0.6185502514282137 , -1.4630355594846265 , 1.6223261315812922 } } , +{ { -0.6231295468056002 , -1.7638414732196288 , 1.4592536087592474 } } , +{ { -0.7820696529927036 , -1.5014080409572172 , 1.754293777228446 } } , +{ { -0.8085146012159511 , -1.619078438639391 , 1.680002557974275 } } , +{ { -0.6326793817442772 , -1.5603745019725042 , 1.5951923230387164 } } , +{ { -0.7973480807532063 , -1.704338189649221 , 1.6852920022628357 } } , +{ { -0.4465665271955334 , -1.3484171253874822 , 1.6128721399043457 } } , +{ { -0.7336902671520974 , -1.2305820525797608 , 1.651012589789795 } } , +{ { -0.7145982060526467 , -1.4166855532141118 , 1.4809923447558022 } } , +{ { -0.5793994355892439 , -1.6784907655078407 , 1.5663138911468022 } } , +{ { -0.8333685665657228 , -1.4044408498177074 , 1.7148924615998364 } } , +{ { -0.42783524279049095 , -1.2720696571095211 , 1.6763125231708846 } } , +{ { -0.7311169544493497 , -1.649213209631377 , 1.683353113168669 } } , +{ { -0.6209826539918689 , -1.4076318492830548 , 1.442295447982632 } } , +{ { -0.5221616096298309 , -1.5455090416117998 , 1.5283184923464548 } } , +{ { -0.6960734960086988 , -1.6546640747106844 , 1.6705378681361838 } } , +{ { -0.7963313835370706 , -1.5657025008942664 , 1.5273463532006937 } } , +{ { -0.6307797332237752 , -1.7401271585768838 , 1.6744221999916828 } } , +{ { -0.8378471532385607 , -1.7124354087771099 , 1.7458966967249614 } } , +{ { -0.6199697999239057 , -1.4749743018455932 , 1.5716113481321623 } } , +{ { -0.7374207369398263 , -1.3465588968518083 , 1.7453779248866474 } } , +{ { -0.710428281726261 , -1.6090538708085935 , 1.6609238367038412 } } , +{ { -0.8885693294340745 , -1.484281463913036 , 1.7592537964607406 } } , +{ { -0.6098410747533759 , -1.5402071007530331 , 1.484915690415696 } } , +{ { -0.6431622957498799 , -1.5026046735303045 , 1.6931355002280222 } } , +{ { -0.6734786635147234 , -1.612399236873687 , 1.665452392331652 } } , +{ { -0.5876298706705066 , -1.3106631380639022 , 1.5235252508666048 } } , +{ { -0.6404319522785549 , -1.2115622547809908 , 1.7526238619994974 } } , +{ { -0.3918147892183017 , -1.2886593579614436 , 1.664071785090959 } } , +{ { -0.7443943253050573 , -1.520779102680611 , 1.5660593409736154 } } , +{ { -0.725232596439784 , -1.6247688040459602 , 1.6360546197675436 } } , +{ { -0.4988695359583421 , -1.660450558469926 , 1.5271460407695812 } } , +{ { -0.7234650317927266 , -1.6720150737672894 , 1.6969250739305668 } } , +{ { -0.5716021278333354 , -1.475188791414659 , 1.6865976472575441 } } , +{ { -0.7667250174675796 , -1.421985226824725 , 1.4397731247301186 } } , +{ { -0.6404840360071999 , -1.5845168825916813 , 1.76380822137247 } } , +{ { -0.5672960477823943 , -1.39531639108859 , 1.6720614237502607 } } , +{ { -0.8939803028710923 , -1.5916763395066502 , 1.7209349683731876 } } , +{ { -0.6228197070435735 , -1.3827223328538605 , 1.6737622764131896 } } , +{ { -0.7942551148759287 , -1.5417827621621103 , 1.5910524093714438 } } , +{ { -0.5571049749201625 , -1.3241271628212896 , 1.5415865307642886 } } , +{ { -0.5338468496032244 , -1.7718260826889989 , 1.656489375732271 } } , +{ { -0.5956350572519151 , -1.39859949686425 , 1.5317444878760371 } } , +{ { -0.7984541580872877 , -1.6639739055135414 , 1.637619679489317 } } , +{ { -0.5943243913466434 , -1.8119410116532495 , 1.743843032261065 } } , +{ { -0.6411461513293857 , -1.5470536344957375 , 1.557837037821702 } } , +{ { -0.37154358078479094 , -1.7974373018838605 , 1.5532428870244237 } } , +{ { -0.7670450860795663 , -1.7083142058245133 , 1.6699897902657017 } } , +{ { -0.6391602714047159 , -1.6415827761960808 , 1.7139947627618426 } } , +{ { -0.7044974028731928 , -1.582529402701622 , 1.4249583292465147 } } , +{ { -0.7332412289684178 , -1.4852869655511585 , 1.4872222984727728 } } , +{ { -0.6215205131628944 , -1.4806156216843156 , 1.6139715992079708 } } , +{ { -0.7943909090646155 , -1.6000936644699921 , 1.5800822618861659 } } , +{ { -0.8416275978466627 , -1.243452980843216 , 1.6174361650938813 } } , +{ { -0.81367457617932 , -1.621266235261029 , 1.7086631055728836 } } , +{ { -0.7958339498744148 , -1.1764914519126943 , 1.5472887296014115 } } , +{ { -0.7251392532889733 , -1.5662514684734894 , 1.5029416276486778 } } , +{ { -0.6951317858611904 , -1.7223262953183116 , 1.7172406932584465 } } , +{ { -0.5144593791847546 , -1.3691006554574756 , 1.6166046074633609 } } , +{ { -0.8050426959801349 , -1.5403576060299011 , 1.432722607820905 } } , +{ { -0.6519736064975311 , -1.5983756146158206 , 1.8376852536418287 } } , +{ { -0.469018611367873 , -1.6471625286838771 , 1.6272781413264117 } } , +{ { -0.663996824311464 , -1.7341280302991233 , 1.6364507480147141 } } , +{ { -0.6180890947648493 , -1.4491121651124306 , 1.4516501909440975 } } , +{ { -0.7084162627696903 , -1.3627153418360343 , 1.7244208903999625 } } , +{ { -0.5627824244916054 , -1.5614972910562444 , 1.6892238052580004 } } , +{ { -0.6757732805100645 , -1.3790506291527884 , 1.4895242231827979 } } , +{ { -0.6452968242095656 , -1.5451209912244679 , 1.734971590690997 } } , +{ { -0.6927653128543595 , -1.4399751615673402 , 1.6117985723686685 } } , +{ { -0.491304775455296 , -1.5126491980186043 , 1.539606505971218 } } , +{ { -0.7875263100757902 , -1.2446935778918913 , 1.6214731158049989 } } , +{ { -0.5258179572122946 , -1.3486685362426503 , 1.7639927176712993 } } , +{ { -0.8019918256904436 , -1.654267091899765 , 1.4781458824032168 } } , +{ { 1.3923854593026268 , 0.38267792242357507 , -0.9097061601000909 } } , +{ { 1.5335527950399037 , 0.3483369791121709 , -0.9803765369357803 } } , +{ { 1.5488959318265858 , 0.18543193054517082 , -0.8646595029257078 } } , +{ { 1.6066272414617486 , 0.27098916987445076 , -0.9635243842603177 } } , +{ { 1.6133663152384738 , 0.36679217562352884 , -0.6928694482210791 } } , +{ { 1.5309544328841265 , 0.43158246010881013 , -0.8979408426304794 } } , +{ { 1.6026400642059895 , 0.07879393350254452 , -0.7852786644512108 } } , +{ { 1.5697847016882762 , 0.3788790790907235 , -0.9410279663870661 } } , +{ { 1.4925533837076392 , 0.2042286396800253 , -1.034982320276551 } } , +{ { 1.4268192981890206 , 0.20696794965697182 , -0.7065365764875754 } } , +{ { 1.6526431037153546 , 0.39553924849893213 , -0.8006463176991141 } } , +{ { 1.671739818641235 , 0.3543206171187877 , -0.8989102568669123 } } , +{ { 1.5416205336863147 , 0.6767848944224402 , -0.7492722829075131 } } , +{ { 1.349160436643047 , 0.3405144534889345 , -0.9264912650271889 } } , +{ { 1.5386235727519217 , 0.11011563824177462 , -0.7984656334399335 } } , +{ { 2.016876124181287 , 0.1898848575101387 , -0.7233205641237694 } } , +{ { 1.4839894100226307 , 0.4616723337219155 , -0.9672251032339405 } } , +{ { 1.7273455551301042 , 0.25985400319998664 , -0.8442387162204915 } } , +{ { 1.5103134677557963 , 0.5951608139906971 , -0.9418167928427661 } } , +{ { 1.4546415759791773 , 0.1861562884410626 , -0.7750335038055401 } } , +{ { 1.3097372602299644 , 0.2797849049162157 , -0.967274779475773 } } , +{ { 1.611615539321438 , 0.2724256211676008 , -0.6771139706168927 } } , +{ { 1.54167415360891 , 0.23374917074639126 , -0.902702948713429 } } , +{ { 1.6052188714621558 , 0.25950681615246673 , -0.731889184647737 } } , +{ { 1.5158753249954062 , 0.2945626776862333 , -0.7883202182788979 } } , +{ { 1.7421954247916493 , 0.5102343141238808 , -0.7411050884626665 } } , +{ { 1.6250231982670125 , 0.15982202808790505 , -1.0429368615029442 } } , +{ { 1.7489358556980545 , 0.17921983287495122 , -0.9040964036889529 } } , +{ { 1.5977936086740259 , 0.3786114803243659 , -0.9879030615518476 } } , +{ { 1.61996425338815 , 0.22155402514148614 , -0.930450641263278 } } , +{ { 1.7049679411120147 , 0.2597172483536083 , -0.9520208612562072 } } , +{ { 1.6625604163265246 , 0.1772063270773793 , -0.9632857701461853 } } , +{ { 1.8074611652516441 , 0.3971216755444271 , -0.8339987195819052 } } , +{ { 1.5104511616829235 , 0.21540374993369418 , -0.9395244605287625 } } , +{ { 1.533120168960398 , 0.2476420041698852 , -0.9320249878413698 } } , +{ { 1.8056960177294814 , 0.3119953553966262 , -0.866850081431574 } } , +{ { 1.4391384282079267 , 0.07093244372913833 , -0.5539747867312408 } } , +{ { 1.5856461624087141 , 0.38485331708344833 , -1.0185775609369951 } } , +{ { 1.5369045369034333 , 0.2350678460359665 , -0.7738616003435449 } } , +{ { 1.559026543429794 , 0.14291187929995808 , -0.9271848887225217 } } , +{ { 1.6162138601300167 , 0.3624443797833472 , -0.9856366423873595 } } , +{ { 1.346719367692973 , 0.3919072806437415 , -0.9241987203514481 } } , +{ { 1.5142543749970399 , 0.15952680280543288 , -0.786337387536799 } } , +{ { 1.5233977686293474 , 0.17883105606726998 , -0.8208624503586477 } } , +{ { 1.7337733046776087 , 0.5779169350353573 , -1.031927971945539 } } , +{ { 1.609665702672545 , 0.44466841626153647 , -0.6154032082917354 } } , +{ { 1.569729935918762 , 0.4806956115803472 , -0.9649536869741274 } } , +{ { 1.548683398723165 , 0.20404336905538867 , -0.8462064957602015 } } , +{ { 1.6583502112149873 , 0.3227935845057378 , -0.921158399913655 } } , +{ { 1.4316935700677866 , 0.5260312978765145 , -0.8064832873260307 } } , +{ { 1.3846512283098322 , 0.6688488728935055 , -1.1423595736612986 } } , +{ { 1.7659079242736497 , 0.25760358855786547 , -0.8768279689217654 } } , +{ { 1.4008682260584746 , 0.22376227866557777 , -0.8754791511867576 } } , +{ { 1.6605286677754156 , 0.21103167542513807 , -0.9666748777353674 } } , +{ { 1.4637274631814303 , 0.6549948739561482 , -0.8369376975050108 } } , +{ { 1.5028515909349642 , 0.37655920774252644 , -0.7681893112921008 } } , +{ { 1.588072212102179 , 0.2706216006000144 , -0.8977993620538831 } } , +{ { 1.6284363083548252 , 0.36981523261518745 , -0.7276075880622361 } } , +{ { 1.6613150812942563 , 0.04987768530640422 , -0.9777020408233591 } } , +{ { 1.5319383230178294 , 0.4120567056404963 , -0.9958771141350558 } } , +{ { 1.5531669758896314 , 0.12149739246689811 , -0.8646634871761993 } } , +{ { 1.4617503886433052 , 0.17095295052747259 , -0.845089898694766 } } , +{ { 1.3298742821643854 , 0.3052680339352157 , -0.8818265619945979 } } , +{ { 1.4670682904263779 , 0.3861959705853125 , -0.9690651006290518 } } , +{ { 1.736724171847611 , 0.2358008105094481 , -0.7841379993402052 } } , +{ { 1.5385298880044338 , 0.10990241654688018 , -1.0140654709858703 } } , +{ { 1.45958898187654 , 0.20051586212014436 , -0.8415377820508756 } } , +{ { 1.6231152293277529 , 0.5053896052008197 , -0.9286955603538309 } } , +{ { 1.6700470310319906 , 0.38022455202561145 , -0.8372298696234525 } } , +{ { 1.6348415559431322 , 0.4416285428840147 , -0.8012570437911954 } } , +{ { 1.5002745571009934 , 0.2929326157736519 , -0.8905560602426269 } } , +{ { 1.8352605031168125 , 0.5347996170859108 , -1.0245019734410552 } } , +{ { 1.653968477859745 , 0.3302509084615417 , -0.8585632567851902 } } , +{ { 1.4208232732912913 , 0.3656946649487086 , -1.0078803769312212 } } , +{ { 1.522527986522151 , 0.6251502940456388 , -0.8514780148750374 } } , +{ { 1.453006817457522 , 0.33444028371942847 , -0.8314660426659347 } } , +{ { 1.4766832283175886 , 0.5948039412327709 , -1.0418811980013 } } , +{ { 1.580515526085913 , 0.24931528098952432 , -0.927892903221513 } } , +{ { 1.5795209817637563 , 0.06915606291752778 , -0.7364459206286408 } } , +{ { 1.4424526020149822 , 0.3130015161380255 , -0.9033718596840423 } } , +{ { 1.5044401784375083 , 0.10986964328900382 , -0.8038811921457213 } } , +{ { 1.6452427150493796 , 0.5058940306994723 , -0.9512155543827241 } } , +{ { 1.4891294738135648 , 0.2616739690860496 , -0.7817047587936669 } } , +{ { 1.442383662366495 , 0.4299142769950481 , -0.8352612927768693 } } , +{ { 1.470009877741393 , 0.3851973444777743 , -0.9198750553904288 } } , +{ { 1.636696475767881 , 0.31018379995217604 , -0.9396565730527758 } } , +{ { 1.39109636635288 , 0.01556519287718194 , -0.8663711989840022 } } , +{ { 1.6232390934767864 , 0.017372360480546883 , -0.8908122232000582 } } , +{ { 1.5034494161578995 , 0.25602309923470934 , -1.01006249071298 } } , +{ { 1.561326028774484 , 0.36073204764697603 , -1.074327539093634 } } , +{ { 1.5179587591073624 , 0.2782633333243173 , -0.8428377699204128 } } , +{ { 1.8051968168208485 , 0.6045373582073067 , -0.8881799191348076 } } , +{ { 1.7501290107322474 , 0.47757421396365096 , -1.0448397524772575 } } , +{ { 1.7356559098309468 , 0.2933750112683929 , -0.7594547940684849 } } , +{ { 1.7462537977007193 , 0.36298394011756974 , -0.9514970685393347 } } , +{ { 1.688079266951499 , 0.2765972456649248 , -0.71429240867193 } } , +{ { 1.772570249450796 , 0.38656603473958334 , -1.0698553068255552 } } , +{ { 1.7953204026349532 , 0.5339462620784968 , -0.7676518639359692 } } , +{ { 1.450759069745855 , 0.21452863559135557 , -0.757300161626961 } } , +{ { 1.4285451854081037 , 0.3968815197551746 , -0.6427349294058058 } } , +{ { 1.8460024190106648 , 0.15350531558871533 , -0.7999859417797495 } } , +{ { 1.714651909900483 , 0.3176456880413404 , -0.9772964906911388 } } , +{ { 1.6101114620237942 , 0.15703136707157678 , -1.0087655973293628 } } , +{ { 1.7519884981394915 , 0.3861823925986971 , -0.8951763938285245 } } , +{ { 1.6476795106256277 , 0.28313653615316947 , -0.9466594008535165 } } , +{ { 1.6994468221351813 , 0.33202738408466764 , -0.8537784677646904 } } , +{ { 1.6046589488218677 , 0.21000753347282836 , -0.7029878931898664 } } , +{ { 1.6414629606366604 , 0.5198887731929333 , -0.9368650379416515 } } , +{ { 1.5113983643095683 , 0.493812013463477 , -0.9562807057448952 } } , +{ { 1.5525420239628698 , 0.4494838293122631 , -0.6261897157408225 } } , +{ { 1.644153337699846 , 0.13713540205300087 , -0.8236117814519556 } } , +{ { 1.6448320265863503 , 0.11816319375132554 , -0.9342066930604689 } } , +{ { 1.4453707833262754 , 0.32046471787388603 , -0.9341851728423383 } } , +{ { 1.6458158107384044 , 0.16231312009778487 , -0.932249398242727 } } , +{ { 1.617506678648511 , 0.4561616389828898 , -0.8845205305355132 } } , +{ { 1.600287175837925 , 0.24413398952692827 , -0.8906946700645775 } } , +{ { 1.4911332221546088 , 0.11371999073972212 , -0.8697873161032734 } } , +{ { 1.610924436814311 , 0.401851149046258 , -0.9297840278933031 } } , +{ { 1.4931515044007662 , -0.0703820475684496 , -0.8341516151205446 } } , +{ { 1.5472877522747697 , 0.278592517779257 , -0.6885691395951743 } } , +{ { 1.439505702601448 , 0.4428734160788601 , -0.654762383798059 } } , +{ { 1.3974738382579805 , 0.2981599460884568 , -0.7737184508197069 } } , +{ { 1.6984639692374706 , 0.35983017907883547 , -0.8525469929661631 } } , +{ { 1.5045534375473129 , 0.17801366803364094 , -0.8647735816806983 } } , +{ { 1.7009259773176206 , 0.3894108186680397 , -0.5547711546863997 } } , +{ { 0.10526934882044821 , 0.07896679690783703 , -0.8285209101379531 } } , +{ { 0.10330277219219298 , -0.04392647547327535 , -0.6919633139783609 } } , +{ { 0.09176071711860921 , -0.3447219929606189 , -0.6023642366252037 } } , +{ { -0.27196786870136364 , -0.1837850163601752 , -0.6572775222134498 } } , +{ { -0.04253697560732074 , -0.09051974091808564 , -0.9175941879043199 } } , +{ { 0.07199943031600303 , 0.11355708646531168 , -0.7496525641671481 } } , +{ { 0.1255035298507539 , -0.06328103197975868 , -0.752814859419451 } } , +{ { 0.18271246949472156 , -0.011620971791396343 , -0.8622116297318484 } } , +{ { 0.06537020894817867 , 0.02396858820516534 , -0.7973339516649997 } } , +{ { 0.11921346698108581 , -0.0018130596919034084 , -0.7996100465337391 } } , +{ { 0.14580509925255986 , 0.11694655232189105 , -0.839958779520763 } } , +{ { 0.2501557196343868 , -0.14021253542932358 , -0.6095486420706384 } } , +{ { 0.018902740574334834 , -0.12235760097702726 , -0.7319485540035405 } } , +{ { 0.12251904510212375 , 0.11559221483111379 , -0.6605086410700883 } } , +{ { 0.23252835395211316 , -0.07862026023364208 , -0.8257650182277116 } } , +{ { 0.034133515213517436 , 0.12612179936418608 , -0.6446861107219665 } } , +{ { 0.2070693578496992 , 0.21008573289689048 , -0.6272285173689013 } } , +{ { 0.04591944516657831 , 0.09540771938774514 , -0.8662861504510885 } } , +{ { 0.11232270885829533 , 0.26257522862296484 , -0.7871245370538985 } } , +{ { 0.0862567596698183 , 0.1497637319864826 , -0.6486069723180158 } } , +{ { 0.18548753057936906 , 0.02476117951278078 , -0.8689895246952464 } } , +{ { 0.03857737693779395 , 0.3179945325283522 , -0.8403405267422899 } } , +{ { 0.10404272864056956 , 0.10296529421608683 , -0.758347262857756 } } , +{ { -0.10547789621349565 , 0.18161098239687376 , -0.7933202701130291 } } , +{ { 0.0740194221590383 , -0.14874001799335598 , -0.5472641524568784 } } , +{ { 0.17236070038272827 , -0.09247816320805989 , -0.6347030325232955 } } , +{ { 0.043015715423855704 , 0.07690512059825923 , -0.6341990225736267 } } , +{ { -0.05805374829619466 , 0.20986924509067653 , -0.8842317333146521 } } , +{ { 0.10707973661758831 , -0.32938034869042015 , -0.7604011478081824 } } , +{ { 0.3715636637016776 , 0.0009702482910383586 , -0.8369553184463892 } } , +{ { 0.15863811766207891 , -0.2088249170930031 , -0.7245960184792736 } } , +{ { -0.024334741087421254 , 0.040043046215304995 , -0.731504146197359 } } , +{ { 0.0836735790658442 , -0.14523358589848737 , -0.7081894957289442 } } , +{ { -0.19535994448876134 , -0.02638937798381176 , -0.7912469489776571 } } , +{ { 0.14998832963711153 , 0.06961662342966791 , -0.965437727492632 } } , +{ { -0.006664184917207161 , -0.1946481532895344 , -0.6194003220231714 } } , +{ { 0.14362267367684198 , -0.07486036589365222 , -0.7963307835756811 } } , +{ { 0.03358657865241514 , 0.041906057172401354 , -0.9118294936298955 } } , +{ { 0.1167790908833406 , -0.03939267128066384 , -0.9444659178839224 } } , +{ { 0.0030975449232199296 , -0.05489749796158986 , -0.8890899971591552 } } , +{ { 0.2836140484795967 , -0.20427728465937184 , -0.7068962070797143 } } , +{ { -0.0053817463041679016 , -0.05936080553312798 , -0.5897230131185114 } } , +{ { 0.03838965814182636 , 0.019596023635042037 , -0.6760898506004839 } } , +{ { -0.10336514145114273 , -0.011490739210248443 , -0.8156853400329671 } } , +{ { -0.04167421834981481 , 0.10132449047317486 , -0.698606952092805 } } , +{ { 0.038576295434534516 , -0.11722824325919777 , -0.7330733165768811 } } , +{ { 0.04377989149464866 , 0.132351239364825 , -0.6067097864129447 } } , +{ { 0.2047644384855499 , 0.26242278286878706 , -0.7366113105174048 } } , +{ { 0.11835825064856667 , -0.09528250293201154 , -0.672715081791932 } } , +{ { 0.12081674800529611 , -0.089910819689677 , -0.7938356160976647 } } , +{ { 0.16595344835694478 , 0.11870821149556678 , -0.7220249222096151 } } , +{ { 0.12561420141001414 , -0.20376832423075036 , -0.7043199611675486 } } , +{ { 0.03951963824245204 , -0.1724391588630068 , -0.7539575888859272 } } , +{ { 0.2352600656185299 , -0.41791963669126153 , -0.5611023910152602 } } , +{ { -0.12209587704963873 , 0.19582144080540057 , -0.6926383455551249 } } , +{ { 0.10750365724035471 , 0.11970755609746594 , -0.4608443158694439 } } , +{ { 0.02537786947258041 , -0.09790509337132537 , -0.7863718445294128 } } , +{ { 0.14342024082589297 , 0.10514487122027036 , -0.8759587756430405 } } , +{ { 0.0985005447178075 , 0.1863608535335152 , -0.7872194137813697 } } , +{ { 0.06345497162839542 , 0.09321695952041177 , -0.6823818038482097 } } , +{ { 0.07198093348791239 , -0.08903601437742631 , -0.7086721731659367 } } , +{ { 0.25685251375856205 , -0.2233694030821677 , -0.779314727236913 } } , +{ { -0.22622410869468357 , 0.02350432883100023 , -0.6297643412286112 } } , +{ { 0.21346962307553 , -0.11890118008712494 , -0.7087719148364623 } } , +{ { -0.030638842984827667 , 0.19426292371234252 , -0.6854025208237489 } } , +{ { 0.1317914845045944 , 0.05823307596609064 , -0.6796476848014028 } } , +{ { 0.043142950430106956 , 0.2024314376405058 , -0.6353395150089597 } } , +{ { 0.05472623874199113 , -0.204437480845646 , -0.6082676593236689 } } , +{ { 0.040636562625116654 , 0.02408796889446108 , -0.8142046516622753 } } , +{ { -0.08410752169118227 , -0.20820809205124416 , -0.6466043342093373 } } , +{ { 0.08266261608297344 , -0.20999480446715177 , -0.5100403427770933 } } , +{ { -0.014564207558570344 , -0.22281187267855887 , -0.7573366029343577 } } , +{ { 0.12247981835005077 , -0.19923631545318965 , -0.5544798350404543 } } , +{ { 0.054358621701158766 , 0.01109033852963585 , -0.8463011428856368 } } , +{ { -0.03541213683550126 , -0.10293802674619722 , -0.620561217164457 } } , +{ { -0.10681639891768663 , -0.03338179618155629 , -0.8422330480331909 } } , +{ { 0.02045640288133482 , -0.17545183693476665 , -0.879573773753643 } } , +{ { 0.33405723021760547 , 0.2568993198575509 , -0.9334008211714696 } } , +{ { 0.07954396291730634 , -0.19031140670065252 , -0.8169893997682033 } } , +{ { 0.08499337902188694 , -0.003197399394530935 , -0.6288876033570976 } } , +{ { 0.10028948903395081 , 0.14662895974536277 , -0.8362353836606023 } } , +{ { 0.21790143470487833 , -0.29209221479160397 , -0.8027390158209252 } } , +{ { 0.08700612672280904 , -0.007740427071046361 , -0.7797278086232534 } } , +{ { 0.3516503883921103 , -0.18073778821143266 , -0.590553194748862 } } , +{ { 0.06290693146607602 , -0.42327053191187414 , -0.8078111821855628 } } , +{ { 0.18461257667369957 , -0.02486824508551582 , -0.5632498204518268 } } , +{ { 0.08976218812496571 , 0.12931770853638158 , -0.9006575829142327 } } , +{ { 0.21969655292915122 , -0.03958382035053779 , -0.7517250975842367 } } , +{ { 0.11131759296233115 , -0.04681995484352651 , -0.668804079567175 } } , +{ { -0.025368617200777845 , -0.12375193023301533 , -0.6485299912598999 } } , +{ { -0.05119484140870933 , -0.0784738791990129 , -0.7915811491218538 } } , +{ { -0.0026210781831756615 , -0.08391669503123529 , -0.8375647965523383 } } , +{ { 0.118675992707412 , -0.20720468323423288 , -0.9867157992473286 } } , +{ { 0.22350121783405932 , 0.05364215547709665 , -0.8281781923856443 } } , +{ { 0.15426524610619644 , 0.009621573159033508 , -0.4655821428945638 } } , +{ { 0.023498656639432628 , 0.08196581049358082 , -0.6034731921135201 } } , +{ { -0.21089601611686842 , 0.027157081263248648 , -0.7047424800608054 } } , +{ { 0.03355440122391743 , 0.2955114119288389 , -0.7441793869062279 } } , +{ { 0.23869378116826992 , -0.10431477440024609 , -0.8214788518679259 } } , +{ { 0.08990396872135416 , 0.2188527291593685 , -0.729728099934026 } } , +{ { 0.12042271881172821 , -0.04543728082418026 , -0.7256039937780671 } } , +{ { 0.30173937306394233 , -0.08291635816880279 , -0.726083624107025 } } , +{ { 0.12717795803721066 , -0.10385472470395883 , -0.7275591001460283 } } , +{ { 0.07347223784624714 , -0.2738810008169603 , -0.8202972620704944 } } , +{ { 0.0419876065082787 , 0.1963813536254735 , -0.9096351729565675 } } , +{ { 0.002215414332251292 , -0.11774568138903346 , -0.6051849800247677 } } , +{ { 0.14519789502597844 , -0.15087731585305286 , -0.9382535498027551 } } , +{ { 0.2314865966569355 , 0.12474922894695403 , -0.5977247356255149 } } , +{ { 0.13171191007843638 , 0.06300686783420825 , -0.6607755191161429 } } , +{ { -0.19041526086981492 , -0.03727896661829768 , -0.7029308410525076 } } , +{ { 0.2993470322077099 , -0.010949328926551143 , -0.7553935098588378 } } , +{ { 0.0859928026138104 , -0.05451785072535843 , -0.6915000636478665 } } , +{ { 0.14330187330100852 , 0.08655188040366552 , -0.5881156232340327 } } , +{ { 0.01777685614672755 , 0.16508545572326805 , -0.7100728022481715 } } , +{ { -0.05369034247626484 , 0.03180141343604322 , -0.7349300141571076 } } , +{ { 0.2606007419783892 , 0.04963939171658656 , -0.7483820377029604 } } , +{ { 0.16862339831793977 , 0.11063994100064782 , -0.4592045065580904 } } , +{ { -0.0344448621449091 , -0.21441485747559222 , -0.6670898440897501 } } , +{ { 0.10742777893347884 , 0.01313477705302376 , -0.8630385924665939 } } , +{ { -0.0018497033366765836 , -0.06299141558028493 , -0.8755638397873076 } } , +{ { 0.14991073482093303 , 0.053789715664418404 , -0.6087310504476697 } } , +{ { 0.08829818425152755 , 0.010993910174960852 , -0.7663387229170092 } } , +{ { -0.08505152543473847 , 0.23575919578971785 , -0.7831155339018128 } } , +{ { 0.0777313299246636 , 0.13064250150530002 , -0.6210686476230358 } } , +{ { 0.10189805925919002 , -0.020168497806893337 , -0.8000192639587103 } } , +{ { -1.0034889989257845 , 0.9254194489731166 , -0.07204937017156744 } } , +{ { -0.8822432307295333 , 1.5990039991725677 , -0.04347884731645767 } } , +{ { -0.8978665225911288 , 1.2599942769540804 , -0.006831034416118517 } } , +{ { -0.9303566638280677 , 1.506104675340196 , 0.03710820577369733 } } , +{ { -1.1093941049909106 , 1.3070605327640237 , 0.05727213365017971 } } , +{ { -1.187576418794873 , 1.3361822411709685 , -0.0985201089577524 } } , +{ { -0.8388082313264669 , 1.2447751799166096 , 0.03654838962474808 } } , +{ { -0.9787150578554697 , 1.0149447777324825 , -0.1646458006078995 } } , +{ { -1.0150240454119368 , 1.1573726810000071 , 0.062407218359073764 } } , +{ { -1.0387297776058342 , 1.0310618976883865 , -0.1043123383708146 } } , +{ { -0.9049951891738397 , 1.0721782864092813 , 0.04141772491818315 } } , +{ { -0.7888698233687934 , 1.2412832515902592 , 0.2113747971102438 } } , +{ { -0.9629239790448062 , 1.3559891853030743 , -0.004650237112610113 } } , +{ { -0.8357197250826417 , 1.215287921971028 , 0.0043628962590918615 } } , +{ { -1.063997330844618 , 1.392496365995951 , 0.041852884423983557 } } , +{ { -0.9035870465496507 , 1.136583241770531 , 0.08040431909228045 } } , +{ { -1.2249915445236603 , 1.2596845585502994 , -0.08183326561511846 } } , +{ { -0.911684228072397 , 1.3347252402390506 , -0.017128566810418216 } } , +{ { -1.0781395822963655 , 1.3781686894221976 , -0.08924610533997387 } } , +{ { -1.1022131110572249 , 1.1091180947175725 , -0.1405066493199911 } } , +{ { -0.8995002407407859 , 1.2647966248196911 , 0.019437485429987487 } } , +{ { -0.7681733783890743 , 1.2021882803112065 , 0.0141734632212231 } } , +{ { -1.0205332456616465 , 1.1447131720091606 , -0.01740456479842632 } } , +{ { -0.9551454023282345 , 1.2930688195275069 , -0.033832219967142994 } } , +{ { -1.0283932379313416 , 1.0743531890296918 , -0.045594745106304006 } } , +{ { -0.825327768661447 , 1.2865286783998615 , -0.22480613845729017 } } , +{ { -0.8304400849266385 , 1.2319750126253786 , -0.05347228924233102 } } , +{ { -1.0617264499378136 , 1.096636678019143 , 0.07495282129418075 } } , +{ { -0.9346711241516972 , 0.9895681440150568 , 0.004623713034332239 } } , +{ { -1.003382530296229 , 0.9626449501823348 , 0.032486658868899294 } } , +{ { -0.9754520567968423 , 1.4249991244303126 , -0.033659044407652244 } } , +{ { -1.2916577099131425 , 1.1120128971931162 , 0.05459838121815515 } } , +{ { -1.0697859871236124 , 1.2872969034136648 , 0.052415203735152405 } } , +{ { -0.919661867161895 , 1.1808027494752484 , -0.09866303672479308 } } , +{ { -1.0647302714228921 , 1.399809200271662 , 0.06123356245308838 } } , +{ { -0.9249291697414421 , 1.2771108621211396 , -0.12833651432140697 } } , +{ { -0.6878042499519909 , 0.9916260704275968 , 0.07044967074900642 } } , +{ { -1.0046791317444277 , 1.363270827394231 , -0.150262428694772 } } , +{ { -1.1819264995268988 , 1.2474954860874985 , -0.05863149931959319 } } , +{ { -1.1747722459713041 , 1.5471231102270329 , -0.2530120434474433 } } , +{ { -1.1870285540626266 , 1.2731285341268148 , -0.08779778860975715 } } , +{ { -0.9726104983975965 , 1.1697187747740023 , -0.12974551664116352 } } , +{ { -0.9222141671588413 , 1.511363136244606 , 0.04733445194447016 } } , +{ { -1.0339021897204022 , 1.0294790697119478 , 0.027370074401686616 } } , +{ { -0.9486727078481917 , 1.2322763748494459 , -0.020166530129183666 } } , +{ { -0.7517779922240159 , 1.0344081011744246 , 0.01021114718404385 } } , +{ { -0.8971480189368692 , 1.4742225553936203 , 0.12541914877635976 } } , +{ { -1.0570277606635676 , 1.2637595500671723 , -0.0011557904967062751 } } , +{ { -1.2285033371527192 , 0.9994870489902105 , 0.03509516144156377 } } , +{ { -1.07928378906578 , 1.194985177544314 , -0.03949782464109831 } } , +{ { -1.2365872549756476 , 0.9914125806254712 , 0.088663310089026 } } , +{ { -1.2138782194306152 , 1.2985807451358413 , 0.08094839621111827 } } , +{ { -1.018874344749598 , 0.8792567862024668 , -0.05466099307969677 } } , +{ { -1.0795283947999372 , 1.3477484202730794 , -0.10059414524904235 } } , +{ { -1.0742644142764914 , 1.3740158060625833 , 0.048437545021203475 } } , +{ { -0.7267619968377902 , 1.2619283015468927 , -0.12647501220263507 } } , +{ { -0.8538688550636672 , 1.1458335593329516 , 0.09184256946125025 } } , +{ { -0.8657162596594603 , 1.1942775076548418 , 0.02891813181722695 } } , +{ { -0.9552211154963158 , 1.4587776864031021 , 0.05323999847507256 } } , +{ { -0.9370726662863325 , 1.092207214133884 , -0.07326257699458323 } } , +{ { -1.057682800593953 , 1.1800001935459088 , 0.23962496782556886 } } , +{ { -1.0169099165814686 , 1.154451691027666 , -0.04068922464656176 } } , +{ { -1.0923048371679278 , 1.1619325767502018 , 0.06558106444475852 } } , +{ { -0.9535521567639803 , 1.3729669741451185 , 0.020471917657947175 } } , +{ { -0.8504609595122535 , 1.0128638150567795 , -0.16029433093920314 } } , +{ { -1.016985500496826 , 1.3435241761590446 , -0.013668646778394153 } } , +{ { -1.0295493740646648 , 1.4326366932295695 , 0.07785431356405509 } } , +{ { -1.0766136283510037 , 1.2503945083293626 , -0.13645042456050113 } } , +{ { -1.1516157378067207 , 0.7751000515444775 , -0.016372115147858583 } } , +{ { -1.0224911615223686 , 1.0942467541650234 , -0.034983897165545605 } } , +{ { -1.1488842025706876 , 1.205446426486528 , 0.03664476078260301 } } , +{ { -0.9400476233565555 , 1.1571860708456094 , -0.12370554343039401 } } , +{ { -1.0741224593547105 , 1.6576502792072116 , 0.008249257073701232 } } , +{ { -1.1472732621170807 , 1.522270293205654 , -0.07968744887333537 } } , +{ { -1.0980732460603955 , 1.3617262532728047 , -0.022229808031034932 } } , +{ { -0.7683276833478415 , 1.0526019631452064 , -0.21664609293798642 } } , +{ { -1.0980068606098625 , 1.5393866097563873 , -0.053515102078192656 } } , +{ { -0.9554171324538531 , 0.8973366324445216 , 0.0364989211024352 } } , +{ { -1.1891679143382816 , 1.3810934733895863 , -0.07213410673346807 } } , +{ { -1.2829168836720053 , 1.1699905667670056 , -0.10253653747733897 } } , +{ { -1.1506498615931797 , 1.2346228117338398 , 0.023696312835942254 } } , +{ { -1.0952942792220417 , 1.1328400874248714 , -0.147038362443522 } } , +{ { -0.8036712711857055 , 1.378495895843762 , 0.10072921043786788 } } , +{ { -1.0174947210865208 , 1.3844306601640308 , -0.07142157813949779 } } , +{ { -0.8857254552338549 , 1.2823805846918006 , 0.1387425502251695 } } , +{ { -1.138735693021233 , 1.2169474395262065 , 0.06827860593935851 } } , +{ { -1.042427336329534 , 1.2651513828401448 , -0.04881870748559873 } } , +{ { -1.158729154483946 , 1.2589785365200215 , 0.18104462970862803 } } , +{ { -0.9174295754581193 , 0.9750384004749518 , 0.08442898301019283 } } , +{ { -0.7625728093705464 , 1.0885335580014148 , -0.036346837329154044 } } , +{ { -0.8929012312972646 , 1.2431727369356236 , -0.07630101339580818 } } , +{ { -1.0743831624021987 , 0.9089404979241266 , -0.0772725438443217 } } , +{ { -0.8824054529161841 , 1.0126950287125793 , -0.16854925203891452 } } , +{ { -0.8382820747710773 , 1.2023670743504606 , -0.12176843616245449 } } , +{ { -0.9063262644326383 , 1.3800903588927564 , -0.02304203866405486 } } , +{ { -0.8548225956889995 , 1.1625387915756928 , -0.2129297328990174 } } , +{ { -0.8387087258360187 , 1.0311026211203864 , -0.1537578287767499 } } , +{ { -1.089620869793037 , 1.4392082735726321 , -0.20170639816466027 } } , +{ { -1.359066782864209 , 1.1414739794485305 , -0.10113721460668572 } } , +{ { -1.2832773920551401 , 1.1638571729238738 , -0.026378431983086297 } } , +{ { -0.9057976867487005 , 1.3989923910574307 , -0.14206127270148924 } } , +{ { -0.9684996140726473 , 1.3237926476204134 , 0.1043531560864367 } } , +{ { -0.9932334095877323 , 1.4499295807284982 , -0.10796587486799793 } } , +{ { -0.8775610374493121 , 1.027392532033278 , -0.024605790692957912 } } , +{ { -0.9584446300233735 , 1.1804257850530926 , -0.15038393703932246 } } , +{ { -0.8065257916560759 , 1.2106042649706041 , -0.10619762965924494 } } , +{ { -1.1573712408899848 , 1.0693955951396865 , 0.025171170271119144 } } , +{ { -1.0477958303483923 , 1.123457596215175 , -0.0951916590009024 } } , +{ { -1.0425389785039256 , 1.0897090815871664 , -0.20577919402392875 } } , +{ { -0.9964790836027293 , 1.1831505864383975 , 0.0936137806400232 } } , +{ { -1.0790001750592184 , 0.9498320869929823 , -0.0813046251047546 } } , +{ { -1.1007914469105635 , 1.1842220162078383 , 0.09300544203893533 } } , +{ { -1.0103594969425844 , 1.2008795616915888 , 0.042468191300845316 } } , +{ { -1.1089094373293131 , 1.254567756743476 , 0.20960182362643642 } } , +{ { -0.9229550645336103 , 1.4796864935840068 , 0.09542552068767131 } } , +{ { -1.063928840902714 , 1.2726480926144597 , -0.07554385665028884 } } , +{ { -1.046240116621976 , 1.1478718222308 , 0.027262069701121095 } } , +{ { -0.8756696191797929 , 1.2447027844010707 , 0.031357521293206195 } } , +{ { -1.0554290684436098 , 1.159390720675621 , -0.09564442044159413 } } , +{ { -0.9367975587064877 , 1.3584967470404452 , 0.0349113858499433 } } , +{ { -0.9428157762709559 , 1.4555965630146428 , 0.06587992547811626 } } , +{ { -0.8065736533526267 , 1.4331002117995764 , -0.034544828125594104 } } , +{ { -1.1318721561165206 , 1.365473841241093 , -0.2685006812061672 } } , +{ { -1.0943503754121608 , 1.2703540986030508 , -0.02828959113941095 } } , +{ { -0.9658445614832414 , 0.9918369640416936 , -0.02505133673038869 } } }; + std::vectororigLabels{1,2,0,3,0,1,2,3,1,2,3,1,3,1,2,3,1,1,0,2,0,3,2,2,0,2,2,1,0,3,2,1,1,3,0,0,0,0,1,3,3,2,0,1,1,1,3,1,0,3,3,3,2,0,3,3,0,0,3,0,2,3,0,1,0,1,1,2,0,2,3,1,1,3,1,2,3,2,2,3,2,0,0,1,0,1,2,0,3,0,3,2,2,0,2,1,2,0,2,1,3,2,1,1,0,3,2,0,2,3,0,1,3,0,3,2,2,2,3,1,3,2,1,2,0,3,1,0,3,1,1,3,1,0,1,2,1,1,1,0,1,0,0,2,1,1,2,0,3,2,1,2,1,2,3,0,2,1,0,2,0,3,3,0,2,0,3,3,3,3,3,2,3,2,1,3,3,3,2,3,1,0,1,2,1,1,1,1,2,0,2,0,1,2,2,2,2,1,0,1,3,0,0,2,3,3,0,3,1,0,2,0,3,1,1,2,2,0,1,1,2,3,1,0,1,0,1,2,1,0,3,1,1,0,3,2,1,3,2,3,1,3,1,3,1,0,2,0,2,2,0,1,3,2,0,0,1,2,2,0,0,0,1,0,1,3,2,2,2,3,1,2,1,0,0,2,1,2,0,2,2,3,3,2,2,1,2,3,2,1,0,0,0,2,2,1,0,2,3,1,2,0,1,2,3,0,2,1,2,1,2,3,1,3,0,0,1,2,3,3,3,3,3,3,3,3,0,1,2,1,1,0,2,2,1,0,3,2,2,0,2,2,0,3,2,3,3,3,1,1,1,1,2,2,3,0,2,0,0,1,0,1,0,0,2,3,0,0,0,3,0,2,1,2,3,2,1,0,3,0,1,3,1,1,0,2,2,3,0,0,1,0,2,0,0,0,1,1,3,2,0,1,2,2,3,0,0,1,1,3,0,0,0,1,3,2,3,0,2,1,0,0,3,1,3,3,3,0,3,3,1,2,0,3,1,0,0,3,3,0,2,3,1,1,1,2,1,1,2,1,3,2,0,1,3,2,3,3,0,3,3,3,0,2,2,1,2,0,3,2,1,3,0,3,3,1,1,1,3,0,2,0,3,1,1,2,3,3,0,0,2,3,0,3,3,3,3,2,2,0}; + sort(origLabels.begin(),origLabels.end()); + std::vector>src(500); + for(int i=0;isizes; + for(auto u:freq) + sizes.push_back(u); + int iterations=100,k=4; + int data_length=500; + std::vector>centroids(k); + std::vectorpredicted_labels; + int runs=20; + float best_score=-1; + //running the Kmeans 20 times with different centroids initialization + //the dataset has been converted into a vector of vectors where each vector[i] represents a datapoint. + for(int i=0;i