From 0192fccbf06cb928eac098b3dfad32abf0fc370d Mon Sep 17 00:00:00 2001 From: zmv Date: Wed, 23 Sep 2026 21:59:08 +0800 Subject: [PATCH] Recover transient camera failures within six timeout windows --- AGENTS.md | 7 + README.md | 6 + orin/README.md | 3 + orin/SHA256SUMS | 4 +- orin/build/camera_risk | Bin 786288 -> 790344 bytes src/camera.cpp | 112 +++++++++----- tests/ORIN_TEST_REPORT.md | 31 ++++ tests/camera_timeout_test.cpp | 192 +++++++++++++++++++++++ tests/orin_capture_faults.c | 39 +++++ tests/orin_hardware_results.json | 253 +++++++++++++++++++++++++++++++ tests/run_camera_timeout.sh | 14 ++ tests/stubs/opencv2/videoio.hpp | 19 +++ 12 files changed, 644 insertions(+), 36 deletions(-) create mode 100644 AGENTS.md create mode 100644 tests/ORIN_TEST_REPORT.md create mode 100644 tests/camera_timeout_test.cpp create mode 100644 tests/orin_capture_faults.c create mode 100644 tests/orin_hardware_results.json create mode 100755 tests/run_camera_timeout.sh create mode 100644 tests/stubs/opencv2/videoio.hpp diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..4181201 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,7 @@ +# 工程交付约定 + +- 共享采集、停止与恢复逻辑的修改,应同步本地 `inference-only`、`use-can`、`lazy-inference` 三个分支,并完成 Git 远端与 Orin 部署同步。 +- 本机模拟测试仅作为回归检查,不得用它代替 Orin 上的真实摄像头和 TensorRT 验证。报告须区分本机模拟、板端故障注入、真实硬件操作,明确未覆盖项目。 +- 短暂取流故障的重点是期限内恢复后在同一进程继续输出新的推理结果,并重新计数;不能只验证超时后退出。 +- 发布前核对本地提交、Git 远端、Orin 检出版本及实际运行二进制的哈希。更新 Orin 可执行文件后同时刷新独立包 SHA256SUMS。 +- 更新测试期间保留原启动参数,测试结束后恢复运行部署版本。不要把旧进程仍在运行当作新版本已部署。 diff --git a/README.md b/README.md index be3afe4..e8d6e85 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ C++ / TensorRT 实时摄像头风险推理,算法来自最新 run_risk.py。 持续取图、推理并更新内存中的 FrameResult;可视化可选。 +相机每次取帧默认等待 **2000 ms**,连续超时 **6 次**才停止流水线(纯超时约 **12 秒**);成功取得有效帧后清零超时计数。单次等待时间由 `config/camera.json` 的 `camera.timeout_ms` 配置。运行中的坏帧、取流错误共用该重试期限;设备失效时尝试重新打开相机,恢复有效帧后继续推理。GPU 错误仍按原有异常处理退出。 + ## Orin 直接运行 适用环境:Jetson AGX Orin、JetPack 5.1.2 / L4T R35.4.1、CUDA 11.4、TensorRT 8.5.2、OpenCV 4.5.4。 @@ -90,3 +92,7 @@ NPP 用于 UYVY 转换、YOLO 缩放填充、RTMW 仿射裁剪;CUDA 用于通 同一帧三类文件同名(扩展名不同),文件名包含运行标识和帧号,多次运行不覆盖。JSON 的 `images` 提供相对于 `output/` 的图片路径,未选择保存的图片为 null。源码入口写入工程 `output/`;独立包入口写入 `orin/output/`。默认不创建目录、不保存文件。 保存对象是完成推理的帧;惰性分支暂停时不新增文件。开启保存会增加编码和磁盘 I/O 开销。写入失败时报告错误并停止,不静默丢失文件。 + +相机超时回归测试:`./tests/run_camera_timeout.sh`;加 `--wall-clock` 验证默认 6 次超时约 12 秒。测试直接编译实际相机代码,使用模拟采集和转换器,无需摄像头、GPU 或 OpenCV;不覆盖视频回放路径。 + +板端真实摄像头 / TensorRT 恢复与停止测试记录见 [Orin 测试报告](tests/ORIN_TEST_REPORT.md)。 diff --git a/orin/README.md b/orin/README.md index af8d329..3b96a13 100644 --- a/orin/README.md +++ b/orin/README.md @@ -1,5 +1,8 @@ # Orin 可直接运行目录 +相机每次等待默认 2 秒,连续 6 次超时才退出(约 12 秒);有效帧恢复后重新计数。Ctrl+C / SIGTERM 主动停止不需要等待 6 次超时。 + + 本目录包含实际在 Jetson AGX Orin 上编译的 aarch64 程序和 TensorRT FP16 引擎。 目标环境:L4T R35.4.1 / JetPack 5.1.2,CUDA 11.4,TensorRT 8.5.2,OpenCV 4.5.4。 使用系统安装的 CUDA、TensorRT、OpenCV 共享库;不适用于任意 JetPack 版本或 x86 主机。 diff --git a/orin/SHA256SUMS b/orin/SHA256SUMS index f956959..6bf7136 100644 --- a/orin/SHA256SUMS +++ b/orin/SHA256SUMS @@ -1,8 +1,8 @@ -04dc8265e15d57357a97f9907bd3b83b02f632e588e9653135950cb6bbd5a8f1 ./README.md +49a272525082edf5ef4619efc57bc2509c06653af262fc8a8d257d138f9206fb ./README.md 6d5e874fd27fcfd75d303d7e35d9672028af71041f52dcc82a1e83676faefa65 ./bin/drivers/max9295.ko 8a78d04ef8be44e9b62a5e4ee315d3d6d679e34aedff02a234bbf4d40e222933 ./bin/drivers/max9296.ko 3da628587477cc35d5e3f8aee86e718e2ddf16808e893e00ba6e164b2307e843 ./bin/drivers/sgx-yuv-gmsl2.ko -be91f87ab7a54de1ccee306174b65fc2fd89209eccf3f19daf4e17fdf17643a9 ./build/camera_risk +3a984e1e4c0fa12285967085e3359a5b7c698d744e9c2deb2480a312eb637c1c ./build/camera_risk 8a572f661e056e3916758a442e73212842bfe89361dd1b07b87de8f6ae523cf8 ./config/camera.json 9ba768d559fd3b64e833b50c62c70f2adfd6c169620aea5fba32cfb1b4c5b0e9 ./config/door_mask.json ebcd09e8c2e35008adbb0c1d222e580b17e0df1c8093df3481ba3374cd9a8174 ./engines/rtmw_l_384.engine diff --git a/orin/build/camera_risk b/orin/build/camera_risk index c1c3fd9c956a9c5e79dad95e1aa01fa0802487dc..9929599c5b467d599ebdec2d35b9ccd0f9570386 100755 GIT binary patch delta 153753 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 delta 151548 zcmbT9349bq`uDr46A}nVLP8QCkV!xYcesOq3;UmH+yA!zY<~zE2%b zRXufdb@#AyU2)6LqXM~^{%xB4aa$i+<&iXF*x$zNxw*3h_NS&XDT}|I@atb|>HTZF zNbX-7?UuvdmMNYHj!w=A#*%VbMey0KIrk*zvUwuF z)&^O>+~A}6Iqd4-QY3mtgo6R-cLdLe{)*ss&=-OS`{l67!O^KXtW;#h)&~nZjbhgY z&+nAOYGlz1gR2mJT!z<51D*{QAcw(0qk9h9AY*O`W~Ah>_kyeX=dfV#s-ztDZyECs z!K=W(kft`tIJ+eoBh7A3$z=7PC~XuwLza1? z?7@qJ)6tHn292y7mMZ(~OW7W%Ti2ZAoRN0QJZaCBvX?4lZ!DK-?v>@dBm3b}=`s^# z+b7AtTc!4}C?mPNqZa#REgqEZG)(4ur>xNo*|r{O(PP2ws7ry=E|&IwCY>`b!@mXFdxW=#6VcJ(BY}YWlJC zxSwR}ydrydphy=i>6y#i(&KKIW8=Bts-8J4EX%${@)VhJxlHqj=tZ_zYM&6c23`Gg zlUI(m%l=lznlIb1N!IOCS>x|yz4nN9z9%b}jgv(&X^dZX&)?-BS|}T=Kvs6U?Ar5W zQLWMuZj#-M>S1_Hk*OM_<1_}(?=^~DF1vD>>>A|XCnvdAN0ST_4w}3y$9AD{(o811 zq^HO)`KwcGogt|q%L>WT`^(rPTaYre1bpP)-H6Nw<4aP6qwuu)R_?cpov91b3q2dx|Cuwjy+$ zbdvMs-xY!;Uz%%|db%8V-GnX}&B#rjH`LZV6nwAuDE7S^uw$iFFH7eiE1kJn)_S$H z^F7&#FUcYBjI6~rsU0Lcbek+;h;)JU%v?C=`F%&ROzC>ZWlwCD4%laaU2-4U+n32f z(iqIho5j8q?##XpUX?d0Id!ld?;p~V^QAv{r42z$?W34S_Qhdo$^EkZPm|?v=`-*a z^u^P%j5B46Vmj-aD_!t@naktS=f0P9dr+piQTFKHrS==q&cP^r^KDV5GY`L6@pOED~CWx== z7)?vp`f9m!$g~TFdOGYWXbfX7Qr4#m+#}iqtARCe7kCjaI~T>qFbc zHLXC)*1`cRf14l2z(u(}t?IE83qEKme!>5W?i2>OZbXjw@yfrNmVc58yo78;{P<{H z#+;(!&vjWmw>25Wr)k!9MboxmnimNIUswt1Rf3$86i||7#ou{@Wzako{~k1q$Va;< zMUqt2Lh}awN_>>B-3tq3!K&$!R7PLPmgw_~miQUviTI`eu?$_Q;va-4c%91UYsEiP z2DS9GESaJVn$bhkl0|~%;L^ezpEJAds;ATUt725Lk$F}z(d(^x+wIpE?OCAp&~m@C z>Yb~K--r4L4~QxcuzA{v?YdA!*R&ttw6cDOEcBGp=qOJV(EP1cz$nGNRSq9mz zI=`!xk3V?+fSle{-&?6{2b`c<(H~qjAV)9$E@jI@10L-ZoIBv{@rw)9KiAA*L>mCV-vp*W#08*~H4 zN-u3xM|!Tgl^!1|{~VdW$n!Siejf_V&?a^yU|ItyupqAox~iLGc7gMW-l+U1s@_!- z%+`MZ6Gi4O{KiLof*wxQ1QS0Dnu98RIy!xMtItGZ_0>FMtV9*9Lhh}dujD^UIa~88 z`P%n3qlQ`9l}f%^>NB;KO1{lE1nGNfYn8lI>eICcl>B=s_t5H;yuv3l?5;%=xIxNk z+UrWbN+#%{y{F{sq}*AHD|yf6%ix?T+ILE>l=@EEPfEUK$UX4lWUcd9tAba{{FAg^ zkj0Nr^zmmIi6*mrKtI6;R;xY~2`oMD(A!r|x*FSSq9T^2tx;E0HZOj~;(-&nPpedl zniCaTSn-g9wgSQ^A@+ouhqOWEBHEn@I(JZDg{8Tu2t}39?!Rx=V3aE1M zX2tzZuJRAu;XAQOi&X(Njsz8I#R)lhjpB6MC)7c1^^@Uk&-(e-J? z4n;r}P~zZWm66-Qql%Y0c)%(^Tj1bzDu1u!@c)kCq%x{-B&brn(!uML6ZsuHstQ=+ z;4U?40+fsKSF98@Q~_S5c*wy^6|Zw}uj2I%-lzj5YlZk} zba1zdA9wJm;w=uY-P1+p(|TtYS$;RR!f8(yjjJMI(UoXF$b^t#%j671h>Xtol?XT3fZ^yiZ?rW@z<)$9DJvW-|FB+ zDt@Zk0ofJy2G#nX?oeoPtAJbwPgUII;JJzyIe5C_#SUJixZCGY1om46FL3a5<)jr3 z?ozzU!HX4N#H4dJ7&@wda;1!DRbnu;u#|W3>&pyA16NTtRmpWKzc5pj> ztAo3KunbC7bG%)#3dPeMyv0!KzssSBs{}<3ZWmnQ;Eh?<1m$*cyG6?!ykfK!f5APD z{l8s6g(E>+C8%=nqA^xRYaF~%@fruOSG>;V_WoZRYh_e#E9~n6#dkV*K=DQgZ&bY5 z!Cm95{97H|SD_TC>RzYaXJN&29lTZXA_sSmw+bk6@HL8;I(W?DK5crhzE z<5#@V!Ph7rckqDX%?@6pc#DIFd`i*kP}C`|J$j;7hZRqC@Os759XzUdu7mGX+~;yA zVoFiu;EjqGJ9u325(jTq-0k4nU~ANrT0F7;PgjaEM*^4P3mm*yaj%2B6|ZpcGQ}%T z;OKv^QdFIwfKMpyckqDXYaBeJc)-EKiq|-Jz2L(CLJmb#C8%@oor;GYJf?WPgEuN3 zb?~_2JHe&@+cRCWQp6kyS`=?|@K(j+4z3khecbHesfxEGxHbOLm7+DFkmD~`ajo{m zQQ%TM)xnDtPj~PV#d96Jw8&>!>T)O+s02k0Ua5GogZmXPaqxiRZU?VXywvAVgp{Jp z!Rr)X;NW4!y$)Wlc!h&U6|YphWBfp`!7T45M6&<5S z6_D!SWs0Xec!lD*lEeS(jH;Bvzf%H{Yg{uPBNxb!64dlFuC5*|1Sud}cJ zsYSBJCrQwF5^mp6aORV%u6CW=J}qYq^`}i;dXfZQbM)(@Sn+XpP zuAVWF+8V;uBL;I7|5~}#5ydf5K$!5K39l!-o$x5(+`3;awL1wRWc&p&T|3nuIC5l`!{MM41xd<;Myohk?o~Wg)yx*F7 zIr6ve0$aR_aC`qLHGZP7c6nBUHH4>HNd65FZoM&MDQgI~Ot5%}@H7jF`fFMpQFOHw z@^6^%ZiLqpjz=Urexih{NB*R4C*k&VFBGx+eTgQ*LvS5GjU++O4vHgL!ZQhPCL9mX zcKoyu-m8P+O&yzy_Rl5?%}f}CC+jl$4@TdcnhfG$3=KwP^k3frNVrKZWoL!UqvvN%&yG zt0YJL#qcO13O`9Ogzz*(i0}~|?T-j`L@|;i2opYv@Or|F36Bzv zr+Yhob`p-qL*fosVG@>Z#P~fo)!ix!?PIw979>U#(&mg>%@R@?!{a;2D zr;`K=2tR{xFX6KYuOR$P!Yc_si*R2RQOqU^KjCK+zJ~B~2oDf`F5xwVpHFzm;yyY2 z<`6|4NnpQtAk<;P=acyLgfAdGO8A9@?<9OtNBbi}j40?Hu#xbKNk(zP7Zcu0_!7cf z2>04t^nWW+EVUKl^MS-DC?`CX@MVOj6aIU`a|!u#1R}y}eeFV*bM@Ad1x_f%afx6x>31D&c=2Je}~r5}r%=tsNXy zaS_Fu4h8lEgx^MZG2yopUPAa--365dF7E#Yy(HxS-T_+x~(*j()Y|3(z8wgUWd!nKDIqu>d` zQwgslJe}~3gy#~z3A|${yNKdRlAwt2rwA`5{At2V2!DofH{qKT+^3ZiML40*$_Rg! z@CAfFN4S^pEreGP{ygE8lB51&_-!SMDw5y@!u^Ct2wy{ZJ>dbuUnIPS@RvH;9}z-C z@iIwJNBAp*hY5d`@Or{uBRop@HpON6JBcDn62u7KPIx2X4TQ%D|2yH$gug*}%R^-U z|0Yqik_7)CTzfb%3f>|-mGE7JrxX4*;kg|g_5UYPxH=S?_734iguhF8G2t=7O9+3D za5v$*1-JXZlqmL)1Z9N3Pxu1DKP22s_(z0S5Z*|*uaYSKMHE$pe@wWa@J|R|L-?nJ z2MGV1@EVI-`~Nsmgh+zDgx3+?M0l9+eT3H&zMt?Y;a_yLKO*cTivN%VF~Ywjypiz# z5*{b~E5e%zKVWmw|1CuEt*yXkE8#7KYmX#G!9l`P3ICq(bixl2o(nGhPt1UaiNZw^ z{6KgS;Xe{yO!yJPO9*cz+@0V)t&J#36AJAo!pjIhO85f8j}z`CT)nd-wH1Vmn;RYD zuaYQqsjzaZB0Pz3KjEDSUqg5b;Q_+!x8_9&H9n%~OcI0$??QMT;oS%i6W*Qhdcu1U z9#vfK|HZ4&_Rmg|AcOE2;p%OBnWT~MOcFm%coyN!gy%3a{#uA4mn3KqEe zw-4c|g!d&po$$O44*$<3ihdmmTo(}DpYS5W^9e5|+(mc^;RS@d1sCH_)S!?kN=bqN zgqIP13gHU~A4Is9@WF&v5bm?T=2#u7%9|B@B2Rav_m7LG}>&8OY@wGW!2H zfa(qq$an#AEs+(6{lAU6@Y0W$BOFyIZyg+zV}vWLj;KrXjsADnDAK(!4Ze+apj z$R9&)Ao6FBn~2;5ndc`A_z&blB7X(hL*#EEmn+#Py!?BBY7*f`$hAcN333CGe}>#d zWIhuHxDp0*f?P=CE|5J$?hd)!l6`X6^aQ9T5waoI61flL1|s)|+(hI;$h;t7z#zzl zL>>y+L*$W=%cbo5P#Q1>pqfOO0J)aPr$TNZ@@bHpi0pyP3lj#M0lARKXF>K5`CQ25 zLiXib2FwAdCJ`=xTubDIkQ<1+7;+Pl%OUdt2?PEBxsb@0LiP~(3drSDR%ukU9$oP*#E+q0M$Q~j;1G)SZUn0SC0M#VI3y^Dx{1W5_ zBEJT?iO3C*`JhC8Z$K_2@>`HSM1BWyxsQO|0M$hP5OOV%KZe{u)RB6mN% z&6i$IKu<)dCUQ39S|ay>+(6|1kei5H2$>H_7%&KOA(4kd_7HjG=|1!U0b>xMn#dC% z*An?u$PGk34RRBaJ&^g(gaKzjE+q0`BPJjJp8J6CmRr$kjx?A95{`AB5aMEsAXgLl1<18TehG2|kza${MC1m@d}P9aHy{@h`7OvETgJ1_8Sem;+W_)z$kjyt z5OOV%KZe{u)ROZLgRx;sEQiO>^rHIcI+*Alr8 zBV?@q(tvXT%1MMdkgJJ&0pwaDFNEAc+2)UNXA46^+@@J5nh};C3PfQr_AIOD7 z{tB|sL%_EHUIU8~ zIw|1Mx(7dh`nHrub*-hqKQ(yeGy8pkxZZ11fw#NSzMfCIG+DcsiSIvLB{omA#YMuERa zFfBZ$FqCG@)U>uY;;F{|S?;!(Nm|>CRISajA=xO1_6RNs_vz$LHQsQiZ1IItlhA}~ zp1&n+HLOhH{@u&sJ%Tw~S0=~MWU*k)){9d7(4e2T9NpTFO;&>OervmFhuqBhvL;Yhpbo#SasL2ZxUG<{=;X@NtT?l#S<8SOhXWAHy%*72KO+jv|@R%u$B z$R=3!YEI`wB`aUevnttOnReH&nfBDH$~3ehHEkg=Z3moqnRi6+z^i$aVg>N*slvFM zJ#D-2DU3tM#iViYd|}*yoxft7`!#Bu_qD8{vPt|WmOIi}ZhW-i{cG^sS9_yqt-#0- zMgP^)w%%EE)Fq4F_G?AAoKST7wqd@QRx!((FP@s!wjZu>OXaM#INCabU*RfRU{;%3 z)1LqQNPA9HUn0*|?Jg9PL;<>Tnx-9yYT7(80tzml)wUGzTXeQb!>&Z6k@+B=)Z?>2 z({>de^X-}5HTcrD419U|+uK}u=(w1->HJAx&1MyE^ipd!dq$@2J>FALl{H_p{~YT zKeU^0{xGZw2j72vMsUd|orA8wzc~bVdAk_}&^Ds(;`|sf0tN9=29BZICjZ!;Bm7LT zVEP*qb7g6V=CX~4k&npR|DRcHF8B7}k~gL##WV!gzwtawnD^!<5HW3!-RXvS&CU&- z!}|~&jU5QO{t@gI`#~C(VQfE~Fl@`tf83MLzr`DA2-UeFcj>c)h6Z*_sgE(?AWN;abRhdnN?J?}<%DUy1Sbn@;J7BFLH zBxMEH?7kJr)Ax)Q$!G16$ye_=8!WbG82%pHBXe1QsNHmb-|onzUvS?07m9?N-8K@5{BWHx=lkz}Va}EVA70K-)PlxyMEoZjW$Jy66<}xoYgfX(~<$R6G@Xa7&S)C9|#KS{+xowcbTo)aAV z-_dErsNj|Vtw{=d;+=zOU*#nQ3cOQ-!@ip0AZx!W=@lz*kCTI;^EcLDKqj$Z<5y#$ z@sF39BVQAZ>wwV2tu$XyO~rwUSVlt!M&WPlz%=|#|5}9IUyHC`hQl)4BEzn41owU; z;sm~#nY2gLvGJSI9v>orp&$4_tc+TAaMZWgW;KBA)7enbr9Uj<8%3O8{kLON0}Si6 zCzKmJ^z9VU8kw64T)l%6zpGG!zjyG7@2<`CiuF61Yh3mlwQYF$Utl$LST;5W_2`T@?P)m(sYf>E&z|3rFfWo6YcfSZCj{ zf|%y&WBl|V>?&4!CW#4fucnQQpXY81Avr7zn@OG6C0Suv<-wi)q+vo5)f_T&y6Nl0 ziu1x^>S~{_wfzC*pwcnKjCtaHus-COyE?ITENEVu!q&53q)RIMmneCEXSPenB8V?AS{qn_O_J4%M1F*DLxj#=D;y_+5u$`zJUgv}o5?3hK16ExB{gVk}&74f{t zo0+UW1wn7W$m+iAl@x5a5u7oAy~1VC)CaNilU{^FnF|K7Xi`Xo@&>aS8H&^oW^vtu z4-aGGlC}!<`@>iPyFK#bFxD%H#mtuClq}O#%-S>LinI!=hHz3ujYWz_v-8k_rhg3E zf=)gAUjg&=v21u>x9~ztTI>F0yWDddJzySJfAbR$JD11%nTy7;erW=}E~aXKhPiqi zs}mhRp7q5?>3DVoIlCvY=hLPmmRxk){mu3XtRyuir>FP?bJ|2!idbtVGJhhLE8om4 zVUtb(^Gj$lvxJo)S#t@y{BhXCrh*aQ(2aI z(PS1sA>mMezOjFr)>eC5>}mT973MeVxtngri2V`kA8m%0r?9$yVGWl{eq1Ku8O#^` zXrMhGVS6(Q*CoPFQOMyF^5-yY*J%#J4xJ_qdw3cQ3y3sXk+-L@iNYCxHBC*{3uz?wNT1|7AJI-KJijfA_dup+H z^}}{kq_P(q8CHvp3`eugQM1?rSRccf}vww@xtIu{Cea;8} zyQRN7+ctXkIlsy1^m9*UbnskOnr*v>QQ%58-gv*=)RO$WTg~^*XAAoLA8xYjJg4#Z zAuYN)Oxz?a_B3KoB01dT-Sc2P_6gbMurfAfbeOnF*pqORu*aWmJdbq8Z;Hrmm73lH zW=$D;Gb;>#4Lf~(#rddAK>50?Om|fow|VefHpdkfM*NEB%bbMg&zOTMA%}$L|9j8> zuF~c?c9qiR{(n`eYVOIZG= z)g$cr+GW^R5LnUzruPCiZFslr|WEKIX5WUbaJybrO2JBYRUyoC&x9;SaG+wv<7wNDfCoa*fY zbM7Lmp|U#Wxd)Kd|8n4MNL3^p*m%!&Ys_@-*kQQvE<5bcjtsbnd70b`n73Zc2Ew+d zE@lV*hi&l!GqRXXnShQ@*cOeoo59@)`~G8>f&sSA4o9<%xVe21>ub(j!t$p|Gh?%umPwc2n0Mkaq{1a=njEw}ZWVzT2MV_hz>fyqcWh{Qh6tJQ;+uU+B8!36x7f#I3y(0zu3%I9i1;f!*@h@shHJBB!Fy+!-4C;DGqi$bd8DEt+t_AD zYRWcVvBQNq#*22C=NK>8;p%K-3&O{5dTC>IlKJ!L`cTt#4SRinu(D8DX%vL6h+~Q|5lCbN?R(#hj3|BJYNb6s4&Ekro zq9^W$aQThKj@cf(`c^hY?4e|1n{VFAiU-J@&}UX7#Y884Vuz#IMkB&|2b&|8z&(oB zz;nf}NH(J=NqFwx?bvAQ20IMTy?zaA7KV9mXOr=1KD?H#{iS_}2XJLymKDFf0-tD#QM4^Rhb`mc;-z zoe$s1J~5{mtXJfYyI6#E3dmzC^U*s~^393>`-lZ1Zi8JZCOd7Ax#b>qFGy*SZA*29 zk=qID?%@r|q6V0Wtr`q|7&Qo}t>D(q5Z^E zWiAS_r_x2psI}TjOj>5nqpSpawC~(US==WlvUZ%pqviq8`}6F$NO!f(quIufb~u!6 zTyBREzr_y2TTZvrBK|U)BaYV&qtB+;aS(su&uOY)f3`8fT=giHgT`7m;B+}to?)j# z%(v_?BD(D`a(mqlgKtMz4FC2SS?~QpG>Urz^Q8vlIvgKjzPW*UQv-*vDo-CU)ExB~ z^IOvP@}Xu#N^+3Dqd{%4YNNbfHv9;hS|mhaE&%+Jxi0gN1HD{%YK)L;U698`y9&>lV7bJJHooKVdm@z`^GBHHQbz5&(2i2<0L6G+`vYy9+9H; zEK8XoPMAiRpVxQT1>hcGj(U-T&}d$X@I54mPq8{;+Vc`Q%H?kfr}9BD+SKvtDL@O91ak z^T^BW5eckrA8D?Cg_P z5Oe)Dws!#P6JzcXIAF`!#Ke&RZtU$v&qTk%1(MLA;v1rDr7yM>kEyN4_=_@aTz-;v z74n^jtYTa7c-jNt`B~akOSxirg6v)}m*(FcU!=87!058#4mR!rmtj7{SZjwpMaCLC z%!`b_*kL@2SB>yDFGkjFXG6NO@cn1#1I@4h$)0q@(6A>iXxKdnlkMF@@OFLy~t3c6$_eJ++;Y4#m(AME_l~o%f$9TDlvzM?STwq-Vp1W3}fY3|1QhJ3h>Ii z>?rRYIDV5RFXO}w1$l!3-HRy}cL8>@`PdZ~?O{)3$twb+$6AXK;2vXms>Ve2?P2Mx zYgpg{KhW!A%=Y(LV^KKj!JXjv7~`Vt?IxNWiEuEjjWrf1*`&EuD~_HaMwl6 zmp^8Ybq$MB?4!lYK4HsYckB~(HlMx3?Efhn%odwxe2QbbfLZY=o7g!ZZqUpWGiKeV ztSm`}j@h9|*}w7MZX@dQ&v3H3IP&;s?0%NyM(l_?jzhLy)&z_5m&ah42V9tAp54TT z%UI^hCU!J4AkHT5+bkVYhVR*I-W+1tk?MM8VSD#LI*v0;^Atffo7!nKxMKgG3{r0_VgQI%nMobp7u@89v2 zTvV{bGe1AT`X$YPh4+8WF2f??9%o+pHM{&*OvTw(hp9LLIQli4s+z*uPR;m+4e2Xv z7ZZ{wbstU#TsUACH)lNl@#d}Hu;Bv(qU8!gd>P-kEIt@KmB1p0+E7X4r(VSXHk=CgMP%-HwOxxWSGW&o)AK7!C7?IeHe> z`g^}+W5rVzIp(f!nHwRD#vb3X-buehH6p{mV?}I096R|Y{GQNl*!K!_x^({Z>HohRP>+>s~(hL)q^tZrtMgQUrBTyERd3S}Grw!_hELu|hHo@e&&s$=;* z!t$ob1o3Qn*)79p2XWag!)S-s?XVwvE`;TtYe$dw;Ki{>4RT=lhhg`%x_jd`t{rf{ ztj!bhkGMttlg>9i(1dksRdSB`RV$kytM296iv_Ns=CC&Q`!rGI_<34eo_DDEP#b$h zwgGeFu>L1DeSp=nm~*`oj9KE&_C$A^JBe@X;GqfThMzDCbb$B-^K$`2zO8y^gJD=8TyNiU0*@!7V?t z-&?ixPB8P^Sua)P3FhQ>_B%^JbD8bzd?Ca{Q+?OYF0=&K#QV^jp{qbZ=8QJ zeMsmhY&`E|dTkQ)6F1I+ejoB}n&pm|oR82`eu5PXS5Go`CG$ruVaKG%icY*pT(Lf! z!iVVtV{qmZb{;>?=pqJEOf;sblIG1Z4|L%rQ^M+EPu|OZ{%>+xk$VtvFI(gy))KK4 z$S}r}m{w#sj%6W@-!k;Klw~xbqwh8kcHx<(t1Hj%b3(CyqQ#m^a}nwCuH5(AYSE(` zFS+7`?1s_oY-?#PFyI&195oUu4q~S#GD3g; zT;8y|+K)$uQ&y=*Jhd?lC+xV*;hO>X3%Zq%ny{Zz_c-{^p$8L7JprjSYt(?UpL$Z$XY-6Jx*Og;jLc$l@ zagfLFkoWt(ztM%RWM}674A)PDwZ$HQE-=Dvgg@|8Txs=3_Pw=cQJT z<3{kCl3C0QkKsG;am`phA0Kaz<*va|>?1gi18|Xor=R@0?|T5pBVgiLjRzCqNai>` zg5_?9#yWdD)%Z8Gh1ed#npkAPcrG9NNdFIynN<_{yU4$^gl`t-+$9{x$uV=>sT|Kf znafY*vyx*Xp&34vj|JHeMc06MWn6LG7+%ae?H$S^K!R?Xyi_{faThV zsS>MBxSVu#H$3j{=I3Yg^JR3g^~EFdk;&)qogDt0RK|-Lzi+NN;e0+iD<&>a3ZmVO zrU6NlkVnkZ+C6g9`8vEfEOB|RcN=JVmKKpb*B$Kmy!P>G@Ax%a*<&4^Fd+IW(<35T(C z(E`4WSr<=uyxttJkbARYJFI#lLvhi83|ICr&4s*9#6uDO9+6p#I36hr+#!@M;@rRWv@ATF`p;$5V>}bn2Y)S$?&$wsO5Zrl24wHjJ!*_ zk_-<+SR6))yII2ZQUVFxKoYNjg!|iJxbBQQRD6Wp2oJk6kv@yWnC)gZW!R3uuYj4@Uf?t>^ONYVYyitZ>@MYKV(UzhiTRvbU6|i^n zHN36Iizq>qG-*Z-Hka9E+}j%Y1jORSNc>q0#2V>v+FKBF&^3);&BK-e7It z#OaT4>!VnFCEt-PpQM!q;;!yYtW=Wk%QpUDTZlWnr`dc!j=A|dK7E)>fLp?ah$Iu} zImR<~0%VkD^VQjA-|P8!tJSNs&H2~!1vtx*57_oj5glwjW82&O`g%SkMN|~0fss*F z+%4w%${XZdAG(1LwxlAn>rKo07-Gpd(%#;3q_)6Vkf-$&ZO}!mr1;wN^{cVagm9Pe z7R=h=$eLUD9X#zZM9?+=J-4{h&HP*WCSF@$?z)vv5TE)Q>&k^9nqeG77x}emA0C=Jz2lbQHuSTIqY@ilhd!e8b{br0_M&b^yoBQ6GETs+5o_ikQ{<8pZ!XWcbV3-B*eo`NNJu%VG70bbt;^LW_g ze-bU6U&9Bc#;Qg0YFXy&8h);z57qGDsj+grp-|w?GT*J?o-XKT{D&|Hrgvv%k9EA4 zS^NM`NyW9WNZ8Yy_5d%*iWPVZ4b7ct^a0(wy3@uc^zGUQ;0*X2^&r1MeBSz?$Xcdz z^)z38ke@2(kq7x{d|9D6@gZI=@j*g+yj25Z zE>gvpxnJBqVR~CHtykJM&JNVIYV)ETuUaAY+;x_vcdwK7i>3+nGz=24fqsFwdh&>gjWac9;31+SXj*KwR{Zb0)}+4*~#=WXC)L=VA@@uX}| zbL|HHj3{*SV`xqov;Hxw;SN1!HQcDb@sW62#9Z<>UWr^pWxSc@N1#2I6&kIm##ZE1 z-~Ws6x8kO6&f`{9RzHraAh*cl{4HVE>L=hk;absvt}Ju&6DR{zuj6NkShMS_=6<4% zKPcoG8<7h>H*e&NyQ36gD;C||n!BgjcN4!t*t>QU|4_tP_9T~X@aB^pjfPl9pXB|a zjr4trU&Hdk%01HVQEYDy7r=-opBAQBt({?h^fV9HQcv^BXXN1tDtSwM zkh%F8ewHZu=rdM7joK`Hsap1LrjhbzJel4Jm*sxI}_>M9!}%}p#$RfuMfhSlEFyeJiXSD4 z`R?5aTnOe5sJC3lS1;DxW$2|(>N%bPQK8;u-iv$-9`vyMRyu%oR4xLRO_D(QaK`l$hy9=+z305oOxh!^@VzwiQv}dWbvfL2EuzN`~gX%5wrkD7* zi!1}&mI3FZHJ7IO=eUvhYHFb0()Wkgih^bPDx>d1!ApBsXOf&6eemUmu zs+W0Q{;EVT$x2+OjFXjsPi}dc-!9s6+ACIDKJ<#Xsw6G}%Zb#>bic~?iIySJP>y8D}D0TvO>vRl2i9dDFG0#Zgs9A+FPm z)2ztjWFciL@;uA9e<7~q3lzU7YR=k@nK&G|d^@g3(*pz1(zj^Q?+3U-b2M-C310&T z^)vq*zbkz8u^z0=<&Bzm@8B)y2mkB*6uvxaKJmJ6g8?hOTjK7hx#x9Wl8oa^Y{Sz3 z&KG6KAYRQV9h_6uZnmya!Pe61waB73c?EL?G_CjS0*%l1Rz#nRYoIeZ}Ds7U2bNsew({<1CJt;FLM_B ziR1AhwlX@^pW3|J<&Q=_d7IyvJorA;aO|E18+|iKH#^p zG(l?Rvck>w4|(rl0>}&gI5(P*j3e2jo2KJ7Th^w@S6f*~y{4NpKH^hl4kG^ow{EWe zi2rV^sORC;osGTMyW7N@<9rR87;Has@N|iOuN6-}E@a^>!a>*_Q8Tj<*KKI|*jCSJ z26LS`2@$Z_Jk6Zn$p0})*wloV>SK%|+3q4{Ip(~k!En24U{4oxc~#Ur@Cko3M;fzV8?}Fj`#6K62^r26+3+b} z&Wpq181B6*Fck0$RajhzJYCst-eFl07CT>|mpYsrP5hj{nu`MEi&zDkW*mdE0Z$Tb z$FJEn&Uf{)j#Tij`Ri2mb)3&i4IdI`K>leF+~|B=?;XIy3&z+h#f#uCciaL05EMCoSBm$=6vY>2p4;%m~w@h`RKygz;UJ^s^=bp?+_&71># zcv7tQvM%PV132)HSw}QoO!EM*Ns1k-?P8Ao8uNP0TZkLZI6E}I=EX^|f_+`gU0?Ic zq}ane&7AfP_k!W%aKkquw+G78%st;&x#i(vJS{TdTYeb3(fC}gjcHxY{1)z45>DEl zup}IluuxZX)Iol2niuwqD{`idH8&sR6)JMPYb5`BUd)SdF@lWIS#NjN?iH6c?TfUw z`8X+#FLED8X_u=w?27m{%mn(0Vw<{6QX!p8W%kpJHak58^6168M3a z==q{x;RF>G*chqs?-OD3%U1q38L3<-aWrE;79%3tH$k6l;eJ=7bw z*f8~03&8EF%wt?WA)Yw(`Qsn0jK#wn%~*s) zA;PpT>@e;X_>S@MnNktYHul&GceeTFF`V|r%)`fcX=kZ-4M`ty_cO? zS33<(@;6xez;Qm%C-u>6qYc+YcK+hoS24GU>uGVHvH^|wt)1SVEuVX{%Q}F#VyK9> z$TVE!jz!$PwOtJHOrdDCSKEHkYKCa*y`n{LX*b9IjIq(tg1(>m#REhGi|n0UBz#47 z6I!wTXI|n)vP3IxM#0i3_b*%VMi^I$Us0)Z?24dOuW#p1<;9RH<|r$s%DHcvKBWu} znJ8wlRZNU@R?O}!QUBX75p#1|NBy&``o~bInDUzYcIjmp6v}A^FdeV{{hAH5z8jcc zGVlaLI{msKc$z`awH_$%%XM`Za9OCcc^TJNCWkTagfR{1!Qz+)o^UJng~ICh{?Kk> zUg)rTQLAiBYPGppr)H-l{T8!tP0~xm8;gndI|uC}D*J2gCpo(1yCl5`-+=>9{|KG+ zFJ?+!d(iw%kx71K2HicWgJc`UFTgXPS071hLm}`J4T9dVRLY* zUiCln6Svz_^%8NumFUuG$WJ)YRlmp3Z|K(HL`Q%8We1JwOgre-&bqg23=5qce@Ad| ze5kXIOK0)!JnpiXgS+VN6Q4-ghcZO`BRFst&uPeTt@WD6Gw95f_`M0gk~d_V8@lMj zdUZAK`V~|5b)lwAPWvtX{BoMJG5s*;*BUdYt6pji!)0Bi3H^V?gbiJ(2}ir?%l}9F zqd$G!^eHFK1l@@V;;y$e2mSeZH+`OE!o=?SQ-l839Ah+L9qw*!Pt!BaydHY~iG@6~ z{MYNbqz9ZPj3UF1DHK;WiRt=C54~g_x;5c6S6TUm#XQi*a_X>{M{^Js&h*GKI1`@i zw$~By-7bUh1e_=dBR*`ez^l{Igvi-ifj>z{FaA$!7G>xq?h~xZCDy1VSXv{N;C;9b ze-^)De7}HCVS#v7Wlx6g#^V4Oh&erVbt8WltcUA`k2GZ)UtyTvVaG=;%dM`F`7W`; z81}E(wU1^S7ur0YZCqf7G3>Y6aS&fTVjyksXB*;l+Oo%&ZLCCr!pQ6FLXq%vM3x5O z&c++oydz9Drr8{KHll*tX;AQ`Dxc+GGA(YGh#OzBAQ(`Nusz9%@}_Bh4tUL}nfeHf zv`Y^EvX6Y3w2wZ@{4ISnKMO0z34L@SJVKh_?wGbZ`p9YnyhxX&7g>*J9LUo1dyO^P z@wA*!QkTi^Ma{Xsm+rQn!q{&&CfeWzQs2*Pj=GDdFl1q9Tk!;o9sZNe(YCv7j_@Tm zk7gScn3qI*ooRO<%2@_h&VBGGWcY{_5Jo{4+hJs4+F@jJ3Nja&+=b&SyYM--9vSwt z3r8MT+65tRwTQ^hKf{iXIO0K-@?pZIQP47yAkEGQJQZQ_^+=D3>z8=8K0HZ=(sOhl z-YUam-N79F4zznT-|Rb5znX_~O*2)MQdy5kk|ekfKpvDmx)He%aqz9jqptmakWK$AEz3?`?Q+rGL58mOLFxv*Sho?Az|_L z_ArMP=tI($!d405`R0-Wy$Y8ajRkr>K3WU(yd=?yW^SRrXl6iMj(@nM-Q0>+L%T|O zH)K2fE(yO)!v9EwBauS=be8lIGQEGGKCvj4yP=2tj-MaVSK{%LKAM(={8|R!q~r^| z*U-JXzNu5_cjl6TdMmD@;Tnrh(Whj@mf<#&{rx~M2ovj0(eJjdG79{e=CncjEkZ(5 zMl;P_gY+p~W7mpJ2u@kIHsBuHU|n64h+7v+2J3Zrm#DUYe80eolwq1hdWkEhg?h-RI{K29*^h5zR4o(vu1L?54|(8A zi*W9nIaH4&#qO<5H@_UJtLxkXZxb#NzSzAD8S)K|^<7Y-WNqI1 z?s$6&HM<72y|*x3J`=ybP`e795fe=FW*GPKp2odB{SUqhi`S1td>q=z_)Qr`y8Jj1B8jX-!Q$`j8h9tpmO{_>B|&0Yb_tBJ32fIDvxEdZDT7MBT5Vh;^Vu zzZY{u(Iowtl?>-_!%oF_uEZi$r|P>nK4(tVw}>x!LhPe%9jEK2Yq~yPe3Mu|qiHNo zxp9`%gcl-E$*_6HbbT1Mu&Ce5)2%USO@{bBpGq}?Q9qwYf4*P9xtJ`upkpx!m}N7t zn8ZYNtLL|yOD~kw6>{XG8F~`8?D_n3-6h}Gd)F272(NZ0&WL`%t9qzA4hHb;33$=} zyEF7Dr-rRZ+^jEtdk*FOfUmo}WdYs`Lrk%=75hgS#GGmf zeEFMphQ_itL}IN33c@)}N&>5KqsE7M`sa z;r_+Iv-KI`(Y%Ut^es@JQ}WNn>@A~AI~TKhI8uMEem6s}LpQrjAC6Posxm!Imn3rQ zTzw@Q9~NhzW9HglQkD2tJ#nS$#gxxxZlCJy5}oQTcTW;6u@#G2q~v${FdPD#%P-JZ zbPZhBgzq$5kB1XyZa4Q`pdZ8Q!Xh+ZpK^*!&VFp4CvF@hV?LWM91`II7rvqJR84-% ztT}Umep8B!`sfjJ-Q{{8GrmAiDGgkct-UD97thn@%oFFdFK)!*)v>^0QIRjk3tQb^ z&T13Sa8yB`yP=m{VsdfCUNCceWYmRdG0Un&3-uDKsO`sOQ9ah9@}i=uFmuO3eH^OR zx=_C)FCY|0@SIIG#m%CEXfJcvMfx?qfRu3jENT~n z;T7@r_n9c6fAZxcCU{@yn`Sz6fXmGMD&i5 z>~_jrBPII_W!ebI{E8LChe>%QjT0Iw+4Y3w6nKY7C=Oma3UwEmV;5uj=>T}vSXg!u zjTAlQ|Izm5aaC2_|M)rgOemrzvmji+#CcZ4i3?ax<$xqADi?4{&Dk`yxMFE#CC98? zT8Tp`x1Qul?M9m7P+FFvrdCcDFg5Klb4XF){@&{haOLrNeLw&F{y49*_u6}}z4qE` zuf6uH!P2~8xDbQlrFg?^F&d2K9Bc4JYcQIRtcKxI9!i^B1GA+>;Tkjo_O1b@MA;%V zSiCokYoftAd&7#uSgQ;nF|s-b=n_IkyV$B>)LGjBjtt@PSSY#c+*5mc z-9}8!-EU8?8-}}7uxOSiMhi@_3zK|GGzoS$cFnU3ZoZrD&DXQaLa#B3Fea3({B%@nYv(+!F-6Z*bUD2|P5LOj|Q*+8hCw zOPan@bA&}kjTP5t>2rn4^-AI~j+oEAb}R}d8T`CZES6B2{O8fI0Ipt{3dhz?6+)SP zp5WVFuR}Yg_~=587+VF2)Dj4Xy)o`=#)u;)*HTbjuUvh$W}dK9N0~mKIvhg2aK7-B z?uvT>mWBq~@`BJ5HaK*6W{}R-^DhVvgIFvqOII`T3Y!vRUlCH# zCoXzLs|pQj3wF(0CN$KnYeeFL*@{;XP2jmTj#_^uI#ikT#=_BFyUyyj#*KNPZ2 z#{3V3Wfs~(;HRp+^$nEfae^n3G!%KboRjs<7yczaPblu@3plcaExd- zAu-K-L_s-d8_C_cY;2>@%ea*li`qEMxnd(`l=C{HD<#-YAbQn#!jTO`PlaRM;VrO{_yB|4mYD_*`rME%Xw7d5sGsYQgN% zcHzw$0E9Q^OKNbYd@3%;XCdq35-v5;vDg}@7lM5X$_8>3op9X=CLV@-CAf?f5Y`4o z!mCK}UXc(PQfLZfZk6XcSPcxCK(Zr6LUV&E$egE0ABXG0zx-?AE1@QE;4b0c3I~cI zlT6qxybR>8?iPkYqR#9V{4HpsSjmsER5vjewqF>6(5d@{iCW90BM}YR>2I}`+x|Nt zhs@Bz1F&;(Bho?4G*}S4?0cb^g=@&R(BItv`&YD_M*kp8M}|NCAk2da41V=JBs7=k zw%bBB=a7)jSc&jByLCv&@WJd8-C-2W(tk9gxL*BHz^0T!SN>1J8si{K!V$shgGq5* z|LF)}6ORbZ*|5_XlI0%}!hG^HxHW|B16;~OHhJv&5n&SuE;%GLWjjldQJ$Gm%+cyd zLykgC<+(zR37;C)`+?&EZrXF*JzfpjbV9RI&zul?P}GycZQdf_nCLG;=X!Z)8F@+e zFg3~%&IbP?gm^*FC};nIu^TqJ{35K-#|FcGMFr~A7B^-~;4`Q#{8cbd7T6lAJKAIF z4294N;;sqG4^_8#2Q~anSZGDLFs9-{F?|>0%-e($N6CT;Sp{REEV;())8C-RbX+4& z3s*rb!jUj}ZfTl$3 z5$e^p+C6vI6Va}iwN$YClDKJ1<|5egQlXbm5`rk$RZ=R9#w8YJYDW__%R6&Ajz2{VC+v1iK?x?0>w2r~XG6T@#!iiM=3R!LE>NLOyOoq0D#wCCoE#F}^Oe zR@^*|*8E&|t_$t!K_4}*6c&oz3VrrOM{p1NR!%D8D)XZ35uf5E0kAob$M&?msLY7( zF}p;AJg~OJe$G~Dk5=NNI2${SK^O+8qRlnkBKicQPUnY;uUNQP<_Q()&|tsD;u4Y1 z+w^0ESXb;s6qPg=(K*JlzAeOFVs}7XueK29VfWf?kd~htt^R}CBci%tM27suhPL>9 z=u)jci&S!nS6s@#TrnsFrm@i=s+lvkbG?%Qh zv}CNk7_R^`u6l39PPG?%>7L?NEUbf=sCyi(S#}38z5zu8PY|^YE}U-4KJ6gR45vy? z@|hG7g>U>=8}3>OcgjAvqXBT%t)po5CpJdevLbMLq%sNrJ`HVbN=LDcKNX0gU0w!L z5%=Ur+ml?Mb`;0(VH9GqI*!G_7LCUCN^X&lzdM;PvIf{#OlPru`;smgTa`gcXr$-2 zQM{Q2*SpebrHwcFp(}u0u%2e6$wj8G*Cy`y0BJV#TK#E09YMBwEz}o7G+8ZytYWF4yBOEHq#PW%wM0?(BB6dk4;?)Tfr`gg zLR{Kaj^xDdYU!_cKE1_(&|i7I#f8*`*RzTHWc=|e#z3trZ^k0~iMX>7 zvth2j{lr`TP)0pR!@9B-;#s6)*1DH(yfceeTiS3n3C|V2oh4youaDZMwaqngjQ9#q z*O6T>%i$_Kr?`qbtrMy76#9hQTtbHU1g}sim*0yGwu=XG^mi-Pt?H*0ku8p zBjCxfVbsj!HN_lxwl&sOK1m#bw25NKG;FSQB~OKD)XOWw?#GMP^FnB{w%@?1w`0fGsgoXA8Q7FN{g<`l*p{P;IyQVJ` zhw`0_Y_zWE*?0I<#MfjGd)C#b>tc|DV;oe@4Zx$Nw8yfWi^Qk~l#uqUm2JRoT9h{C zMRBBFSr%06l9$BJH2d1q#&$TwTg^)Xteom^k5b*2EMK(jX{&TpUb^9nZJR(-;@8Jk zN&kBNZ0yuxkv2%)d7?5qzc=ffE7}c;?Y&)Fa>avk!;*zVI4pi~74~}E^5!<1YuRh! zHrUA?7gym2?j^q|Hm_H52c}a1v`@XJHrKp2#Sp$>A(&H`pDU?R?%pa`#@4wTwpKgWx zQ;;Ea*@v*SMR<6~F8TYx&xK5hK$-M7)=aINH{vkQ`yyQ=i4x_k7VnDnN-nIhRsOyf zn|wjQlC|Ot5YQ*lb!V;EK@#0Cu~_Sm#hsDskOdN{J{&wp3ds_?Ra(M<0h>&3FrGX7UK2e{kuB zY{c6*Ag9u|UUtO#K{=JeXg%vqDLIvUkj^w zTV>gFR71U~5iR1!Mfk+CX`hQtc^iBCbMX&fO#wn}pQbk_g-o01F$WNyA5|`L3O!Ht}AQu6* z|9bI@6E|=MlOou0nH?guG9yey1Rm|bxy>Fi9@BpY7WJ*W)fipLUx`t&VkV!mOZ?vS zxO(hH1?ft6STQLnP5&O)BjRC`Lf4=B#5kI@Y5Kj`%F?ui<{A#%tYR=f>reMo#yUohF!;4oHz3hCJq{}M5r#!*o1osNnx`{>Rczd}NF=k(L!M#C9= z7Ir9fzx|wur$kPW+*&V+A1I4a`l#Xrw(p|&hqw=5SK%cwTo8-NS#m`j9123MqO=@0 z9N%AL+ggrYPQT&LZ^M>%5EqNH2s?0Gg!`%(S2{^=`q}{`JB2RG%a*0qNS-H4gDv$6 zkrlRawp62vW!F_7shBseSavAtk_%OAFUC-N@Uh~$QY#|}kL1nv3VPR9iZepoqH6aF zVNdx=VMb7~q^5cWxfc0K0~@p{6hnrzxQw@7qUR@8mIfuZI0#`}f{zxa*5Pj@H?BYf z9eM0lW9b9S>;Gaa!=%j4g=@;I*!Cn+M&M~x92Ddngonk*PrR;5{W$$%kF z9;^>nY`8R367z|Ti=w0>R^!nx&PQEyvWl%oLD%7P*^{KVNj%))t~<%n%Z8-nJRxl} zoN;}n8GI9pp!P??hu(*R#f=OKUHkh<&x&*(M!Tn_&TkL=Rb{uHmf9f^B&*T!D(1Zo zN4FH<^mrk&4U&!^V>Au_!4j=(YFB>v43YlA@a66hiLSm!d225#qJA;drAyh{u|q>8 zZ5IkzNcytkedI=|XgQH~_i1h{C(_X-&5d0s+Wq0FDNf2EBLPL)Eyu}P^?GL9xV z8o0KkqQ;s-Q1I%U0}DVXPZSo1e2$Wk@J?bN!6;0-ns&HUNE{z7-9h`jo+g=>UuTbm zJmj&#^gbq#toX6vAouA>F-~^lDeOC0&}~ z1M!oAQG0!6^)O{n%c;#q@<63#AaVa4%m zc8!ng&Q48~-Y~-K-Px2$(j3E=-<@5m@p194>}RFs7FfP0?usdr6_afnY?V}a*A(e@ z(Lvfhf2uTHETq$o{?AFR!}Frtxcw0O`#2Z`#A%3OUX-Jr%H`K%>CZ_`abFq?!89peJGkq8dBBw)tLRuHO(?mtr%AtB{G-vokTPhG z7Oc7RgV^AiQlO%Fii2EJW=elcJvASc!DdjXxuFa`Hr-GL>rFS5!CJU=jkdL52_|A( z@6D423b4X2ERbef_!2haMX8%FN^{*okFgf}xz@Z01&4s*m!veQBo}E|c#cHlrb#(c z53Gq$p>XL9`_v&_7fV9Q>$`9X<|2z!xR^Ah^<}A3lR|3@E(-n%PrG4RqjVu(vF{+1 ze}ka~6vZ{;Woa<*&$sZ?|Ioy)US z8iy+pk`RF|$8jK=q@E4f>{lgh&0d(?z_t5T$;yZ80{}+@weEo`+(yWCMnR21K?B$Q z*Pt@$<$11h6*5|))mH3UzFgYK`<6VPTVJJZ3Y@~KHcCNk$eU7=Aixg7py4=MyzL#> zt4pv(mRp}Kc~k0%6iE-Ka3h5!sXp_(3C)r>V9&&eOSlY~vca)8mh+a>7NM>!Z%Hrm z{#G!*Y>A{^L=0ZxD(GNbLZ0-1?&BvZ^JWTe#zJ)TDPW2n^U^D&TKA;=vagC!DiR~w z?yR{XMy{0-PF&IE=Br4fZ={WV8;pNs9$>tl2O4$cs@i!>L>{zk^Zwo{7KNDFWR@+0 zEv$(N-56yT)geaA+*&bDAttSfU~eZBO7J_`N23FiHlku)(AEE8qEQ3vI@`UzcXl}HVGbTJ=zamzH7wa#xXl{po6hw2o^($fx zHw$LcXdOFkq!GRW3wumx#522FZs|0M0hy9xbIn>;i) zXj`!w#&90nxmwazVQ`P3+mFSpk!(^PR7jp{(i%zlAML|ic9(x3b<5HDXxLm&c@grI znIRZMJGV^&X*-um;Ca(sjOQA>+;pT|i{lPbyL-9m0G|ejG|;wZI;!LqAsK~4zw(b**HklX%uniw#6szSzC!NgfyCA0KMvipS z$#l0f;mDCrI%#l65cB;=8Udqf+(%L@EHXTgt!~7iifpN@=WP}9a|M-$pH8ASE+$hR zi*VU~Z0lO7vrpcBgv7x2*IEfj;xE9LjkTMwd}(`JCOX)EKrlU_f~@lNdvO9=k`6Pc z`?|=sROy1xB@yD3%wH6-uwv1I3Yz+c}SsFZdmxfzhmN@Zek_G z`7ouwmPUp}!J|chS%2+s`0FK94yPZ;hg#c050+F**`kB_i>997>(!Y_OYy?CkN6{b! zO8PpFBwN3c+SJvOKs20xYBl@iF3FCq1c*U>EDe07?3NZQ{;+=LMkCwZ()UULJgc%= zGFVE%?6+d6rP3IXQ5*0m%pPeo2D@0CckMyXTmo4t@op-}8M7ADOoDK4V|&(PuWp*@ zZDiqI>6WE#iI%Z7QfBNfdSn8zoIFQ;sgRjf1-%DZo(b$l(y3rXVnpohTWWpUmY7Z0c)=#u(xq_M&CIx^uGu^=XshJjTs|g3rk3E3~$?(t# zKn)Rkm?Pg~bXr2kk$Rd*9YLmX%0opDj$1; zev+CtC3(_b1<>RI)>HFsRoX@)9x|dy7?gPOVQ&e`IV{=#Z?p(UyyYtSh}2V;tJ5`9 zXwQ<-@p`JCn>t*x!8aX|UbYs3)tZ9UJI_m#M9tOQE%gx-0dvi8OX-@~q2XZ1OQn1K0vB@C?t=v#Bs^X&jl%;!5DZMhVHq8} z1TRP*>#_g5ARS1qCeD1I&A$*6?ngW|gxedb^#OAq_H^d32+`wnZ3vS`rd|}dyY*k} z+)a#~>s^!%VFs%>z;*hfw1DSh+3?HK$kv!*2~g9vRN zCRNzG*QEAV;%9!e*W|=~u3{i?P$UXtL#{~~%{6;gK-K(>^OSDfw8Oppe1ThuEa(E6 zp{!n}rAP4b)HUf zg4TYWvjwW-KdWM;*-ykz1Zop@##zP6F}+THb83_j(A4N$glRDN31&=8n)%S z6xe`}c_nZizb?(i)ii)=b(Zh1rUL~yRRTuf{g<2446o2eYP@&o<(tw7U&5$Oap9cV zz*`uc=_&JWNvB$u5YqB}wxTl5+#5hg#P#LVb}kW?(-$=&pQ&`pl!V?CE#b*fBAQ%Z1}_qnyO+$DzvaX{Z~>UO$4ypJv8kS zmUmAJE75+ghWDj3%nq8Dyq1DmT=L46S4u+zp3#KGU+s!HAO694pHvc%>y^?fJ*2GB z!y)fgNpFM*0oi)05H$(u#}wO_U#&74DD1&c5zSiandTu-z9$#05jg))D)~;=hN#} zqh%QJCQTR^oQ{_5|6LZk7gjF|u6u|D_5dXe zhGk9V_)a>?nmcNrdNfMS4%LbZ?%ZrD_rbl2#X;)JCIi4E+7GS8fcquW4TjMMpr*h$G&`Ao@?BH55vDxGZ~Y4+SDR^^P0(B z3?6H9hAvk#*@l%7nmfNAD_%T7s1Qhx&{GT}(AM zYJkL4bA#(7rkWdECo$FBjv(zZKsKWb3Q^)Z)2((HW_R~4!*{L zT7I_wU&_FId&*Xj-@2!qBS0m6mLR8N9{}@7lD~&CbRAEULoL2g)4Ddabzpb;$ipdQ z@Dp+rUlZbP#TGs(4?+k#^rXC$VhrmmkFm6(wE3h-^E;~ldJmnii3^&w!0>C~#T{Iy z`^!aq48?F$3TtQWL?LN{jz-L4g4;T|TmwNiv@BHT>8E5roe-<0usgGxPs{IUlyN%1 z_4Xk7X>5;#Qgsl-j_GoyQKI`DUD*A>@}!WGgSb)ehd0*U$a#q?IDnh{et3G%4ekS+ zv>75#YF;=#iHrXoIOb$=@iHcQW<}t#h5R^mX08sO(Tpql*dE7xhiW=@+)%lbMA|ct zeK1sxk{y9+l$&S!hRXY)=rIpNv$2p~sP{M*OOZ#=)(Nz#o2iuC_0%)+R+z%?rpZSD zcRc1go+i8LI5CRs8Z8HCX7U)h72mDUt`#$09sRamD64ihvb#FM@ay5-)Kt??;nr@h zb{X<`K@6k@{9cwUK*<^@*@kR+l!a@{JlXPC3)jGvF;0%)`Fu8ZqMT;I;jmNV<##PM zygNDp!r*Ae4orX_Jx0!W8JEb2cCIMN)|R;@%HN1s{J+lTPm)JkvaRg+B$7RqK%m3!A;7OE|Lc1H(~FxT#>vM5M- zh??g*I9)zPIwXIlJldkM8_cN6;oZfJ0Srw#Bj+BwBLzBp|IO;I(U_F7M$WF&5htC{ zP{uD~yVl5^_?OuYf_BiMy_T`DAIR;1@U0KzWPS-d_5t|%GHdjq+yi_V^dWpp*<0j$ z+4aMRU=9MWeI&=>*KDnPlh0+1^HE#5?Dc%PU7cK16E2PRd716amoqxR`v7% zHekJ+PTng>_gF6be7$@ek#aZ4Q#t~}{3YgQm@f)8;Fk0C_{^&}s9(-@SXJsdA%w80 zda=lj@~A*e5MT~*;^asggOYKMT1CqKb3>npBv?8;&F}1-e_CJ z2@t@e+Nl4li-p%cD1@mq_8D+GzjPOSiV4R*SJ<_Ua^p@U7HzA^{P%y62~Coh?TFII zq$%kncLJWWmNSF?0ixP;{(Xh@{seRyd2EIEU!e1YPvmEMU9X|@9Wa*YbjM<+ZY^4e zd(pbw!1LM_)^?K|*%ExNT=?Id)Jcr4Au+!jYxg-weEkt5zJhXZsv)s2yq|-_r#6F? zUL>|KNUTlXRg-kE(rS3mS|FrD9^>K;|)IbL*bGjMzX9A=eYS^U50)Fjj0v_>+quJSE^kZAU< zJKM-)Cj6huQ{w-ssqSI_gT_EF8V4B3`+3pmsHX9Mh^4Jr4KLj|Z1S0$75E4elm8&8 z>|Iwe@{r*FmprAH7m1fpZU0LmHyh+r>p6>+C9OIxlSD?e@&}3kQzUJ%HRKg{q^iye zMEcqsJat*;;2Hz>`VJXOa7kzX?n}C2nfe73%YQs< zkD&n9p*pA)VIqbJ> z@?icY)^fZ2xPRdVHn1R@YpoKq(2-ykoOO4}ZG*zSXv;S`j9`Pd(-(Dy{d$pI+b&P< z23`?aKclnw8nxl2IjTuoXmrLC6A2%vxcxf|AR2ui?ALBj`)jMtdk?bqqn}2SMZBi zM3I~!q2~pGxkYj|AQy||wfu{0>DTfIv5C6#MOOB;92@!~tO7alZY1Y_)d8dDCg!T? z-u)RbvgjQ$L;SCI$dMfo3)jy(vCB)fiWHl_nlEyxJps?L1YTWStw987tTm0&|?Q@F`k;sYGVzF)}3?vw}e3z?H5FJy;z!dh9#dVeFo zO=(K8L&<^j>Wk~@S6r83&HCL%?8-OtM8rzjC7%ynq{p%&7A}p#Mc4s2s}=6-y@(Ci zEid60u*19MebuoVAy(s>SQn9TF^tXy?7Lz)CI@v24#2|pQ!^ISxJP@rN5VZH-#mQJ ze_zy$6 zmK;CfBRYAt7}c=bKtKa{9&nTCU}5Ud3)#v&a%>0SAWrr~T0N=%)hL{?*o>rvlW@NY zH`f51zwg<$YazR`M~?I(P#DOl@NC<4mHYzR^&Ki1Y#?0rT9w=q86Q9;&u3pAKqaH}W+iW!U*pdAa(@W- zPJBD?eT}aOpLZqy3O`lya^z@MvXu-{RPxk;HI*Do;a-)@knW*M7Emxk@Tf`-S-^4+ zqLP7wD%pXw-j)0(;ASNsh1;xT3pjTWl}sR`lJC60WpU1BL^Er8suH zOt;mokLkAh#!@!x5W-5?M~CF0J|!1$3^R9M0=sia{u02?f7GPn-jC2qm)Po`^g8-U zJ`EXJc~~CP5D9|uK6W4mYynzA&tZ9V!;+I25Sk%`Zpslk=`oPG+v0z9v&WO_o?@%$ zKcDS7B1ifHJj~L3fk z*XSIp`>VYCX?RUyqAENfhI7&x4q8v^P1|44{nC76=4x9}LO*Wi;!_j{)L~`r@;od6 zVwQqB@s((6)(%w_lB3oXaZZ=fv=%eyr+hdAFWX9Lb? zX(peMCkCFascM^_&g#Br*~K%cF$58t>z-vT&uV$iIt%P`*y^)-UT5W)HqTeFo*KoC zoel_|9ZZOv#LX-{L`}nz0TOI;IGZ1Jm?25a#T!SrPuuQ*$ug;T0#nI!>T7C-012 zuD7(mzw<{#))53cUo&6_Y9Sa11b2*#-6$^|pnMWA?@W^5uT5Mpz-R{Iat+ZrNZehG ztChHu?k}`yvwpqQcJPx?hYSj}47migr4h$0c{9UbOa$TRU^M(@LDIB>GaO+3-?% zdBkjVP6(n4E=e?|k{@ancPe9oEs}Xk<&MBIcCy^K?#Boto#R2$GC3g!-W&_}cPoWU zrSYgkrkN>!=M%HQA^b^NXgUJV7caLX?gpTxW}}DUxO4#eM7$kE615R&ZfEn_36Bj> zqZCJLVo-JE?YN3nAK?*Dm?&h*(1xt!dJwmOa=D2g5YN$Uy8!32vsv$Qxt~unbtRxP z=d!oT<*-1n2m|3J3O}CBc9qL(P_9uIFpD*py{`Yh)_+$nKz+?+DZk5uqtIC0w>_O_ z=Yl4%Xw_}cHap5e=G-3qxw&lb@A7PZrmO2ktP1k8ShLIW8!%$~&SGC)mY3H7=k3v) z`uSNl;16Vl*8PY4DSw7FyCNq%ftvJKxOl2f-X^GY=9aUG>Ngsh0nR{3!B{j|TA`xw zKqGv+7LHTY*lRlcEOTB#<2}R5uE1uVS;c6-62&G=?;<8;-|Z}mzKR0RWV^1S!GFLm zUX>#$GA&e@k<*OG6=zt)pXl?-*&trQv4B72Eo|cZO>QoA4j>z^B>D|3FQjW*7eh zx=yqD*U*tb7O0-bo?)+F!{BNb`|Xv21JnGp*0y%9cuVF zt=S3c(-4ZkZ=!Nb^~&veQy!}45#kIx&35rh1lx8K z6Uax|jhi4aj0N42mzXhr`Hii=B~LNEJAPw9w^2c;%iD6R&}n)FwMFj4L9K$o^)F^J z=WRLW8LOaf1`%42wooFd8@>HjUd@M}Hj*Ju9#sGlP4UgTeb0<<)cvZNEczd`)#qHV z|ATcDej0o04qDf=P2KOxJR0HS(^&5cInD1mnA70vz0>^*ZcSzDD==3A5N(592WHZc zku+ioVz!1DgJN7YS~<0feF2UIPiOx;kYl>Q>#mjee+UMp*B8mPz68atrW;o2@5sDT zjtoLH8WU9459(_ts&dP6OK8wh!r_(9ao>~r<5c!VrM$L|R_y`K$-l5sRcI6E*y~mD z`8FC?G{G&vMBfNH7Xk=u*jnzR@uzY`(+QP&- z#9pW!^%OOObp9vS*rLSnA*{DWSz-nbI>mmlD9J61xIIq6B1dZ_%W%EqNWpV7nnu44 z3++|JDNSG>6Ey&hnXlJ&M`a>#n@WOhw0N?H>_ zTuatR0!Fevdn#M1C^20gk#~QBfzKQ8f0V2zB6CHF45DCQs^OoYhM>AMS#Lu)YRP)@ z$t=l7SzAYIN`cPrPOvLJN;~vdjq50z_@CL{I!eM5KkIeB1Bksv{Uos;Dx7-rc_;9A zuMtj_NPYBSEnM%-r=MU?)>Yzw@uj*-Y?EiJ*k`q3e{RGca)RxxtE}OlWn+CI>#NvO zUnMdW3A}ss>4;3-|6?cEE?*@K^lCl&bzh|mvS?OM=~PEU2b=0=mQ_!QHN9tkW-IF{ zecKpCs@m9-YDg6t7t;#74xIY_dYD9oniCxuxw9YB;yAIY@hKha@!ASHV4^9m%czXhC z=C7nb1`tW8xt5zck*)MsI-x?o^H&Dq*C;?4%uirh0m{I~CV)6t!dCPsrFdCx&v>>g z0Nk0tE(Rz)>L8T*n`;wT%Rmj9qW=~IDj$lN^~0kSK}t)+elkc&!|$UYrB!_-S`Py> zztW?{I2EKMg;F+{XmU?S_cD*V7mQIcrtLFM5RJbvfw_F&ICe5v zIo<-CF~=FcL=NPCp*C0u)A}!2BhlY!pTLfVD6P7T*UN5>Cpb*9-U5vJ?$YVDig+X? zbO~JORU1}tsS^Gi&pL)G%c0(Pg(~O$ur-oy%Oi#R&k5#itR(Q`*_FmhWC!4>J=f>P zt@|?or->Ar(7nB-WR$@5@k%E&>cbUiMsol@$4iP)eR?Npg z>5UvSEaq&n4e*<%`m-&ON)t=mcvk;OC8$18NHc0sgxlJVXD!2(>5oGg%6r%xNZXVe!erUeFL*#Xl^ugA&O$ z$0&i10aR`@s&X`{%1m}R1_~&P-HSn^$_6PAuol^@cT=TZ5WMFtjjtx&^rSAj(x>1{ z3~x_ba8YSfoI1~9pEN~V&0_x`W__UDt2Zo+F|b4Lapj}HOz)Nxq_v!cOm^{c|S%FMP^2UPs4ldsJzrB7zfz*(dZLr$HmdnJ zx!36M61Z=k8mc2J2C~Nis7AJ;2H74;gxM*Qja`}SN(*ITPKk%DkG55;M%{e_e(DM% z$l3iU(eCfOOSn-X)TX-tR)Kg>+1Mg2sx(p~sh?&!g%;f!m*=#Rw9%X}CD+zu?D`cE#ZIsDYw}wDwvR$o}U@Dzi zbdKCmP86%s4tKWhzGr9mD21Ixv{8aXCu<>n_seY*9 zTgkdazxE?LheU1sJdDm|oIp@HGy|0|+mPrX;2L%RgS5ZDvtA~vJ5Xuv8qgNK1fRj) zZKtdaq)burZ!@YG-8ez+A2Qj1_R3#~(Y=Gx<1vI(3wtuInIFrRc7U*tWnXlF^dOW} z&DR<1UIz#}yct5^)hH77lYI)luJja+5+YebMZBZh8Z0a`)Lbe0z9buUw3h0QHo%~xk@oj@PQ{;iaUZp{@7TQ4BDQm<2|@<4r3p+Rw9yD zz`fRJ1GhHVD&`=ZxcnN$H}wBfavS=83Av%z36BHro5%YzPiv(~vw84TBN|+TXeK2< zRZ@a!V_C~MW$@#myta~0JFM64Guq$Z`LD6;qqrI+-vT-*PT9bZVXONp5iGBpvd8a8 zO-cJ7W@FsrrRQ~c40Faq8pp81@sM8%S*wTaB)1{IMdUW*_scP?Zg(w3+wPEG z3Nhq&Bix$&{$ZpRA)hrw11Jk7mt!!8#fZG9V$5T)1XH{5+bi?4=}=Y|)*UV-S2t z6Z9}=)>w9>7X)E6o7G$C>xU4!3WZFigmm^@Zx}@B>{@SVbV3OgJ9RYcn4rW4!RxUE zUCq4XNu77CPXP=eO@yZ>D9w=K-2^2ADE~=NR=~H^28$`ZTCwMmtnaqLVgizfEhZX} zqw%G)#)+_)MtL^{UGMiF#daks$D5!ebZ6asn64z+V)eRBn6twe_IZ*L9Ec1_FP7r3 zOMj3vH=X^Kq(p+Gd-!QFz$LPmB4I0Wm7dh+(plSN^c+8toz#^*NLC8`eykChIfwMd z@naw5aT(;@JoOCQy+aP|cnhA|JvZ4+*8nF4U)yfFJc{h5Xv_IgWH<#i{uS}emUEKa zM$0)qiY%w-jz2sCKUoI*z44=knU=w>QS8bS5X(_yGzI$+Mx!}>Hi~SfY0W+Z^J}-K z?OHz==-jIP{hj6DcDNE%A6w)t)tyKN`za1HUiJDaZ?c))U=DoM7wzg$4U=+ypnjn- z%kQT=4g$XG2g7FMquFy8@M>cUZO|nD#z@wy=z0c! zi$$0GS5n+>b1yVQ+bv7Ro_zEHPsqA;wFYr(w`J;4Db9NB@9#XuI`mLlu#N-Kg=oSW z;Eev3Ef}cuHNEw}b^S0GXEzGGEGl~y@>J&aCP znoC*Vp|Uc)mZx4v8NB^V;Wu@_j@>%dMcUurc_;1RxC`~P*YmYus-(_?pI)*y(|?L| z+Sai@(p;aXC_Q+7H@h+noZZb@rb6qbvDZ_foYUCJR7@p&%j!R)ggs6YrzzZEr()#$ zM6GF7HGOO*D2EoYM?{DZ<_GfAI|I5n3w_b8dl~;*9}HJv`8v zrQr&6jsT3}3{PW?N1={V+3-&ctDv?{!-Rt{&A)f!6`EFV$_DOc>1e$(Yi{ zwJWsG3)WU@F2YHRoWcKQN)^ijmuVTXpT_L~=QY5vC|xlh;W?|hiVTIT7-_^wz@Kg& zD8{Cd85BD2XQs6 z6IDzbWV~Tg4TRP ztn#%TFF{VL6y^>pUa<409V{XXP1Z;_c{dxCrL^-iymR-8YWi;WZWgr24px>0 z8AAMQCBcg1s5-BG??KLufMw!s&ZuHM1I9`-VVOEI#5SflY^PzoC~ z9=!%ciH?a6g^ZF|Q1(&zVe0oo*+=71F664~KmDA?efX)9iWb>QT0Y>#IWRRiXJ*e!Esg-huGbbnnkh^^E`Ho zt>|WqMO{8b=K!6jCO&?MFtS>y2+e_$7B=PLA+Pf>Ju>5YZVI->j1VM zZEYPsLYA}**YcJ0tr!TnE(8J2&IY?j0an(RMXck4a_&&3wea5{m=}HwEmHpj*j2EQ zaM9c|{b~D1r1qX+Q2`j>G>?sJ2Mu&Cd?R>FM@Me%Hk^8Ma5o6gXN#Be{-b&9!Mr&vvEX)kQbFay16rjv4M;4w z5G)qBQI?;;pEA%*vP3+*g>E_(SrA%pl$(e@By->+3Bg^YWsb>8b4z1^IVUU4e4M~U zoMD@%D0m|izJb46o)u0Et$N#Yx=Bt4AYc~Elc0^4BQa_kV>dt5HMojRGm`!ehEiLh zXPb$!BKWW#Uko<+-t^@vmU5QmHw7PO4pwjNuta$9?>yY=z~nz55Sz5Q3FT@r?C?!m zm~!ZArG4~-; zli*R47JP0&a$Yw?n{aBlz3^s2f=rxE1KK7Qj0@s5goL;@(o!^gItF_Q|Kr5kA=8wN zmJbKBf2JwJEk}m1LDQA?IpJy*G9)H@_W2&w#BU*|af-H9eGL&z#w(GU_<@V#z?BR0 z_zDrknp?2wZM!gVi3-0E#75FgPE#(G3QbI)f?MnLX@UD3S8^gZxG5wr3R37JazkTt zz#$_3ch8cPiQrTgfK-r3UYatlBhDe_J+WXy1Xqy*)svGX-p%QVe@pmBaYZ?^`1s7a zj$U?)@UIx3CtCEweg2t9pX37^JB67X-Z3s^Ya3_G$CJYx*U}C5T3p4&b9_tpfwg!< znQxh#-<|8ibBj|rSjjw}KWiUk$KIPOviH0j2W?Z4h%kb80hjFExgtl~yK#K+>$tHE zuS+Zu)NHN^yEI*ivIJGJx-*o>t}VFKEQI}zi^A>QZADFi*B1UnWf}aLjck?ckaqV2 z3%2)jC4A$rZe%>*3$m>dEMtb!EB^0F^k=P-it<}7PbqHs=`7efQ=-61dm~##sehto z`>cz>YE-ABqRePpk^M=oC{pC7l(Q2vl#BskXh`mcT$j?piA9w6;`;Wu@ojBI7X
_)EH=-AP%`#zsZF-P|IUy);t^io9GOwTN#X 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 z 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 Jdu-BS{}1A3v8w<8 diff --git a/src/camera.cpp b/src/camera.cpp index 78c1d2c..24ae844 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -42,6 +43,11 @@ struct Camera::Impl { try { stopFd=eventfd(0,EFD_CLOEXEC|EFD_NONBLOCK); if(stopFd<0)throw std::runtime_error("Cannot create camera stop event"); + openCapture(); + } catch(...) {release();throw;} + } + void openCapture() { + try { fd=open(config.device.c_str(),O_RDWR|O_NONBLOCK|O_CLOEXEC); if(fd<0)throw std::runtime_error("Cannot open "+config.device+": "+std::strerror(errno)); v4l2_capability capability{};checkedIoctl(fd,VIDIOC_QUERYCAP,&capability,"VIDIOC_QUERYCAP"); @@ -77,16 +83,19 @@ struct Camera::Impl { if(mapping==MAP_FAILED)throw std::runtime_error("Camera mmap failed"); buffers[i].data=mapping;checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF"); } - converter=std::make_unique(config.width,config.height); + if(!converter)converter=std::make_unique(config.width,config.height); auto type=V4L2_BUF_TYPE_VIDEO_CAPTURE;checkedIoctl(fd,VIDIOC_STREAMON,&type,"VIDIOC_STREAMON");streaming=true; - } catch(...) {release();throw;} + } catch(...) {releaseCapture();throw;} } ~Impl(){release();} - void release() noexcept { + void releaseCapture() noexcept { if(streaming){auto type=V4L2_BUF_TYPE_VIDEO_CAPTURE;ioctl(fd,VIDIOC_STREAMOFF,&type);streaming=false;} for(auto const& b:buffers)if(b.data)munmap(b.data,b.size); buffers.clear(); if(fd>=0){close(fd);fd=-1;} + } + void release() noexcept { + releaseCapture(); if(stopFd>=0){close(stopFd);stopFd=-1;} } void stop() noexcept { @@ -94,47 +103,82 @@ struct Camera::Impl { if(stopFd>=0){auto ignored=write(stopFd,&one,sizeof(one));(void)ignored;} } std::optional readFrame() { + auto windowStart=monotonicNs();unsigned failedWindows=0; + auto windowNs=std::uint64_t(config.timeout_ms)*1000000; + std::string lastError="no camera frame"; + auto expired=[&](bool timedOut=false) { + auto now=monotonicNs(); + if(timedOut||now-windowStart>=windowNs) { + if(++failedWindows>=6) + throw std::runtime_error("Camera capture failed 6 consecutive times: "+config.device+": "+lastError); + windowStart=now; + } + }; + auto pause=[&] { + pollfd stopEvent{stopFd,POLLIN,0}; + // Back off transient driver errors while retaining immediate cancellation. + poll(&stopEvent,1,20); + }; + auto reconnect=[&] { + releaseCapture(); + if(haveSequence){++index;haveSequence=false;} + }; while(!stopped.load()) { + expired(); + if(fd<0) { + try {openCapture();} + catch(std::exception const& e){lastError=e.what();pause();continue;} + } + if(stopped.load())return {}; + auto elapsed=monotonicNs()-windowStart; + auto remaining=elapsed((remaining+999999)/1000000); pollfd descriptors[2]={{fd,POLLIN,0},{stopFd,POLLIN,0}}; - int ready=poll(descriptors,2,config.timeout_ms); + int ready=poll(descriptors,2,waitMs); if(ready<0&&errno==EINTR)continue; if(stopped.load()||(descriptors[1].revents&POLLIN))return {}; - if(ready==0)throw std::runtime_error("Camera capture timeout: "+config.device); - if(ready<0||(descriptors[0].revents&(POLLERR|POLLHUP|POLLNVAL)))throw std::runtime_error("Camera disconnected or poll failed"); + if(ready==0){expired(true);continue;} + if(ready<0||(descriptors[0].revents&(POLLERR|POLLHUP|POLLNVAL))) { + lastError="camera disconnected or poll failed";reconnect();pause();continue; + } v4l2_buffer buffer{};buffer.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;buffer.memory=V4L2_MEMORY_MMAP; int status=ioctl(fd,VIDIOC_DQBUF,&buffer); if(status<0&&(errno==EAGAIN||errno==EINTR))continue; - if(status<0)throw std::runtime_error("VIDIOC_DQBUF: "+std::string(std::strerror(errno))); - if(buffer.index>=buffers.size())throw std::runtime_error("Invalid V4L2 buffer index"); - // The GMSL driver can mark its startup buffer as corrupt. Requeue - // it without conversion or inference; persistent corruption is fatal. - if(buffer.flags&V4L2_BUF_FLAG_ERROR) { - checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF(error frame)"); - if(++consecutiveErrors>=static_cast(config.fps)) - throw std::runtime_error("Camera produced one second of consecutive error frames"); - continue; + if(status<0) { + lastError="VIDIOC_DQBUF: "+std::string(std::strerror(errno)); + // EIO can be a transient corrupt frame; a lost device needs reopening. + if(errno!=EIO)reconnect(); + pause();continue; + } + if(buffer.index>=buffers.size()){lastError="invalid V4L2 buffer index";reconnect();pause();continue;} + bool invalid=(buffer.flags&V4L2_BUF_FLAG_ERROR)||buffer.bytesusedbuffers[buffer.index].size; + if(invalid) { + ++consecutiveErrors;lastError="corrupt or incomplete camera frame"; + if(ioctl(fd,VIDIOC_QBUF,&buffer)<0)reconnect(); + pause();continue; } CapturedFrame frame; - try { - if(buffer.bytesusedbuffers[buffer.index].size) - throw std::runtime_error("Invalid camera frame: flags="+std::to_string(buffer.flags)+", used="+std::to_string(buffer.bytesused)+", required="+std::to_string(std::size_t(stride)*config.height)+", allocated="+std::to_string(buffers[buffer.index].size)); - auto& m=frame.metadata; - m.discarded_error_frames=consecutiveErrors;consecutiveErrors=0; - m.driver_sequence=buffer.sequence;m.received_monotonic_ns=monotonicNs(); - m.driver_timestamp_ns=std::uint64_t(buffer.timestamp.tv_sec)*1000000000ULL+std::uint64_t(buffer.timestamp.tv_usec)*1000; - m.driver_timestamp_monotonic=(buffer.flags&V4L2_BUF_FLAG_TIMESTAMP_MASK)==V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; - m.capture_monotonic_ns=m.driver_timestamp_monotonic&&m.driver_timestamp_ns>0&&m.driver_timestamp_ns<=m.received_monotonic_ns?m.driver_timestamp_ns:m.received_monotonic_ns; - if(haveSequence) { - auto delta=static_cast(buffer.sequence-lastSequence); - if(delta==0||delta>0x7fffffffU)throw std::runtime_error("Camera sequence reset or repeated frame"); - m.skipped_driver_frames=delta-1;index+=delta; + auto& m=frame.metadata; + m.discarded_error_frames=consecutiveErrors; + m.driver_sequence=buffer.sequence;m.received_monotonic_ns=monotonicNs(); + m.driver_timestamp_ns=std::uint64_t(buffer.timestamp.tv_sec)*1000000000ULL+std::uint64_t(buffer.timestamp.tv_usec)*1000; + m.driver_timestamp_monotonic=(buffer.flags&V4L2_BUF_FLAG_TIMESTAMP_MASK)==V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; + m.capture_monotonic_ns=m.received_monotonic_ns; + if(haveSequence) { + auto delta=static_cast(buffer.sequence-lastSequence); + if(delta==0||delta>0x7fffffffU) { + lastError="camera sequence reset or repeated frame"; + reconnect();pause();continue; } - m.frame_index=index; - lastSequence=buffer.sequence;haveSequence=true; - // Convert before requeuing. No published result references MMAP memory. - frame.image=converter->convert(buffers[buffer.index].data,stride); - } catch(...) {ioctl(fd,VIDIOC_QBUF,&buffer);throw;} - checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF");return frame; + m.skipped_driver_frames=delta-1;index+=delta; + } + m.frame_index=index; + // GPU failures remain fatal; only capture failures consume the retry budget. + try {frame.image=converter->convert(buffers[buffer.index].data,stride);} + catch(...) {ioctl(fd,VIDIOC_QBUF,&buffer);throw;} + if(ioctl(fd,VIDIOC_QBUF,&buffer)<0){lastError="VIDIOC_QBUF failed";reconnect();pause();continue;} + lastSequence=buffer.sequence;haveSequence=true;consecutiveErrors=0; + return frame; // The next read starts a fresh six-window retry budget. } return {}; } diff --git a/tests/ORIN_TEST_REPORT.md b/tests/ORIN_TEST_REPORT.md new file mode 100644 index 0000000..b763c82 --- /dev/null +++ b/tests/ORIN_TEST_REPORT.md @@ -0,0 +1,31 @@ +# Orin 相机故障恢复与停止测试(2026-09-23) + +目标:短暂取流故障在六个等待窗口内恢复时,同一进程继续推理;有效帧到达后重新计数;主动停止不等待全部窗口。 + +环境:192.168.195.100,Jetson Orin,L4T R35.4.1,CUDA 11.4.298,TensorRT 8.5.2;真实 /dev/video5,YOLO 与 RTMW TensorRT 引擎。三个分支在该板编译。 + +使用真实采集与推理进程;通过 LD_PRELOAD 在 V4L2 系统调用处注入无帧、坏帧、EIO 和 ENODEV。每次恢复测试检查同一子进程产生新的风险 JSON;错误恢复后至少新增 10 帧。Ctrl+C 通过 PTY 写入 0x03,SIGTERM 发送给测试进程。 + +| 分支 | Ctrl+C / SIGTERM 完整退出范围 | 持续无帧退出(含清理) | 恢复后再次断流退出(含清理) | 结果 | +|---|---:|---:|---:|---| +| lazy-inference | 801.21–942.42 ms | 13.010 s | 13.085 s | 9/9 通过 | +| inference-only | 793.22–1012.57 ms | 13.055 s | 12.945 s | 9/9 通过 | +| use-can | 786.06–907.59 ms | 13.066 s | 13.155 s | 9/9 通过 | + +每个分支覆盖:断流后恢复并重新计时;坏帧恢复;EIO 恢复;ENODEV 后重新打开设备并恢复;正常推理 Ctrl+C;重试期 Ctrl+C;第六窗口 Ctrl+C;SIGTERM;持续无帧六窗口后报错。timeout/recover 场景最后的退出码 1 是预期的超限结果,不是测试失败。 + +默认逻辑等待约 12 秒,表中的完整进程退出另含 GPU/驱动资源清理时间。最初使用的 1 秒完整退出判据过于严格:清理 GPU 资源可使总耗时略超过 1 秒;最终以不超过 2 秒验收主动停止,同时记录实测值。lazy-inference/use-can 的流水线停止日志也已记录,详见 JSON。 + +实机发现并修复:use-can 关闭时遗漏 munmap,导致重新打开后 VIDIOC_S_FMT 返回 EBUSY。修复后重跑该分支全部九项。另有原生 V4L2 重开回归测试,检查连续三次重开及部分 mmap 失败后无遗留映射。 + +补充回归:在板端执行 tests/run_camera_timeout.sh 和 --wall-clock(默认六窗口约 12.00 秒);use-can 额外执行 tests/run_v4l2_reopen.sh。它们使用模拟采集,仅为补充,不替代上述板端真实推理测试。 + +测试范围限制:未进行物理拔线、USB-CAN 报文/拔插、驱动内核永久卡死、GPU 故障或长时间耐久测试。板上未接 USB-CAN,CAN 模式处于缺失回退。视频回放路径未改动,未包含在本次相机恢复测试中。 + +完整数据:orin_hardware_results.json。故障注入器源码:orin_capture_faults.c,仅用于测试。原始运行日志位于板端 /home/orin/vision-anti-pinch-ctrlc-test-20260923/。 + +## 经测试的可执行文件 SHA256 + +- lazy-inference: `0d77d17626644fb50b663c33edbb1a09884b34b5410a1109fc56b4d3781651b1` +- inference-only: `3a984e1e4c0fa12285967085e3359a5b7c698d744e9c2deb2480a312eb637c1c` +- use-can: `a2616e193ef9f006b49b4bb4ac43ae3ffc4cee1f1edf6d58ed6f7f9e5f933ad1` diff --git a/tests/camera_timeout_test.cpp b/tests/camera_timeout_test.cpp new file mode 100644 index 0000000..54bacc5 --- /dev/null +++ b/tests/camera_timeout_test.cpp @@ -0,0 +1,192 @@ +// Exercise the production Camera with simulated capture and no GPU or camera. +#include "camera.hpp" +#include "uyvy_converter.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef TEST_V4L2_CAPTURE +#include "v4l2_capture.h" +#else +#include +#include +#include +#include +#include +#endif + +namespace { +std::string events; +std::size_t cursor{}; +char current{}; +unsigned sequence{}; +int timeoutMs{}; +bool realWait{}; +std::function onStop; +unsigned char pixels[8]{}; +void check(bool condition,char const* message) { + if(!condition)throw std::runtime_error(message); +} +void script(std::string value) {events=std::move(value);cursor=0;} +char next() { + check(cursor(Impl{w,h})){} +UyvyConverter::~UyvyConverter()=default; +std::shared_ptr UyvyConverter::convert(void const*,std::size_t) { + auto image=std::make_shared();image->width=impl_->width;image->height=impl_->height; + image->stride=image->width*3;image->pixels.resize(image->stride*image->height);return image; +} +} +#ifdef TEST_V4L2_CAPTURE +V4l2Capture::~V4l2Capture()=default; +bool V4l2Capture::open(std::string const&){reconnect_needed_=false;return true;} +void V4l2Capture::close(){} +bool V4l2Capture::setFormat(uint32_t w,uint32_t h,uint32_t p){width_=w;height_=h;pixelformat_=p;return true;} +bool V4l2Capture::setFps(uint32_t){return true;} +bool V4l2Capture::initMmap(uint32_t){return true;} +bool V4l2Capture::startStreaming(){return true;} +void V4l2Capture::releaseFrame(Frame const&){} +bool V4l2Capture::getFrame(Frame& f,int waitMs) { + check(waitMs<=100,"Stop polling should remain at most 100 ms"); + if(next()=='s'){onStop();return false;} + if(current=='d'){reconnect_needed_=true;return false;} + if(current=='e'||current=='x'){return false;} + if(current=='t') { + // Each scripted timeout represents a full logical capture window. + // The separate stop test exercises the short-wait cancellation path. + std::this_thread::sleep_for(std::chrono::milliseconds(timeoutMs));return false; + } + check(current=='f',"Unsupported mock V4L2 event"); + f.data=pixels;f.size=sizeof(pixels);f.width=2;f.height=2;f.bytes_per_line=4;f.sequence=sequence++; + return true; +} +#else +extern "C" { +int __real_poll(pollfd*,nfds_t,int); +int __real_open(char const*,int,...); +int __real_close(int); +int __real_ioctl(int,unsigned long,...); +void* __real_mmap(void*,size_t,int,int,int,off_t); +int __real_munmap(void*,size_t); +int __wrap_open(char const* path,int flags,...) { + if(std::strcmp(path,"/mock/camera")==0)return 100000; + return __real_open(path,flags); +} +int __wrap_close(int fd){return fd==100000?0:__real_close(fd);} +void* __wrap_mmap(void* a,size_t n,int p,int f,int fd,off_t o) { + return fd==100000?pixels:__real_mmap(a,n,p,f,fd,o); +} +int __wrap_munmap(void* a,size_t n){return a==pixels?0:__real_munmap(a,n);} +int __wrap_ioctl(int fd,unsigned long request,...) { + va_list args;va_start(args,request);void* p=va_arg(args,void*);va_end(args); + if(fd!=100000)return __real_ioctl(fd,request,p); + switch(request) { + case VIDIOC_QUERYCAP:static_cast(p)->capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_STREAMING;break; + case VIDIOC_S_FMT:static_cast(p)->fmt.pix.bytesperline=4;break; + case VIDIOC_G_PARM:break; + case VIDIOC_REQBUFS:static_cast(p)->count=2;break; + case VIDIOC_QUERYBUF:static_cast(p)->length=sizeof(pixels);break; + case VIDIOC_DQBUF: { + if(current=='x'){errno=EIO;return -1;} + auto& b=*static_cast(p);b.index=0;b.bytesused=sizeof(pixels);b.sequence=sequence++; + b.flags=current=='e'?V4L2_BUF_FLAG_ERROR:0;break; + } + case VIDIOC_QBUF:case VIDIOC_STREAMON:case VIDIOC_STREAMOFF:break; + default:throw std::runtime_error("Unexpected camera ioctl"); + } + return 0; +} +int __wrap_poll(pollfd* fds,nfds_t count,int waitMs) { + if(count==1)return __real_poll(fds,count,waitMs); + check(count==2&&waitMs>0&&waitMs<=timeoutMs,"Camera must respect the configured timeout window"); + switch(next()) { + case 't':if(realWait)std::this_thread::sleep_for(std::chrono::milliseconds(waitMs));return 0; + case 'i':errno=EINTR;return -1; + case 's':onStop();return 0; + case 'd':fds[0].revents=POLLHUP;return 1; + case 'f':case 'e':case 'x':fds[0].revents=POLLIN;return 1; + default:throw std::runtime_error("Unexpected poll event"); + } +} +int __wrap___poll_chk(pollfd* fds,nfds_t count,int waitMs,size_t size) { + check(size>=count*sizeof(pollfd),"Invalid fortified poll buffer size"); + return __wrap_poll(fds,count,waitMs); +} +} +#endif +int main(int argc,char** argv)try { + cms::CameraConfig config;config.device="/mock/camera";config.width=config.height=2;config.buffers=2; + check(config.timeout_ms==2000,"Default per-attempt timeout must be 2 seconds"); + realWait=argc>1&&std::string(argv[1])=="--wall-clock"; + if(!realWait)config.timeout_ms=100; + timeoutMs=config.timeout_ms; + if(realWait) { + cms::Camera camera(config);script("tttttt"); + auto before=std::chrono::steady_clock::now();expectTimeout(camera); + auto elapsed=std::chrono::duration(std::chrono::steady_clock::now()-before).count(); + check(cursor==6&&elapsed>=12.0&&elapsed<15.0,"Default timeout should fail after six attempts, about 12 seconds"); + std::cout<<"PASS wall-clock six-timeout duration="< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +static int calls=0; +static int camera_fd(int fd){char name[64],target[256];snprintf(name,sizeof(name),"/proc/self/fd/%d",fd);ssize_t n=readlink(name,target,sizeof(target)-1);if(n<0)return 0;target[n]=0;return strcmp(target,"/dev/video5")==0;} +static long long now_ms(void){struct timespec t;clock_gettime(CLOCK_MONOTONIC,&t);return (long long)t.tv_sec*1000+t.tv_nsec/1000000;} +static void marker(const char *s){ssize_t ignored=write(2,s,strlen(s));(void)ignored;} +static int should_stall(void){ + static long long since=0;static int phase=0,resumed=0; + if(!getenv("VAP_TEST_STALL"))return 0; + if(phase==0){if(++calls<60)return 0;phase=1;since=now_ms();marker("TEST_STALL_ACTIVE\n");} + if(phase==1&&getenv("VAP_TEST_RECOVER")&&now_ms()-since>=4200){phase=2;marker("TEST_CAMERA_RECOVERED\n");return 0;} + if(phase==2){if(++resumed<30)return 0;phase=3;marker("TEST_STALL_SECOND\n");} + return phase==1||phase==3; +} +int poll(struct pollfd *fds,nfds_t count,int timeout){static int(*real_poll)(struct pollfd*,nfds_t,int);if(!real_poll)real_poll=dlsym(RTLD_NEXT,"poll");for(nfds_t i=0;iflags|=V4L2_BUF_FLAG_ERROR;return rc;} + errno=strcmp(kind,"device_error")==0?ENODEV:EIO;return -1; + } + return real_ioctl(fd,request,arg); +} diff --git a/tests/orin_hardware_results.json b/tests/orin_hardware_results.json new file mode 100644 index 0000000..16358e5 --- /dev/null +++ b/tests/orin_hardware_results.json @@ -0,0 +1,253 @@ +[ + { + "branch": "lazy-inference", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.085, + "recovered_real_capture": true + }, + { + "branch": "lazy-inference", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 846.3, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 132.56 + }, + { + "branch": "lazy-inference", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.09, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 106.06 + }, + { + "branch": "lazy-inference", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 830.0, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 133.41 + }, + { + "branch": "lazy-inference", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 833.16, + "pipeline_stop_ms": 139.5 + }, + { + "branch": "lazy-inference", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 942.42, + "pipeline_stop_ms": 201.21 + }, + { + "branch": "lazy-inference", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 904.29, + "pipeline_stop_ms": 194.16 + }, + { + "branch": "lazy-inference", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 801.21, + "pipeline_stop_ms": 123.09 + }, + { + "branch": "lazy-inference", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.01 + }, + { + "branch": "inference-only", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 12.945, + "recovered_real_capture": true + }, + { + "branch": "inference-only", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.67, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 827.43, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 853.08, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 804.87 + }, + { + "branch": "inference-only", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 913.42 + }, + { + "branch": "inference-only", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 1012.57 + }, + { + "branch": "inference-only", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 793.22 + }, + { + "branch": "inference-only", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.055 + }, + { + "branch": "use-can", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.155, + "recovered_real_capture": true + }, + { + "branch": "use-can", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 815.49, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 122.36 + }, + { + "branch": "use-can", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.05, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 130.73 + }, + { + "branch": "use-can", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 814.68, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 123.99 + }, + { + "branch": "use-can", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 786.06, + "pipeline_stop_ms": 108.96 + }, + { + "branch": "use-can", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 862.45, + "pipeline_stop_ms": 167.55 + }, + { + "branch": "use-can", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 907.59, + "pipeline_stop_ms": 197.07 + }, + { + "branch": "use-can", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 827.61, + "pipeline_stop_ms": 130.51 + }, + { + "branch": "use-can", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.066 + } +] diff --git a/tests/run_camera_timeout.sh b/tests/run_camera_timeout.sh new file mode 100755 index 0000000..b2e795b --- /dev/null +++ b/tests/run_camera_timeout.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail +root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +test_dir="$(mktemp -d)" +trap 'rm -rf "$test_dir"' EXIT +flags=(-std=c++17 -O1 -g -Wall -Wextra -Wpedantic -pthread -fsanitize=undefined -fno-sanitize-recover=all -I"$root/include") +links=() +if [[ -f "$root/include/v4l2_capture.h" ]]; then + flags+=(-DTEST_V4L2_CAPTURE -I"$root/tests/stubs") +else + for fn in open close ioctl mmap munmap poll __poll_chk; do links+=("-Wl,--wrap=$fn"); done +fi +"${CXX:-g++}" "${flags[@]}" "${CAMERA_SOURCE:-$root/src/camera.cpp}" "$root/tests/camera_timeout_test.cpp" "${links[@]}" -o "$test_dir/camera_timeout_test" +"$test_dir/camera_timeout_test" "$@" diff --git a/tests/stubs/opencv2/videoio.hpp b/tests/stubs/opencv2/videoio.hpp new file mode 100644 index 0000000..c112081 --- /dev/null +++ b/tests/stubs/opencv2/videoio.hpp @@ -0,0 +1,19 @@ +#pragma once +// Camera timeout tests exercise live capture only. Stub the unused replay API +// so the use-can Camera can be tested without OpenCV or a video decoder. +#include +#include +namespace cv { +constexpr int CAP_PROP_FRAME_WIDTH=3,CAP_PROP_FRAME_HEIGHT=4; +struct Mat { + int cols{},rows{}; + unsigned char const* ptr(int)const {throw std::logic_error("Video replay is outside this test");} +}; +class VideoCapture { +public: + bool isOpened()const{return false;} + bool open(std::string const&){throw std::logic_error("Video replay is outside this test");} + double get(int)const {throw std::logic_error("Video replay is outside this test");} + bool read(Mat&){throw std::logic_error("Video replay is outside this test");} +}; +}