From 62b17c964aa13c8466f663076fb0c7896a3d9db5 Mon Sep 17 00:00:00 2001 From: David St-Onge Date: Fri, 12 May 2017 11:29:31 -0400 Subject: [PATCH] fix m100 launch --- launch/launch_config/m100.yaml | 1 + script/string.bzz | 92 ++++++++++++++++++++++++++++ script/testflockfev.bdb | Bin 68074 -> 73409 bytes script/testflockfev.bo | Bin 3676 -> 4189 bytes script/vec2.bzz | 107 +++++++++++++++++++++++++++++++++ src/vec2.bzz | 107 +++++++++++++++++++++++++++++++++ 6 files changed, 307 insertions(+) create mode 100644 script/string.bzz create mode 100644 script/vec2.bzz create mode 100644 src/vec2.bzz diff --git a/launch/launch_config/m100.yaml b/launch/launch_config/m100.yaml index 5ad5f46..819ac04 100644 --- a/launch/launch_config/m100.yaml +++ b/launch/launch_config/m100.yaml @@ -1,5 +1,6 @@ topics: gps : global_position + localpos : local_position battery : power_status status : flight_status fcclient : dji_mavcmd diff --git a/script/string.bzz b/script/string.bzz new file mode 100644 index 0000000..4140a1b --- /dev/null +++ b/script/string.bzz @@ -0,0 +1,92 @@ +# +# Returns the string character at the given position. +# PARAM s: The string +# PARAM n: The position of the wanted character +# RETURN The character at the wanted position, or nil +# +string.charat = function(s, n) { + return string.sub(s, n, n+1) +} + +# +# Returns the index of the first occurrence of the given string m +# within another string s. If none is found, this function returns +# nil. +# PARAM s: The string +# PARAM m: The string to match +# RETURN: The position of the first match, or nil +# +string.indexoffirst = function(s, m) { + var ls = string.length(s) + var lm = string.length(m) + var i = 0 + while(i < ls-lm+1) { + if(string.sub(s, i, i+lm) == m) return i + i = i + 1 + } + return nil +} + +# +# Returns the index of the last occurrence of the given string m +# within another string s. If none is found, this function returns +# nil. +# PARAM s: The string +# PARAM m: The string to match +# RETURN: The position of the last match, or nil +# +string.indexoflast = function(s, m) { + var ls = string.length(s) + var lm = string.length(m) + var i = ls - lm + 1 + while(i >= 0) { + if(string.sub(s, i, i+lm) == m) return i + i = i - 1 + } + return nil +} + +# Splits a string s using the delimiters in d. The string list is +# returned in a table indexed by value (starting at 0). +# PARAM s: The string +# PARAM d: A string containing the delimiters +# RETURN: A table containing the tokens +string.split = function(s, d) { + var i1 = 0 # index to move along s (token start) + var i2 = 0 # index to move along s (token end) + var c = 0 # token count + var t = {} # token list + var ls = string.length(s) + var ld = string.length(d) + # Go through string s + while(i2 < ls) { + # Try every delimiter + var j = 0 # index to move along d + var f = nil # whether the delimiter was found or not + while(j < ld and (not f)) { + if(string.charat(s, i2) == string.charat(d, j)) { + # Delimiter found + f = 1 + # Is it worth adding a new token? + if(i2 > i1) { + t[c] = string.sub(s, i1, i2) + c = c + 1 + } + # Start new token + i1 = i2 + 1 + } + else { + # Next delimiter + j = j + 1 + } + } + # Next string character + i2 = i2 + 1 + } + # Is it worth adding a new token? + if(i2 > i1) { + t[c] = string.sub(s, i1, i2) + } + # Return token list + return t; +} diff --git a/script/testflockfev.bdb b/script/testflockfev.bdb index 76c007539283d5847bada16ccac08b5a6e331b8e..2683d703f1b04f480980b3c293d3eca959e7340d 100644 GIT binary patch literal 73409 zcmb_kX}A_t)xClyT1pC-Ldhi=^xlhCNkzdFnH-rhoJB5|;G%#sDQXF(OipDEkcudk zh+{dM1`bFfejOqp6gYU+#`^^?zQs2?|>;q0lS8|$YvHgwy6)QlOe zcc`jrV=>#=&+h*}cIcpCXO0+_qVchJLTWf~+@vY>QyM2v8FTi;hVf$>r~Mb~e1Pp` zAo!S8ZX&(DR8@6oFm?%Ihgj@a>}T%xw%D<%YNW+9uP}C7i>j)@7E^0K!^OK|=c=lU z4Wy+C_H~qDv4J4Tw8EL)wM$ji3IqAF3N~fes;cJ=q`eAuI12TyfwWS=?sqamFVf0o zQ5(>`zr|pKX@%?k7Qpr~kp1juZX!E@&SzN+^_&~K7O~&3*kSfFyom*%U7dl{s9>L$ z6xy?xkxiD7EVL`Z6smSNb(@buT?-9_^E2FlnHT}fN^SFQHv%|e!CY%OA75@&;}1bDn4AzQRv4gtD;Qjl}>11HPCQo zH4xeb2GUUldkh`B$w1_qy$?Y=Xkffbg}1pow6W5_nyNK`eWh>eas?mVpK)Q?kK{rL}>E%UkRC-AM)eE5PO$h&--GKrHhOtXj?N zaeyr_5c%-k?3DL4HM8S!#64~xvhrFv8Sk!Uwh`*7GY}-1R<3#`K|Om~3^BqST@SEt z8Wy71dd)|838w~aAqesTFFdU0?Dkkj5@2CwZH(}U?6g4 z7lWg;{wQBsxg6~W`%df6dgsP2MeGp!K4`9@?>*OPV}FYc_xUhK=bkFq-%*CS1|lEa z9WW&q8<>3NU4SC5HZbfst#HkbDrw&zLZSEyMmp!Rs4dvr-*zLH=uSt;N)x#SHRYJD zQOo-yu&9_fy&NoBW*Nx`_b)IMR~VRlW$x`*Bwxc?VkR_MX4r9Bxhz`bnpbPFVQs8- z=1IPeTni>#Vi|#*X@xVJ?U*2o<(G~Ld#IVcgW*)n?+nL0VHeShv~roSJpu+=j9j9z z0HY_D`TaskS{(pd(UW(z?S^T!{L2NM!5_iVhb$w^_O!y8?Fm|~G!WjU!(ba7N9D{; zbR0!5(#qxNd-(P`i-8C$ihaGL5!k_rrL83rF7G%emTDDj4Zy}52%jy&nH}iFvcH-KANRj4=XML`W z-*+-bwbIIsJq~vP8ZU65qS$H9JRM-MVbZ+e<_R|u20Owzu_M*YUc?BPWFYd*>7S75 zTm!@8PAk04Gu#NkX{Uj81_C`I85quNs2c&YYQG0QthVjRhI3b^T0UfjxA{0)c$Q_x z(;-)R?V;NK7Ax2LUJ!GLf$_KCxrt17GL~QAj&#cFWeJ7L`+u_W91s097j5rf=n^%pxoNlqa!i5uQ4JI@h7-w*9B1@d}l@Eg((fFB`h}`%q zFxZwEn0!t@f+DXlF#e%LxZcM&7RghxjcXpSaJkL{lzgs zzJ~1$Cako~WEtP%T*cvP&9>q%5P1mjXReHAV^;Ds;*}yd_Cv(hS@MOupN!5V;Yg@Hj8X@xVZ1;SzjX|IBf zaQFVNt6=S&Naf60mAv=QaY7?$a|!=PCp7-zBR6)i6B_oDR&MMAh^0l~8**;!Mb0Ah zvhNKOZlhB?Crucvuk#yy)Xb`&tGNck)`T+~4X~>W45d#i40e*!75@?{4E6))YPDrV z7KOoDJ6&~Dx48l*-Z%rP^ziEhUC{~QKu#;Xs|N+K^mCN#t0r=DNhkD#GcVO@W&=u^ zm#19g(Z{rMhtoqsui84(#95U4y?2&0O}Dr{%hTdVIMSC{6?q>FOW_Zg7R5}{K#*p$ zWrq2fRyeaWL7J`xQt9j4!vblRm27-V+%gB+CipKt!WCJKn$mE|)_W^hMC&aN)DInt zI@or@+x#WcS!*D&;o2q`u90BiL6!(Urj~x1QYC6Cnk@AMiq&8#@yxIDg69%f3I{iT41;cLQ!B4EB0SDSX>WK^Ex_ zQ082#75g0C<~V>|ZD1&0T4Au$aYOx;fsnmnu(=TFY6IhQSQul~XMb{ap2YM^N4@r@Y>3Mc#MHYo~%8hmp)49jk)90U4ibAo!S8xL03t%997o zQzh-(Jc#85+nzjN+Ljc{bIu#G0lECHg*MKxUCHxg1jKTff#H-*D>sq$;CGY7aOCF3 z-j3Nn(_;6rpJ4{xfaWeU5T5m6u&2SmrwmNK1`WeCXtRMqCTWE;Yv&kPr-H3=3`8%| z%5C0BAPxVjqEeGuEs&-)q%zQQl}Ymw`axeQljg>f4BQ5=VkY%t%s@VM$R>5Tqcd>R z3e&k!Fq$WWfqg9jz@(MS-X{=ClS)nI#&&S*C24YF?=NX^+dv9~Y~!5U;Z9rtum%H@ z+q%~2O8zzU!H~jY%S>kP0)X9Bs%D=9>|q0wkBR+I_2)`~eFCtJ21ad!sqrWjPajXQ zgu$929cF}6HmzLsj6oourFiSfjr|k>b@qLgx`|VSN%IR3qu#z3bV(~*ygeY&5e9;f z8rTe{c-cnw#{GeR2f$xAgts{XEW6saC+q4ERGs5PzA%g`>Emmh;^l5Oce>*I&eg`X z&<0O3zB%Q_Zgsli-}>dop6YZ}sh(%!6lSh{R4IH2FusrRXPCW%K-n70Xn>m8g&@Xg z1K|}toY^}7qve+ec^{{E+46rG>CCll%70(e;6w_Br4_E()ezGQ1|rYz?IBWv;A2|3 zVmSZ`q2-r%HK(L{?f?^J+HT|t`xVCo`Rcd|OrVdKkGN|b6F6bRw5o=Wf7NOx&;B*w z(l`SHZd$ptn(LU**J8uFTI!h4Q3X30*UrrbBG>yVNQQ=w3d}80XOyVP5~=ivn^&^D z8=wt7SIB=YbqmUHm+eZPC(R(VVovB&bbF&^#wi)5`5Td3CWZkkG;{& za0KL1az1Fq8{2m3t{yIFQQBcE#VpEX5dLc09!nH%UQZC7MxdKovqerl=tWxL%$hs( z$lI(3F`u)Hco>8;+v=pq8+sV**G@g0qhYYKoqBNUq?N0l8?hCthaMs~b{k^r?ECl& zz1-N5n6rH?7R*j7H}(p!jQ1hXC9QDrJ_ZNdabW)V3OuGu93 z8*Ldu{Aq>3-US$)n0zrk27BY%3+WurYzl~Zjcre^*{vwl-3Hd&eugs}3)=H`(WTS`(AnU+yjJ} z1|~CbcQ9~Xsmxw<43v+!>p{CUmKl;vE6l*oj)5}RI0O-r7V-9amqEiGo2OUa)g zme)-lLbkIo0xAjd_jL!zu1{wxC6G!i61CiN# zsL-va951CHz(4}w&l zv&`h%?KXgIG%(6I%-)fXz4EUqpDF2Q&&9apYY=OeORK}2jCiTdjlCJMw1Awjxv|?p zMs?PjN+(>S^TL(p{6k2P7eVG6ro`U?R?G`O;q0r-uMRjq`IIJa^D=;qwqCK`;hJ55 zIYyHxgZ&f;cUxvWpTn7*gF+QEi3el!tg_5_l?i9|teX}TOBk$~Qy!I&tJ)tq_3%y; zPUO>)>N%yPpZ%s&k9?wC4zR{jOc;pE9p7tYYcj)05e!Q!+|8dkDdIfRz$QS7PZ$Ue z84au@(&40`6mto`6&&Re$D3lfM5mVI=!e(}9WQqm&TNpQRVTIHUjwb?83=IG3TJj9 zzByzp~7wYL^rIEoN zz*dU++C3dd<>sw-w32PcO^#NwuIoUn*Ge^DjdQ-dpytx*Kro@n5}|v|jeXEHUarXR z&}}|wFp=W6e_qiMjxV7q`tw9#~NVX*CRo^P~z%am*c*k%L!n*9uCHVp%&hk@`! z&1J$7xC@|4X|Y7Pv9}?XCpj^4W1F1e^)co+Z8o^#6Wm{gfr`bBCje1*33zPkAC6Io(I^=mKmLY7;HLP*xSI^&0JdD?&w@8 zC3h4Y;CLs6N}oS(z#%}#$=Go5o_4yDCtMd$md_=!;hPVzMr$jlRCt@4p!h|lq_7N% zzuUmji?qU-O@`u&d93EcO)$cZV~YEN||l znFO--wQBPIn;W}cAo`&K(N{TNDKp?295BVK;1-P9Vpi}3Nbojm4VaZy_!R7gQM<}O zkfa9I0;<_$Ao4Z)Vy7AqIjvj<_H(MK^n70GR8wi}D`5UG%awoBkel;i0`qT1ET3oO zGp-S>tF=w=Vie|ASICIZGpuG9?1xU1?JdJF*kz!5F@yPm6Syp+0TB2dUtm#qoA(3k zZUe({n^qX?0wD0=NWRS<1#K3k9JJ6XIe|$_U_f*=108}Y0{tPG5655Db?pG1Z{|KYfP4t8|Fb2~Cf6@wXqIpSe zoaz`jSj}u7FmRrM$hUym0K3+}ILE>@dk5#n(*`C_=bvLVuQ4!Qdcv7~)lri3Bv%`+ z36$I(W!Tp?fl8+p-o$dSh|fZDMLIebRjZlJ0oe5hA~$|du&CH`!6bBhvt=eb{Hb6< zUjySUH+_@_q|4KFPr3o8k>6XToOyD`plSb~2VJ`F$wwNvj!pkyf|? zM?2-oqpzoPo-~c&%&H+4g5YCXxnkLZ018Z=bmt4o>s8V{E^#v6&nglw@7Yeqvf(=j zVi{=};bU6i%x(k%kM<5K*fxL_lkrG!if=x$<9-)1F6L|Rf{fQ#t>l^=?qvK;wE-QR zjB$%iD_6!JAQtCuTJquB1~TRYQl)q33lQ7S5~*|(N4XKenH1K>PEhT>mI(NhRv7Ga zXybeX;e-u?o#nJKM9u73fbmhHS_Rt=C%`-dk-@G6Sg}Wm_uL4O$L1c6-yG<|!9b7N~^{c8N?WrIim$g=*@FKS5v=S-#NfmYHM~ybN4k6nStj4jKgU!HM1UWp2&Ci zW`Z9C_Qsr=mU-Q+xRrHVh=DW13Ma3@+qq&3z7`3BJ(<)^Mt*tEi#eHUQGbhR2_ zms&lD+x|dc}7ex|(o#Pj^OlH?{Gd(D=s; zMApV$X#6GvlYg~*v15^Z>$(ao8f2N_V_LaPxCe&;U+%hDY`A%E;4m0qAacEL!!3cP zO{P_oBm4+;oBwo#m+wVqIKs>Gg)?jGq$ocV z{T^WSrt&ub3jF~uEjhDGovmXxb9H^M({&F^C|vL9&~>eW@J%%gcBFG+U|3pVu-n~` zkdKQ$BOUr38SLSbe&=ZCcWTs{)q$fl=iFv4t^S5siUg(CnpZ6tpe@b-kwv+iIH9Bg zY7K3$C9(lJ-wBO(y0A8SIiayr({XQ|fs7C@lSlP}~i0j!ucyAelwF*o%w zi201wN*2o_Zl1^uIHu%0IoX*;-uiN-*g+TpAGi@fe&>Gg05<|Ut8{MTMu1G`wT{m6 zMd@JlW1elVPTl4Lrwv|5!t>-<$G}=OvnQPuX3cV$a7f7#)j;vZ4CgFdB)3>;WLjN| zgL{yH;bU64CHl2c-glr4es6R8-Y{tu4-og2H33zB9Hn8sOt^` zlV2L11K7O=CabpA@mmJF8esI7yoZLnIl}o%`PY^0p*%kI=q?Uml(GD4tjz$US(RT4 ze(YufB%W68Ojzz_LUo0)b8v9?vlz53t=#W@pro(eh~YHY5|Hmyt4a#(8ffF!mYFr=Iu`A%f-Q0^k_YO(u2&doY30t7kA+@MK}Cw0#lumN`IbCBrWMxJ_Tc}m z1|nbX#scgP1C!0-0hk$lzmSd3X(cV$9Pn_9ZBrh(e*_p^lw7j~IA8~Tp_{q7vWvP7VDxwLggqTX zd)~T<#-PMwg>CIgXwpEVa?9~csS9$+JEN{kgB3D7i z{VW0gB~Wf6kKsDPD`OwS2$y#js8eSkGK=mh={%btaUd`v4Wme!8n)hgI;0d}c@$QFDF z3Uz~l$=lop_E?BEFB*+9c3dJ9{* ztW;)4feG^sOjghH7%=-77=Py0`%`B)EA7=O=oJrc-UhXl&`&Oo@;GNWk1nH>TIJ`>S@guxa9te6!Z<*YCd&~Rpd!5#V) zs~ISlRv2s%t_6b(1QRr^T;;8Hs^xIXjlCAC?PuRde&@!1=!7O4-3y)2&^FaxhHX$iLnB{|6DdGcd{qswu!a0c~NOEd?B zuQL#NSCbq^Ws9;NVE0>Q@@3~H>}|P$$ybV17`bni%Iq4)QS3OaFyX%q$?(~Ncj(;F zHxB&fg@t#F+}P^`IGca@gTs)+Vdy;*9TH=ub(8yHW++~$3T zSpMFWCCZIG6VsWeg8WT>Gh~-a~8TlQq*%C~Z;a>pDCHzb17~hG=(cIV@ zA+#a(y&P=0u^&SlgDqAziid`XRTIp0}gex!c`@$Tv}B@Omu)OQEu#L#8Lt>CF?*PUM0HPCc?d{ zb}Zt#5eC}=u-TT8Y>ir@+r=DUFLbP!18f0GuC#5+GTv6w0ltD3(s=D_8Rl|yJIC)z zwbAJKE&rpdu8!Xasr>!`l$>KANHVQ3zXxEN%{LHUn8ILf!0#mnCcE{c!0*QmOs3>H z;P>+eCQqx+OY-|p!4hr|v@yoKLxs1V>4Ez#QT%p)8h#&JxNNVqdoU9XopP-Lvg`4-P zpu9!6vGF;OcgfsMtOkdviJ|HywmQ|;s$jFB+KUYYEl(?4-V34Hr3NBf(VwH+D-4YF z4rjIwsx4+kyF1m&+dKx^=xE#I;hRgVDWEei^Zc0``I+%`Sq_mKg~6qk(M%7~gz$Q^D3dp~>1f z7JK7_<2G|SI#tldw=wGZ=2NKwIo&Z(KCe1qI`d_PLn2I?-?=`^*Pva{=aohlnKaXc zUL7Iy>Pwhod`PLZ&)qP#YODaVH~a{Fo?~F>Qd;3Y55=UJZy?q7GYr-r9HyO<`#fFf z^N~WIcNF?O9(pv~%aNvs3f2xxDdv$TJ6j|FbJVPFtJ35Y?uB1DQ&Km~=tP(qOw5iF=MsFW{?QLsRy zNK;UwSinY6QDaPq#$FO*FNx)|px?@IukYE9zs_Z^^XJZ=z21HHUc0RKURb+(p)jEE z<2lei+ZQT-J?1x6m1BojUNC0-pdsf@7&&}&kKv;SO&(u4{(>QueSX=uD`xj}u*PeyKVP@0OK7&^o1<0ce>TnI@bAT*2sFO92gZC~J zMjI6VOec8pYxXG=W*F2V8pwY8778~Q)GivxBlas4mKzk%(+OU@dyPV2lR=5R?1>T^ zZjek*Zau7n?Lf0dX`~ap;j6&;xk2q_pSkWV-J?(#VKxUBY1;&py4Y+=?K60l(~ z3<~J!1R*a2rB-Vp*ML&%4e|v040_qiQHmGO&Eadve_L~d49~S)7RdjCy$XdM_FPf^ zr@Lg~&vb&3J+Nk>u)(0%`Gb%jpvqbqB=VL{ZopqhvO4diZ6_qFkJ++2=0111OEhPB zuI=$ibcH?lSo;iya3LU1H7NG1Amk5#9Bh!tc{)MJ2NC7P232C8LCAlB*6R#Pw4NR0 z7+$9FvKl!dv(fC*$z{ujt~xm3a&4!=fJ`fP(|jXPS#7|bO1mc#luj_wHvzJrL2*e4 zLKc8C*dPzE&miOzfc&jN9i)N$9P{fMgF+0_33~aiD;klPvmC?OEpk~}2TWrRr9R2E zo#q%`*P@ea`=(i6-lIr=@yoyxav0Ki8nRSp_d%1<26` z$vGT^eA3mSNS^%B+Yu09O(&Ot^|1K!X2oic>9DP^=kd#r z+~>XnTh1eP{9M}uQ8e5s(2~;$W@Qo}sX0nDkS_s}9j2!S@X`}&^^;Bzas(i$kVJ1Po&_Y|RFL>VFTX(mXWNBEv226@E;mTgn~INJPh-^vFJ9O6 zG&Y1FoeA=eG#jQi*R~|U(ox9&czdp>d9?x# zUn__xbps%0YP}o`9`Ut;XtwloltNh339@uOAgMh?#P1KL(K`|GHvkfjrb91t$=d+r zrHn=Wq?2pg)5&PeqM~fqIT_9Onz_$y4LV+8&*OcAi9XlSQ8e*qqiL=&FGURB7)bO{ zNHiCZVmn+fmuPOlxyicACA!4Ik!!mJS)sNRh43qooUaWCnd{EOF8oMtI=Qx`2!E;B zuvT+zXTp{XUa__E0c<%*XaZ=-pp}Y6wCgY zotw=&5-{lH20&7fiQ4z|u1t`rbaKn&9BhQVnJ5nzqf8o`8zRWIxRzKi-QqY6E~XPq z?J(f*jR1ed9)$cIh`h$Uriq%!`HmL+F=;S5+W;w+mDf6^Q6UGt{0@Dot;L@sI5!WQKuxeJ9TGp+_GoO^ z9R0+|wfz*fo$a}7&$+hU(e3!_-P(o`4B^u*(W0!B;aXxjvjd6lXcuNn$qiZ)m#ks~ zJ{z_b_S|A+)MqZyjBKvYM`FV9d9)2C`eer)Q43uINdEF$q?ZoBszANOstjKIYxJGF zEQg|Pp`l|q>L;C`mvaJ4tLNClQ5JOP9Y8jh^mKxdFFU4n&_LeiB!{TPj&)2E{a$|%ia@Ln9tR{fuV}ap1*Z|tbja;s z#^-_4tqqb*HMhjhbaI6ymTUWvlPgEr^K)%GIJqL~G)o*yMUbP=VsEyaA;{?jlXU}# zzs8_MKf@aAh%fSTlOsOA_X=M8Ne~~X>2L+hWlR46OE&~qdXi(Qs7w7Bl%fI_<^M)U zDN&c&70KFJVf0iW(aphMDqv2UT#|eV+s;NXuB*AW0|Erw7$8_LEU#4F{E0xY&JMv; z5lfxt9cM)Z`yQMXtEY0zKE5A-!|4QLxtl8kcGg@}0KUWl*f`K+v(TT_3x5 zI=MbS9H4S3_E)}J5WOw@0FX`X3S4Z08NJ)7MMgFVd8jKm(f5b@g1=&E_k$}q(cak< zIeFO9gRrI(jO8LQmYFVAo}C5q_A@t%wS5G(BX`oa%n`rLFoI#I24rJ{5-H6OT`h^e zi=PS}O)xJ-kZ%BzuSq&+V!5BbmfE0}_?m<*FPQPgAU-!t432biyY_GxP*UCFFuO*sTKIz0O-%A89e!Z&)wz}N%JSR{OSAo1oTT~GHbb?pu>NKsWd98HhEzx*c z6Suw2pt!{bFMfd|FH(|D5b_rEsx<~Bise&!@_q~Qb~Z1$^X8IwkRvZ((#f^$i=~j_ zR`e3-1>}%#PehQnx*Uqu_iZkRWfrs`)Aqt7T#OUX`DYC6Fiejgz37QJ37clFRjbHjhTdJu`52T%`Zn|B~xI>9{DbM??b136t^ z5AOhyZ%9Pia|GtY7Q1kX=Hkm;iGkkf*e&J<*mkii6nmAe zt~}W_f-IejS~}X?;Zhfbyd0F8Xpo3~Izh;PIhOX;K=wcYFEOYR4dk7GoT-I82t(mI zgA`?aG9Yg@NY+I#JtJMki(1`HuEf~mb1QzR6PXNJuI*ZvL(x^1VCA^O0**10PB7rl zA>a>aA-AJc*#L@Fbw5Y4sOpMMR)2(qs-AmuFgmY-;kQ|I*kXf_dm}W|Jp8pu5VEz? zJp64!5V9t6NL9~KmrMM=x%~5|1G%VZh@DdrspcsjwLJq$?ko?Z&qhM0Gv)OG^S3WJ2h=>#vn z+HJs$Wo~&+0Mj_>MV;nFK=S8i_%oeccXr2k?qW97yt%edyA7B>$_hsII=2DyE7Kt4 z|GHY@e-0Uhe8dr-J53O>8axv3=^p};YVveTanQ@ta9i=7ewco#o~mD}$71Acu^5Ur z(KW7#kVLta_xC`>FUEe*+OEQ`k^9`?ZkaE(TRh{s1$UYt9p|I8%k3&$b%T(zTpfzm z)sOUb*c*ho)Gkh)5WM&w0XfqkkG9VsWF1%9WJ?fo8gOng??l6V1@;56A{>XDY&9=A zkb@WB4oHejs)-=vORkBK>bZ^JV?C$ubp&jxA>dnJi&%TEbZkKk(h26Ft<#>Oo#!B= zwwrlJ9haNhUw{jxX3IXEYx{|w7H_*8VuGX-40tWnl2|{sb2&Up<7I8+@RtU~CX$P`>vd(bC=NcD;d=QW` z?ZOqBi`RFxBzlv5xvM47xVqB`HnJrc%gL@h!Q*s-kT2`YvolY&$gbyS-zKyAlw0v#9n(t8om|_R7^+>&hSABj zZHwv2?j#b5!$AC=<__4EPLTM$9Hm5~?hsJw9`ladQ_#!%Q0CMe#lH2s1l-|x6uDE& z(SkwCrA0eOi%yyx?gm;^7?fyQYy-~O2Fc(Bb6ANMJJcXWWAa)+ij~=VFpaM{L7a4Q zQ~M7Xa8G7?&b3{QE_J*;uh{2K03G>Hmzk{G=e`JAv;e#3kDtLrFLJVhMH_^C+R>4b z4MJY$xFh=U#98Rcm;M;S|L^=kFU!!esOoDQbP%!{kW}?#OAzuNFz62RPL!Uh7$RE@ zQuI!AO`yak21@MjuEZK^a=6%)SVIlu*^a#RG>{*GX}1}asN??;OuN${QNZa0$@?al zMy(~PhdUh8@Mk)?4S7<4Y2P3uViofkXi;rf5N%H%180drGCIK=c6E}Y+@OPy^)ZDh zZppOV9QMGqO3e-arYhHVGV(v@C(+5Z9f>hXeIWX(>{~}E(E#d;8eU;Hc|&Ypy#TFn}m-MJi@5khj9z!Jp{_Y0(Pg z9coab0o2ctSG1QL;m8Yg#l^cj@;22#ZU_jYD?wf|Of*E^10=(ASuCl!ysg9eLdU=NJ?{+;m;X~NX+b*Ha`{L7q!WaE0gzNzB1*MGhN{dv(M-Eludc4e zOrvfQt?x4tz^!(1k;wP}kQ5mlSHX;La<#1nni6|)CeO8G8=eAW?P)V%uWg;7%k|E!(N!(7;M@i2%&km2_>6$ZtZ4ME6P07(fZ`bM#XlVGAe+yET0UV73g5ymn%wO@c~+_m_b zYrDZI5tLOrxwZ$p{EK$HR{_bDQ?!tsg#4dxHv@V)L6$DnYn~hRl==+$d`NrojgBo` z8*|w*1I>%6EtYBT!emmVvtVI z%LRa3WKj4sogn1*z*%BYWLgk%i(a720g=T5WgwVSY8OA+K66WKrYkW9E!Xw~S7M?U zc6YlHYh_mn=5P$^;Yx!Nk@qivtTsq4NI@@;cO{0NkWLWt2S6@0DA5$#>gqu>Yv;Op z5J9%Ua>5aZhD)rG^Wtt;?Qw?Md z5Pyn6iGJ2z<%lop+Wo=O$IMGGB%L5Fo`p~>GpJ%;V15H1xJL6cmlo$ZIySNA=i2sh zlSo$T}3ss${(+mJhpEfT^sbG5k1eUVW zN&H;4d>dft<6tSjSS@w~e%s|=6xmhCKffGh(FP-XEBg5&OP0vXfyn=J+WdbP$l<0y z4zI!BV+|LZ|MlonT+2jqWdf$ul@?i1OL-BH)dpE&pFv8U07~(VfN1dTj@vFZ?@(6h z1igG3kZTP}^u_9RC?Lvr&cmRWI|9Vt93cMe0P#PAEw5jpN!IUo8x+vf z2`1}jj-?{vKjT;``WEyUuvDy`jsr_6s(JC;@w@=GtUuAV@I4^;S{F5tPOdv!V9>^F zinT3wG6{Jr>bY}ZJJ@Wn?4*DM;l5^?GOoLbB4l(RUa&^ zFn7xBGZ>xA^~CQ19-VLAi6quRu9igqQubRAU#!~ximt=v0UoE5%a)-5md*o9N7(Z) zl8buonR=F90ZR2UH&`@5mc9!}iU?8uPjxI6_0qL~6l=>R$mb%9B^SbAEWgtef4d`o zu@k=v24z2COK#Eh2YLC=LPSiv5=`r1?ucmdo+B^cNC$Jc&M~c_c^ibh5H0pfgW~2D zgnSi{)dpFj@p38ZVX;B6)dju05%sX%AVoiL+5yN728raS6ZCQz%7mjI=;`E^$(NW9 zY#zi2x-$Tk$N!L$?gSw>0p=AEdE zJrBsW2FbNHc=6r9X^Ko1b1tX1!ImPEdC0Y`L_P4kIEsv1+pkpemf21 zMF`0ZgW@I{^l}XHztSK@E7z| z8--{2J` zvHv7)2W(klqSrf{T|IO#w}Lmk%#j!UB%L7S$za;=4N5ewCW2|J3{vzBTYD$EMC)5e z5OBD8$wrV%-eoWtV7BlqonRgofPfiw#o5v=dzpMHRo$ z1+CZ@7)@Q!TG~y6IlK)wq;6@Xf!q^Zpl;y}gI>PjbPFMKnKlnW>tQ$J3-+Kpp97M@ zxkMARhcMr$a+_-)*P=}>HYom>DR}W$&?d#p?KGs8y^No^sjY!B=j(2kXRhry*s=i? zJ9)RmmWwfaY3_5Y+!jkJ2ea~pqoau7{oNJ|8l@BTaswcLYfvJ{_t5cY86=pQPSDGB zu4oR?KpqU&mKl_2w|Eth>kJafPbYZsny!|}%Un)h;A)ATCfD|Fu9mna<=VEzEamph z7nr%WyP^)cJ$KNAaF{D?wv=F2o^lI$CykdgP&6|PipdIk`92`8Hb|r-ogic{)FF3# zQE5*B&MNaxREOO#v4$IDvBPT>47iYs+-Vo6hi#5&o$X4&9G2=A@{9C2?1Tw^pIsQc zNIJobcXzZvdrK#`FP#v`;Ud_Mu;;M>4WNc3ZY{hR_4EfN0&HJjOmi+yj^K0v8s^t6}{$R2i;Qu_?%u!ak`Xak;(fU~9Z zGq;xBfo&_hS+TY!B3XURw%Fd$(k1IyO=Q0TRI&b zthxx`GK-;T;=ct*3IT5I!Sr12h+ixL4}t*&Id{w4qL~ca3X2Y#X0Gkau%#d`Rz&Qn z7Xl-l5a3mUSsA1+n#Wzyh)Vlv%;XuCL*_qt@lODGjX@%;=>#GBI&C2;n!^!5acTb_ D9EHh~ diff --git a/script/testflockfev.bo b/script/testflockfev.bo index 44e24c101645b38d3aeb82e7f0452cec5e55f235..8036f90d90ad9851e55168f05666505d12480a08 100644 GIT binary patch delta 1579 zcmZ`(&rcIk5T5N1ftD&n>8@-|N0)%2U_g|h!5HF?pn!@$L9}k^0!3_1yJ9%ii_xeD z^?A^PC;tL5@gNtEo=i+6Uc?wpJbCiuO=o5+EmRMke(!tVeDn6r?0$+Zp_YB2b^FGz z=bcYhbs%NC_7RB#kaO~m3n?e>=CX5u8vtPQ zzA69%V+=1fFI%Sj+4MhKmBPGQ3d7Y=+@jotpDoh3+6gBN72RY7|W*0<7T*nhpxq zvkIEd0oIoano5EdTC>_a!t_WPt;|5!cv41qXIRI&k7|D)>I+q=vw=SCz{{tB3BNY~ zsM^+kt7P@#)_ZgtxSfPPqsd2qar!~5d4cIpf;x6^+|aV1u;#t?ME$JUsx2uq^xT&Y zt2d$T+HLhCWEFO^s)_5yImEjFJ#l!(9H`zTe%;}qqo@B|~Na*~jV!^`VaypGe|aj7%(hi571*d~1G zfehKy@tp7!Acp5D;tmRWXHm~>_b$M|5yBe{5$U*-7AB5T6kd<}R8QF2HpX;3O0mA> zF!dF^gI^@Vv%y}1I*zGZ;od{@Ye`WgB(Xsf-9U4Uo@yta(=o|PufxG$@DDh{ BykGzT delta 1050 zcmZvbOKTHR6vywK%+x$gOw3~@X6&3g()gf_7HO@LMT>&(XR0j^LS;V9wneHgnC?x1?1 zXR=is%jy&2Txvjl)~DtB*GZ!ukbBk5;GDdpR)UXYLR|}Gl2dqV7{f>t@Z!Qu<)_rs z&=)zV7Q)-)W%W4xQu`fN`yxAKRMjKy=n;&9qnt2;nsex~EVc!-X~Hq)D8g2sLfJx* z=?SJ8)I|OxP7?MrK8fn3gCD1iXz}0}-na`mG0lmGa6W$Gsa~R2>2wctE8UG2JAIXC zE{XgDs?_VuL5TC)f(rCym=>I&ALjOOUy)_Jb|U|4%_3)eiI7%LV)03eb~MCmRC>sj z{yV^Lr=;%3MmjT?n1chT?mZlfSBP8n+w&(<#t5)bOh3e%ONH=s4;yff7H}SQE4?0E zAV=-NEV%%RgP)VI8LBrMQhR>Vd+>DV&th7`v-s`tw&T5whHEciyc?ioJeS->{GW+n RqADP#d?-<