From 8c95126a672e11a7617a655055e6ea9445bc06c6 Mon Sep 17 00:00:00 2001 From: Mautisim Munir Date: Tue, 1 Nov 2022 22:00:19 +0500 Subject: [PATCH] core calculator error fixes --- WORKSPACE | 4 +- mediapipe/calculators/core/BUILD | 4 +- ...r.cc => constant_side_packet_calculator.h} | 0 ...alculator.cc => flow_limiter_calculator.h} | 0 .../UserInterfaceState.xcuserstate | Bin 21717 -> 49053 bytes .../PoseTrackingLindera/ViewController.swift | 2 +- mediapipe/framework/calculator_registry.h | 5 +- mediapipe/objc/BUILD | 11 +++ .../objc/solutions/posetracking_gpu/BUILD | 85 ++++++++++++++++-- .../solutions/posetracking_gpu/PoseTracking.h | 1 + .../posetracking_gpu/PoseTracking.mm | 9 +- mediapipe/swift/solutions/lindera/BUILD | 8 +- .../lindera/LinderaDetection.podspec | 4 +- 13 files changed, 113 insertions(+), 20 deletions(-) rename mediapipe/calculators/core/{constant_side_packet_calculator.cc => constant_side_packet_calculator.h} (100%) rename mediapipe/calculators/core/{flow_limiter_calculator.cc => flow_limiter_calculator.h} (100%) diff --git a/WORKSPACE b/WORKSPACE index d7a833877..a131001a1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -528,11 +528,11 @@ load("@build_bazel_rules_android//android:rules.bzl", "android_ndk_repository", android_sdk_repository( name = "androidsdk", build_tools_version = "30.0.3", -# path = "/Users/tj/Library/Android/sdk", # Path to Android SDK, optional if $ANDROID_HOME is set + path = "/Users/tj/Library/Android/sdk", # Path to Android SDK, optional if $ANDROID_HOME is set ) android_ndk_repository( name = "androidndk", # Required. Name *must* be "androidndk". api_level = 21, -# path = "/Users/tj/Library/Android/sdk/ndk/21.4.7075529", # Optional. Can be omitted if `ANDROID_NDK_HOME` environment variable is set. + path = "/Users/tj/Library/Android/sdk/ndk/21.4.7075529", # Optional. Can be omitted if `ANDROID_NDK_HOME` environment variable is set. ) diff --git a/mediapipe/calculators/core/BUILD b/mediapipe/calculators/core/BUILD index b28a3573a..47a74998a 100644 --- a/mediapipe/calculators/core/BUILD +++ b/mediapipe/calculators/core/BUILD @@ -728,7 +728,7 @@ cc_library( cc_library( name = "flow_limiter_calculator", - srcs = ["flow_limiter_calculator.cc"], + srcs = ["flow_limiter_calculator.h"], visibility = ["//visibility:public"], deps = [ ":flow_limiter_calculator_cc_proto", @@ -1217,7 +1217,7 @@ cc_test( cc_library( name = "constant_side_packet_calculator", - srcs = ["constant_side_packet_calculator.cc"], + srcs = ["constant_side_packet_calculator.h"], visibility = ["//visibility:public"], deps = [ ":constant_side_packet_calculator_cc_proto", diff --git a/mediapipe/calculators/core/constant_side_packet_calculator.cc b/mediapipe/calculators/core/constant_side_packet_calculator.h similarity index 100% rename from mediapipe/calculators/core/constant_side_packet_calculator.cc rename to mediapipe/calculators/core/constant_side_packet_calculator.h diff --git a/mediapipe/calculators/core/flow_limiter_calculator.cc b/mediapipe/calculators/core/flow_limiter_calculator.h similarity index 100% rename from mediapipe/calculators/core/flow_limiter_calculator.cc rename to mediapipe/calculators/core/flow_limiter_calculator.h diff --git a/mediapipe/examples/ios/posetracking-lindera/PoseTrackingLindera.xcworkspace/xcuserdata/tj.xcuserdatad/UserInterfaceState.xcuserstate b/mediapipe/examples/ios/posetracking-lindera/PoseTrackingLindera.xcworkspace/xcuserdata/tj.xcuserdatad/UserInterfaceState.xcuserstate index 56b0c88355726f7a30e3bc7946f2f410ae65971a..7d5593a7f467a3d11965d286cd317802820e2f77 100644 GIT binary patch literal 49053 zcmeFacR*A}7dL!o=I-vT%OYR}1XmEjrB`EPSx^#01ngzAz@jJuVZjnLxszT@G2L{q zB+(SpdrULMbWJZBlbGI%>B)QM-n~nW;m!9v&-?w6m<9IUnKLtIesku`nKN^0S{fSy zZRzPRbBMzn;dsu%Sveag%^khc-x_FWZkjjR*IK)@0lrm_ZfkCtJG!}MnZLFzFo;8^ zUF&s(l~*0(U*oSU3?_Ps6F6~JRhzHPuc2GQ`O%!rDclflC^w8tWx%DCCwLT(XP%PrxSa*f;yF2J>M?c5sfL{8&Q<4)(!;Wly? za946yaaVKKaGSXu+>P8_+}+$g+`Zg=-2L1x?gj2e?j>$7w~u?7dxiUu`;_~V`-c0T z`;q&F`yFwJAS)7)g2K=s6orPN7!-%%(I_+;jYVlF9c7?QRE8?hOf(D4M)T1Etw$%IlhDcN3Unp93SEt^LD!-V)QL8uEodvc0qsP$qTA3t z=w9>)dK5i|o9`!v#&hs|T!U-zTD%Ug$0y(uv4$x=37?El z!KdOg@%eZoz7$`Euf-ks2D}|ViXX#|ujgb@b`Cxggf5<{G1G#N)+B!}dZax#NdkeQ^CRFP^ji_9i-$Xv3J z)RG3WjI@#fSxeTDi^#>~5^^cIjBFy8lPk!T z{89V_-oqF3)A@3~o?pT*Q(1e-ZyI|04eq z{|f&q|0e$ye}I3N|A0Tlf5Lytf60Hvf5(5%|HS{y|IYtm!4_h%SpQ7z$?L6*Um zA(j!AXiJOSUD)QeYWxnPi!4DYAGh(=4Ty>6UU!wPluNp2cTb zVp(o!wgfDzEhkt`w47`?)3U*Gp5k34(mPEhpdlV_gJ5|zHEKX z`lj`3>-W|ltUp_SvHoHG(?)E(O|XeJ)n>O1vPIa2*oNAoZ85eSTdpn7mTxPtjkg_T zn_!!0n`E18E3zGJJH|HCR%x4WTVPvgTV(Uw>TM_3PPAz@YCFkxvh5VxskYN>r`yi3 zZLnQvyU2FA?F!pw+ZNka+cw*Ewp(mFZBN;rw(YS!V|&*2ob7qr3$_<+FWL6mUbVer z+iyEyJ7oLN_NDDB+t;?AY(ER(!XP0+h!moP!NL$>s4z?zE{qUH3W>rP!6l>$xk8?h zFBAxcf?Jp`ED#n7i-g63S2$Mi2{l5kP$w)EnuQi&rLamkQP2b`oFtqqoGok+wg_8= zZNhcJ^}-Fpc43Ebqi~aOvv8YmuW+C6u<(fRw6I5bM%X93EPO6}A$%!(C44P>BYZ1- zCwwpbARHEc5s`>RK@`PsagZ1xju4~8Y%xd774yV=u|OOz9wkl?CyJ9qw^%C95G%yF z;yiJ_SR>YoYsGcqdhrDDL{Sr|c#?Rsc#3$cc&2#1c!_wac#U|i*dg8^ZWniow~Duk zd&FnNXT|5l=fxMq7sZ#vz2ZLcW$_j9Rq-|Pb@2`HP4O-9Bk^PL6Y*2=Gx2lr3-L?w zd+`tPPl=O|ge4-Wl3fau21%nNr!-nhkP@Y2$t9&qnNq$qL7FU;NfpveX_howS}HY2 z%cSK}qqIV5lA5I!DIlFGoh6+uZII59&XvxS&X+by7f4&AtI_Y}p25GyrL%LDA zPr6@vKzdMmNZKXsmY$IINY6+wNv}xnOCLywqz|Q!q>rUfq)(;KWScC=qAba>tjMZt zm&0U-94-%%BjmyIFgaR|kzI1CoF=Es8FHqaB^SzWxk&cN#d3*!j9ey9mn-C%@+{dW z*T@ZWv)m%L$*bix^6~Ns@=5Z^@+tBemLKFZ<%{J@Sbyj{LU z-X%XQKO#RWKPEpe@0OpCpO&AMpOg2=FUzmVugm-81M)}m$MPo%QFz6oSQVQhD54@M zvZ5%eVpkkWxH3o?tPEF@l@w*1;!;wTG$mchP>xb2C=-=Q%2Z{JvRLsdex*TKrZg$d zN(N_DE^)GW0? zov2Py-D;6KRh_1msngZj>LPWqTBFvhOVp)mqq;&pPHk0Jt83Kb)sxk;)brE})r-{2 z)J^K;>ecEs>SlF|x>en#UZ?I*Z&B}2cd3u7PpMC<&#BL=d)0mFYwGLje)WL*uKIy` zNc~*>M*TrOtp1|@s{U!`>{h$YuGk0LhuDYOhuMeQN7xhWiS{w}EPJ*+$DV7?vlrPt z_F{X9eX4!Bz1&`HpJktKue1B@_4XF~arV|(qnp|r8~1T4XXnB=2N%H&o>N|xy4=4e zFdu#gwUXJRYa4xmKqnW@4breiI=M(LO5-VhS3A|~h%EIK&uMO59%%8^`aR9H?JN9E zZC=Odtejl8JFlqNRhXXXc4ZeA7q|)w(o0-f`MJe~Ir+Js+^jsaJ3~1m&lFblDM&4GMB=Q<6N3u3#0ftinmkz z0L8CS{5r*NQv8+{2eosz`hCk=nj4zh0)@404J$#1s`EOAd;Imj_Qtm2x`wvqR$a3S zlr*=_sw@jE)RXzEYM1&~_hqUIGXjea0l!PL4y z8#LU==Jo|Zdt=2lw5_T1w=}l`N5V|z%xP$o~l=9iNCe1d5Kw~*O6!B z(0^uCv^F!{wW_^^HM4jA9%;Oe@kc7F!oS29Xb+S(H7s0MZ#p-VOWn+sb2GRKZLl^>8?l+IDM@Is5Zpw$XxAO&6w(HY+f=xEiJDo-(8&N$#CUn zWaqiE-MIxWcY1EF%bitJTH(7iJCdcni{6znO^&hlgzxm|e$o_tq!PEn@IU6@hq%FD~kD$2{r&dp7C zcc-&lrxV?WPJT{dvD=-V?N(TISYtzTYWo2h(t~Z#ll3V3FN$$)QxIXro!G%-n)ZC_W>nAe8D1?ktw-Of9j4J6lWY+41M=JR0M5oKz1eh2Bk@ z6@cNN*0wCI#TW{KH2>;0e`}MkF|D?_rN!UsYV_3v(pLEE8hkAcE>Q`B(dx2nnP$ zGzZdJngjl}R$uM%hNdO1Mi3JIR$p2LJgg2rEHj>^>eyn1na#S8yObgKBJN`D5^b!O ztfg$`F5@9=^&$h53u$< zsO4&vX6+v4p5#)uagT71a*uJ3bGx}Gv^*_eE6~PkM`;tbaZhnib9?lE&uJ62a;-xD zHAH}0c1vcKG27SJ4#Tips+ex6dP2dV(w(g)m2!}1-G~@WdX+nLGxr+zI`;7txTJ~7a;Qy_c8a$ zJP^WxwpKu-HreYKf^^GC8%#^>t^UBebyc2YDrd~7HpI(k+~>N9B`991^lY2C&$usi z>1up8DSyrA#Ug{}Gg_D+0(!;eh3>Lque-FmXojcQO#2;6JEnKqsm0~Rm4(&C-ipc@ zC8cGhQ$MdOf986=j93btuQ5EJtFu98ipRPHFWtZ&h_+xu>ww}2GOZwV;T>j(~Z7{^S}>pfX)Mq^MCSMzttKvH^USNF~wl#D1Dje{8%rD(G{ zkV~7*BwlwB(o@8Mb_mleSV(8XB)Qz*3Vr#P;>au@3r*%ycc5&PgK|+G%0~rgJUR+Z zKoij7S2Nk0dG!;!lrRZp_SvyO+O1o9t zt-Y>&ru{)tI7Oo=%Il#epc%TBFyHG~ZK{HG4FQCuY|9^7HCzGSd_FWF;)sG+$up#EhKmg3N-9g8aO^%z}cd0BmUQuRzJ z3JQAErdF>FjHZ8t8-IFMt}j1#AiU{Qo4Wd%n)IxmyjiN(2G+~}s5W)Anf|Pde^wjd zO{OnDy$5er=(VZ;r?v6d<`m=={8Qf4XVlg7s7Ht7ZaT3~oLO#B6Ia`U^T zF~?L!eP(@++N{!Rv+SSMCL_aNlbcgNpb_2|H|aU){@VN=wOOavrtzQECbO=-zQ&h7 zpq}bG!gG9ix&GQ7wV`@#z-aT&P@ITdA$mR%>gvqw~>5{oh6CVr~!obs3kS9j~p| z|DB+n2Fru>+Ua2bg6VR2mp#K+;-rSwP+muL-01KEmy!LZDQ#NW5NLo!IxIf=Qh`N9b9-AcEQXud)COsseW~bnfGW1Pnc7@m4=dpQ zC)gM zX$0FS+Rk-uK|7!m;G?Yr#Sgjw~#jNY`(T(6*a8BkwEuc6n` z8|Y2+7J3`KgZ85X+S%F$?Huh~?L6&#ZKHO9cA<9Bc62ZZ)I&j_egZ(fI0)2BgFwCF zU!dyN=F|X;z5f_ce`G-YNxQ@Z>aYC*HQ28hV;)e7iFR2BwrHCMhEgnIMMo)?0i~CB z!%#0|nxzcFQ99;uBw+5!zfV5`Cj#1VG>*ZscqER)@pu$=;?X!kyIQ+OyH@MaIG1hn1MiK{>+-ppiTFSO}$5YN@+pozQ%c(H-JMS#4Wf1TG% zUx%9+^8C0SFTqQ3173!g<3_v!H)*$Nw`+H3cWQTOcWd`(_iFcP_ix87LFBask+&L< z_dpPNyMoAj>|f;l7m#-vL*D7ygC_FM0_5SdxjpQoJp_|6`&2p# z8Q+3;;#=`;_;!2;zEgWbds2H!ds^G0J)=FVJ*Pddy|5kM9mL!HLA>n(yuBF2+uk7F zUi}wu{{_4~$ME*N_L7OWmyRguUdL}Tw7sG2>wtadmj{Tp1Nc2d(j5dz_sZW(tB>(# z2HHLaw7vHC>A%6hF|>V)zr)|-AMj!PBmN2hjDNwuYHw(7YHw+8Ywu|LwFBC_+ClBT z?f7>CZ3G!;BNjm0`$4oF3Zm_kf6?}zM;nO%w2?^dgCN?-kRzdu#F98b8yTs6*g@j8 zj|PS|l0cFGJtPri+s6ZtZ6uXs=x8J9fVNNnR<@Bm;s&&ld{RKhlcUH4GLcLolgSiP zsC}+|p?#@+rG2e^qkXG=r+u&eu$>eI(Ka=RwqpQohl6PQDTub;{zcn=0d4ab+U9FN znrK^eM6}hBdWJT?_HzeWqWv;Jv@Iu13~h~owqJF$;VPI(Z~m*9l(dmm2HI8v+J66A z*+$lrGZ@-VASV)yP;wGEnVdpSC8v?owLdB1C_)rriU>tKMHY&z6xk>ewv#i1usbIR zyNz4|MWTT_3R^?ERfVFkf06fJK;AVBdDl`Tnb6yOMCffNH!|q$ph)Q;H&LVx5PY|i zI~bVmC%0>qBKzOVuKS2?hk2Gfpq)XHl!9Fp7p#G-5k>A&9?yLHxbO@E2|3FV@80sDJVIU%=lXhQALf ziZSu`$r17QHTjm|?;DCnc98EViW?yQek8vz;rA1|pQ88yNI#zAi7x$k%<$*@Tk*$> zd?etHmw1_1c$K&FVZ4J6=LhkCJit>TMPn#RqG&8d$rPnfG>#${MUW-Rz#l)%z#kvO z@Rw%dFT=!N&cFEk&*P6z0sQgM73o3z@o7iGAD_$T1OE6tiZVO+0*bN*hChBHKSh^+ z{A4Eovj0|`@g;nzfxl@Cf4P63VFo{+;je<9$yf4Kd^JCdpUuzV=koI?%BKkGI-a7V zD4IagM2aR+G?}6)6cujg7XX2&tu|m+Q0bwFW~PuhQC&dicI{q9}$1+ z_!AiZ)>Bm6!JkM`$pG}uj8-hZ{WA{JNO& z{8RkX{2q#cpU~EGDY}rN%P6{>qN^ynnxbnc0u5;^MK@4%GeuC{J1Dx7qI)P~=fe~| zM$zLGJxS416g^GRvlRAry89;cFR%?yipu)<@n+=}Wn|}ivRxUOd4;ZQ<`i5|lCs8cMoNLzd@+7 z524}=Pj*H@dbZ1*lLtQ5nME0{g1nqOS8hRpCpQ-yth3S!yVvM_gHUxJLPhyG?vfH< zNx+^>14Lr&&%!D5$x#>CXqGC^8es@A28-!-}AyklCR9H}y0o+Y5VazT_cNJt5 zWw|_=h2VFcnN^UNSJIu(7Y3oZeF&B0=N1)bWE6lGcUFcg8@x?i1tld#u3S$}zNgSr zl3tus)Sb|`1|e`h>g9)?QBa&+QUD&@#n~C)4qjXcP4nayxk?JsGYWFDa*ET_v%3@e z(I5nVL%j%PXG8xN7v#Cpp?_T2MJ3?SUXWevDk#V*F3HRX52f55P5aFt1TH_l2o>ZP zy7S#R(CO(J&}&5*C9Fm{t|IuE;V#L6V&|RTltBnQQ+g3%cyVWXid`8c z3`bBsIDt@-?}B3io|2q`{F1yLqu(;zAOub&y$BT)6?yVAGmBlhB}E*vWT!K+5K2 zg2XN<>^^8M`39kteF%ZX$pT@Y;Y!a;hic{K0HK^r5SSqPi?co1`GuYyJep__THS|G zp&Qug_M`(-N&t`rS-Gylyh0ec1-bd2tP(b@^cb{mgV6DP2o)6Or^A@fb7d8#!?BX0 ztbFLTj4T*2=>^5PnYqP91w97sRD;mEK7;_e`9tU&n2xex_`<}LHz(JXpH-3xqu=d;L7NM`mJJ7H^5HleNXg*dk7b4hjtg~I zDk#!AER_^d=7tmU!0+wpYWS5{W`hD|0cGPPt@0IcUf*h&&uz0Tuq@=}pR#%m@b$aWk3W zCZhYehn{(SZ9WHB!cL*+w7r(4kg>tCj2&UBgBKp`;J{XPs_sf+X|$|Z6!I`;`8LC& zCaz{S9J_&UMxqwWad7Y{M84C~%GGp#V5DlZw0j+c;bd92(^=-Zip`dlmQ~De_%Gfc z(P7xK##ox0m^%R{G;@dfv zWsF}4_+=vDe9Hx0NC0i_JS|S&oVHxT3cQq}^ZP6C4GSoHMuC8#jllxZPRq5dzzaeJ zZni8dB2iqo^0ry7?c3Ve{FO&wszz4^$@Hreu+Wp^l-a2RKa}nhUKllcyqvV@GssRvV6qe7-RQiiaN}yea5QxIYpiQRqZ#+cP0lH zQ?%LS;18C=mU;&ape-RD{%l$1#&WkV`_1x4SAl<0v@KYm6+?kmuu@;wPk|O>mCOQ< zrRaJn(5iqlTD;{4Hs&4O2B3aK2Z|3e#TsS}XXWYR!#aqf?PhsVtURzv?&z;Pt2M?f zuZE%<%?8$4M>2>2undS;M;T+F8$_%L)-j<1d-RVr#p((*-I_|#PO~Z*tSXrl-P&JO z99FO)7-)r}Z|kbcQLHMrhpI9Os)8KM)Nc+)YoWD>71#}}CRe6fOG9t0M^kXrGX|=4 zI;#o{`@8$A%J42kF6%<1b&hpjsKwU#6y0kQgYA?KD*)ua{)mn2VsRs5u>o)E5^F;j zF(~B$lh_JItcfCUeCRV_SVmi6DQYkYk~|b-65459#hA1!#H8avgdm2{5RcYdPh{ok z1Hh_L^oUvB$*eq>B_8dsys=#}vW3aWVCB!Tf?I2lSkJz{(0XxKvo4`%w^__4Rtzk8 zpXjfctgd3(x)rn8x|I>@r(bWd?)Zxe++u|Tfo3~zqiBy=fje0R?xN_K{wm<^ssN0j zP&;>79|^UlXFGRW;bdR1YSyPHdfqJN8CDFe&|m1Um@?}=v-?h<=*2FKzrwojrBL_1 z&M+R{eaf-EWjzEZ=B;mA-?8qu9Kev8i{gR?X6#Yu^Ac~VHo<#91ikDG*A_c#h?iK~>cZS0B zve&Wme{$*-JaO6SR}UPn*AM@u)w44&tJpOIY11pZAGu5oy-Azq_d%vWk0Z0GOS@_7 z)}M@Kyy|tF{QssI!FHtvRyEYOb+6g)M$KOLI_~*@Q?n2o2f$$HfgKQ7L0@UMci`)%yBzQ46EBg2h4zUy_|_CKj(Z@vvk zGQgqac6Q2sh5kF$_ytEFx-)yQ(UAB4f87vM#PyPa-G!WOgwc=>ypG2INsm-C*RgVf z%787_HWqe(=N7DTN*pS3+X6vIuClGRtpP}`1xR9R z5RzD=*iLa6U=ln2#pHhhlV>tao<*_E#N;^)lji~^;X|fyO4~ICCa(reVg+^}Z5`Ul6oboAuX6|CNzXf{BpR4>nAhIeuD9(l zP`MpYiNlYO->m7awg(t0Z?oNQyTf*;?JnEhwtH;%+U~R6PjLjrkrYQ!JecAk6c43% z7{$XW9zk*RcH4tNR6Y_El)D)!V@y=Wn}QN2{tL?g0x0(}P`*rYtO?537${%2y}>>d zkEA%x_zAF#att-Q`&}D2dw19lQaq}|_CCeV0RrmaI|oYP$o>L zcrwLPC@!SfO>q&$9*T=8E}?iT#nZM6GlGz;5~_t+0LeKFlBFgj%P5{naV5iK)xVhh zFJRKoFj-IW(IzGv7$%niCgDTjC?H@GegGz6;i8|67mgDG43n)CPwx=gC@vo$CRYn< z4NM--FgXJRov@xs$BMp~j9TfO5*?hj7n$XrBAjlZ@-&9Z>LcVgbDSew#!z{#aGr3! zuu-@`xKOxAxLCMExRm1A6wje}F2(aGo=@=tiWgG6h~mW*d$$Xlf~dU8@O%?G7%Go7 zQCS=Ge8Wrs#pHhhleaKT?xfgfV)Ax|$vXg(@S(VdVG@1-CT(U<-!Fhuc!vOYiq>@q z4^iwNASNFbb_1q_$G}|+*Ms+)@C1U~OZquR7#^|1EbLj~1p|oBGaxoF@%RK2u1op= z+05~Zz|QCkuL`dTuM2MoZwhY-Zwv1T`-KA(FQ>SX;uRD(QQS;%3&qD#41+5`aoctw zcv@dLWay6qoYtqf-2~$5kp8&-UnKq)kjPH#3qMi3(nKOVvM>AwNQ4i?s~8gD2Ox1! zu&YHPS^$Y6sA6k6L@UL|4-AQ-B&xb}6cr{N*Mf8t!US4iR*)a|ejRnPRnp!YYQs^BACJGZdcR4+*T!JkgoO2tmmINmS9@qUW89U+sM zV~2PXtKN+iU*91D#&6J0T?GD5?Cw+JV$uF@j5V|0Eo8ALbI!M)5K6adEf!g!m-G@SPOj z1)zn6&fOH>L-D;7-$(KN@aWWeZThXea5F00ac=zWf$Mr}{S|PPb$xT|iunzJ;>Lz0 z>~bgY(dwR}G%%+DZoG#33c&{@L}s?HwZX@3e(yoe^!D;P1{o>4-^?0%Xp~&yThY+C z#_NdcUKqPiwvk;$)u$4$D^=SH8^jA6T9!69`I`e7IjPyRSNLk11FPqn&)^=(x|MBp zdduK8?pj}?s}^o;Z-)yc$Ln90HV4{f`C3=xW>+kp?yGe-H!m-2Xw66;mtpqF+ah=o zZ4uuQ_lpO_cPWOh0CjE`#Sd>0-xJ>#KM)U5{0PO5Qv4Xjk2BvW=F-;l`uFOFHpa)H zeO}BqA_DdIDtO&2TsGe)SMcU}xKyjEeZ>m68ruL@m46AlMLsY~zpr*qMi#iRr~4eA z8q)nM?$BoOYw;WLTZ(s6{0zk}Xw%JB{viGgHz$jS#UDk`O`f3mNs6D^EdCll0F)J7S)my>gf zv54blf{TJaP9?Zi7%wj$yJA5g8pbCTU!5UjC?piNz&TrfWL{N!ZLQy5=darr1rZ;Hjp!#(L&s2! z?-;IGv>P$9E+ z_!$leyI^Hk*$+;IeRT6S{#m7rsv9m2+iM@2oB~&z8Rc|Q>Q?Q+n!u{+${4XZH7#A! zLpW^C%*xgvj040VhyY1wqI2>TElhKCx{HiZ2wukspl(uT5f++TOY30JG}Je+t7M0S z-d3+^@prv}8*;6Ck3ObsdVlxx_qdV1v#dOHNk8PMnA!Wj-ipd{^RixW(ly%3c&axA za?FCWB;eb}SkT4T&N*-jr_WPJJ#T)nvpeUN!`Fq2K&p0wPn`j*&c%?upXZzaQ9W4r zjj<3zEDvIal|c}MDz2Gphx_zTg(Iao2D+a67qs;M(%taEJNR+%upfz6|$t zf5?5s{e}o)vA@Dm1VsNzMOhH(s}fb~QNDbrR*&+v9IZgj=s0vb+KzTZysl@_^XNsm zT<%S{R&GB!h~7ts&_~z;mw&~>#a~Gfp=$yz#btOF#Nujz>zLZ{>39Ra26y5+@qPFa z{5Ztf+K&$!f&inSK=1~C2Y=ziT@G(jgftxPUKbBbQPN=XCuyiOOqX&mQv4DKI*RvF zyl)$`U`sJlEVK?J2H34B21Ea=pa|=iu#Y;jjADR+`R2%pz=awTjrsdTRc&k7jPW-q ztKoWlJ>_0$3>PLPNn@E@V3+1Q;cooL4t^gArl?nRZ)_<=8V68e73h>wnCG>ly1CA` zCeGIuS1>*&Kdu7qQ-`|_B{-AX0g+xv=;C@QOUeQFHukJT0)ze=n&CDn6~HaiddgtV ziQJ)U*^SeT3hXCumkQy&<)ieodACSYxik44)`Jwk4c9HhxwW{%|LQm>QdO7o=o(gJCrv`7N0 z9<&B#$M-4zfMU=BKBV}g>!f4RMyUo;)G>vO;*XjB^@;xeQ>Kh*af_k%ji@dq%&pCs zQ;i4Jz8bf$b&fAE+qhSAPD9($D!8(;(GPFDjwF`T47OwB@RnCqLWG3oRu(Hmzef{# z*asJOnh^7cG60D#S01lpQg>oK-=*gluv2Gn0>)hkCo^($;i!-&Bi98d+2A+|Tw0u0 zoDPQ_LhYz-Zf>mcwU(OIHq@E!P3rb)@Y=PR5b+~@{kXWba5XginV*-le!VdpAID~6 zOHJ?D*!53iCmwJ_2%;n_#zY$t88vvw&|$+zM909?7&j^oX2vl|amgvkqbF8AJIKyHMr@NG&D8_j4DG1hB838FbhxhH-T3l3vytzVQOoOUQ1|BY29jQ zjKPTV_7ye$RtkLPPO^nq{WPrN^=UXWb8fvM<@j7f>uh-wPl?=nG2;(F<~Na|+#ga4ajoI2{h@ z!J$kz>+4-6{kZXIn#|IV6K>M^EweQxjmis@9E9y5!D;)0`e z`B|BTu1q)z3&+2TU^Ew$&dO;K8Wx6J3ovc!N>3;`FyyIVHRHpkvbdsHT=3>y3wMZx)BeqQ>U79 zTbpzOIFn25(n@KSv|3st9WSkw)=4mJeMa%;6n{bSmlS_R@z)f8LoqBLzk@hzk|t5< zB2KP`?{5>TLDOp6xv6T2IsfA~xo~;@kFb1mN-rI8D$_DVrWh*}RDD<@u z!nDCDHh46vt)a1@4MNt;X{c+1L#!-WX%lmegc0D!g5GsLLW{m5Z8C{bb7fM&Knf@Z_V(Aj;Qt2{jlLW@XA1J7k_(zIib^J5M zzfk<^b<&m6RnpbcHPW?Ghtx^&ZxsJdiAc#HN}QCGP*Ta-9&SeE3Dp@E$9lvHGw53A zMQXQjb;d*8{1P^`wYj~;AY)vlZN%j0o4+&=XlIvkNB;$Vog1*m`is}0Sq$X!UnGH} ze1AvZ>qK+9};CfvxHfivOg9qXbccw@P;)@c5MOmhPd1Fmo#yD zf(M}}OAvZ4z{)k7^04$M*!84GDB(M#$0)Hdvm>jdZjuNT_DKAs^c0tR?X|2OkzLX# zGY{g7!KAg`j58)ZE5Y5|Ceart5wy^d+$-%fNSGCPReGE8@-^vo=?&>k=`BhmN@PkD zN>obhTcvlT{n7zIj9VG0{0`O3qr7GG`~=P8nn8)53u%kSU)mS|Dsu`A*h=i{#*hJ*p1Q`(wEX#($~^A z(znug()ZF2(qZXG=_g7eD2b#biju*U454HwCBrBgPRR&LqA7`?B=$z>7wK2{`~skc z50}9Fp`>4A3ne2diPwLQWGIIpuo7TiQS1c-t20Dj2z>x*Hi((xU=D(iG=S$!Oor03 zRVO?f0?&%|lf(Wx-DYY;34}My=2+a?+T3ak6~(n1TIZWB_ZPKDh_jxMD8@?ls1OnAJA;0HSEJrKzDOg$mZYT+i2SJnD-`IZ}?g zmJ(QPLg*uTh&&VmA%Z!mQy#(s6u~M}hB!yC;_Nxja`IrD<>rOPnH(!8z}jCPDaXn2 z@+jFUkER6vPoN}`k};GdQ8IQL+9;2KO@{6Kutdrp7g; zO(1e$%>}Gv`WzUK4F2oL)(>tsz%zX<#(D;#ABNx^OwV|2u%B^;(FE2s0X;VurI+{S zMKC4fvB`3n1$4<11h1Sej|cG}=g7Hoo}4ciP?AE)I7(cUq*9W$RX$3d0BxHDy8vn;0_keB)FcSun{Kax;2bRO%R{8+`p>A z*KXjg&2J!Js(f^(JWVd8B!iMnO0xRjVF4cYbG#)kAtBBPy(yQ=Ge8kEgTndSHp3Hu z*}TlUVE7}WxJod2$W@f&YSUkpXUlWsxq!lX@_cTd42SsT#j;mE7L*oK-#7O^7I#?^ z*-3sF+adW=3ASQ3;Em^ya|NsjyOOhIHaporqu!+1^-hDC6z+SVq==F{O5D&LA;}vO z7>uW>#jE|b?QCIJ3=un8o164tvwBHJvua_}O|Fyua=pBS5`fPHN+we>1xzyXGI=?) zv60&&H_h)VdzM}+O2&h~0yzp4^7J^b*H^wndm2wj$6DgSlMbE8X%0LpA?GVib(^y>r5PH?j zhbI~j3xo9?Gog-wJ}zLy-HL-fueg2?GAZK3KaKy4mYgb|W|(1m@VBd35bYO41B@Ac z8Qm$L&RWIHHUmoEQ;_vm8052LIB2^?K3m=(pCg}3$y7?FQ3B9EdW(F%yivYDKA)0f zC@G_4I{d-pR-_@m^^xb+V?64^Hk`#T4oM|L91Wh;RIh7Oy%P^LX!z@9mG*pPN}tPR z*jxpL2XrDf+w`DY)eP!9>`<9$uaP@I>5)OKmv_jWl*~9{E(qBtZ&gTKW|rEM$&e@hq_9o}orw ztwEs?>Sif2YQ8?zu40D3s)iX=d%>hNa5^1>fzAkZ3)D7pFPOmwoYVf&Q;;*>$#RaW zf>uGyKro;EU*vxg@{e_PNPAPpxdxmq@{*;HEiI!nJ+gn%?jU=?#57=f_LtrOdUI-p<8R z{|$EFy}p`()C0)Wc{`=Zz4c3$4!rnl-Zh5Y=U2||T)v{SvC(N7Pdb~Lol}l8zB#9y zafbd^$8k_htJ(qMzQ1U|x(R6nmkJ@-kKvYbE5K&B4va{rLWJfW+)WUkcsFdNy#wKH zKjgmQe&BuqV^TCqK*=Z#!c|U1vym6fN)7r3S{rPjU4pJbThKNzEj@&uL$9K@U<2)Y zbQt}L?GQgF5vO1mE&_wn0*GZ2z^n0Eyb)gq5hr%x=kaU!ZF~SC0sH|bronI_d@9L; z``V8oi^;LXPgaxD$@%1Bav8ab>?FJ3Qsd{yi{wM{G5G>6s14&I`5}BXpTMxYtUyia+95XQv7PeWY*BHme4Bi`e209ed>1947gkd;i;~%t%%Nm1TU6W&pZnqS zAX`+-V?XAz9}C#z90!vntgJ)xrCZkoVR4}stxwc!JF$C`ZcC)DL~OCvJ(0ema<9<| zMEHZN!mc(1mHX~Fx-a#*=tkC>QKx%k?rzl37hBosuzjPi$DZuk0hIUXe>)P+FTQX`$q}9rBN$ul_9mBL6D?CjTz~A^)Oq z3Yg7Wnf@A}q>YkxN>)Lc0h2Yna9`>g;6 zoQ6O%GoSgrERcPWS4LJtFANLfQ`bjeQ+j^)mvJ6{y|2Bot%CV61=w1+r)maRi|SPm z9bXKCEv*oLuyu|3x^`*9N`GC?>|pHB7lKP*Ot3bvJ_J9l)eS3PgM*nJm|hnF@DEnQ zST*X#hq(gN0=W?<7{DVgHBwR*dVEP#n8&<+S-TTKr9=O|aP&aB#s+R3a3( zXq(ycbbKpAVELzj>1S2Qb4nSZi~>QRL@O~$tTIxGQ^3%(nvyk?98bwwO4d=bew*S{ zMk@*M6JnQ9asnkMQu49>$Iom>xCcwajf%59M4urEpozw_X~1GIY(u-jO0X!{KzX+5T)sZJmDF@Vta#yW=63fMTT^dARi;Wp@R-9N0Wd6`Nscupx)tXNXwt=Vd zHf4%ZsJN9P#iJBcatbAvP_l)Rhbei6k~g%<*Oh5XsdBV(3>T)9Dbtm5WrkA0%~L9s zDsGv!Vx+BbQU4kk!QBZOwB^R>A`Kgp#48P$*9&%9+n}IS{ znWxN`7b^?F@t?qY?sQ6E0SAkD2twg?r1ig+Hw*+__REmn)nN6pT<2!Rr_?C5l$=4y zS(I!DE#j3K#v1s{;2Jo*?;R<|YF}AyBs@Equs^*fxUN=OjHKrrDJi#&U3O^0%1REd zSq3qEp2q3=fU-t`dm;M^4c@7&WmA8DuV7KAtXED@PMpscV8#w8B^OY#(d$^0#-vyv zt!-IaixIFqkmiSJq_xS{m{!}|(&BG*H3F2=R`}~0d@T(v{%(KySNm3gs0gGrGzZdJ znjsizD-1N4|6QP?unUQdI-jJRyZ{soSQYC=n@;5vxcso&1E_UNdrf0Qt#Mt7E708D zS_^W@73xsXNK%c_YZ`S@E8wP@KzpDoK&nyJ8OoWkhz9}JLjW+?cPeKw2KD={?^xQP zoTHqpoTpSN8~Ce~3n{sRLLd&(LCK{6Pxciqz$Tk};`3tV5*?qLl*=i(hLTMtJ};x> z>c2KNg=Rus5AoN5q7g7qYe4iWuCr6QS^nMSEjV2@SGZ=Zj&d53D-7UdU|1$R+vzu)P$2W46 zZpsMq(l)~2+#@}{D?lZ;98q^dJiqtrKWZbt*0q@wD-_bvtfo+bJScFOzw|S zvYV18L*q*wZ49Bu^&te(nJKJHzVx_1%NTCzWMeEoaRi|j9JZ>*Ncz-~k_IPP#Tcsl zgG05ysk<+y%9V4}3UwxMs$8vR)5Gif^zbSrAVFYyfUht2o*vXW>RiSub%6>_AA2cz z-elEtl)MD1_K-~Mp{^Ml&b{UY)ywdAEG2MJVmBvH)vx<*k{A2)tbh+Mu(B z>z=4VG%bzE@OOF z_V}z!aOmyZ(QDOpFeFZ3I<-o%L4V#>QQDx?UJRZFNDyEx=hluxV zE;?`o#P{jnD~$ey#XRVjeY)lU(r;MpH2N1VQtJhjfe-?fppU*`u4H?v9H5yDgf9+@ z!RzZ`1*+aa$tU1wt=`CmsW+)N!?sJUu~XYeOQhseN`C4W2kLF=?J(fis&|<UT9Fu~!0I%`3 z=YalD{V3RtpHUu0{IA`*@lT^0zhK??rTP^mzftl>S2uoZbmQ;;`ELA8??xUpkbgdO z^}}FxWGBFVJElD8u=AAX8TZ3sc@{Dt>DCLqp>}~g)M*#(66GzFmqSJ!yJ`>T25+|8 z?O}EY<*k&rQC`?=AH*ftBPn=0gRM=1qn$vt%QCuW9uM@7<;rGBD(f1E*^?=QeI)j>9G%)$C)Wbn9rhfN_%>D=_hd#PLHxKjDXKadXT3^}11QUS-3QrTSm<4eOX; z`_o;JOv78qxMo&6-#(F*R$w1*KgvFV^1zxX$`7XekS*Z;vYc%??ZFxE?R{?BHq8bvz2piGzD2(W!S^(b=cj zk7lqarTnlCZVyz7p&~dSjs0!bVzXs4>@2v0y@K*1I_#B{k3JHJW-}1YvCpM^4CUjx zK(xT_?XOplgFWH{zEn_I{&7PbpJg$IS*!i#W^$lGvx$h*QJ z;UnQw;d8ikB3aC1r~buqu|ljAtHs&kTyeg*P;3^D69eK(agDf6JW)JJJXJhHJWK2l z9}=Gt--8oYVTRKi^l}?n-k~T=^O6N-#fJf~$;3vCT+A3Wy?T~Jg4#>m6gGQ5g z$`8tq%TLHp$$R9N9ne}LILN0|hs!Ah`~EmG>0fYPq40>jbG zuyTG-*`++999D^HRRy*xQNz@9b-Y@n&Qp(7SE$FU>(vw0lR$|%O}$XPR^6;_Rj*gK zt2e6ms!ym-tIw#{OjMcN*b?z@#M2SaM0_6cL&T4fF_DRpNs)6RkBw}OTp4*nBcG4_GV+J0sHl{v{HUX%CPqz(az}Zh8lqaFHbiZT+8K3Q z)E!ZGMcos1U(^Fp4@Es3^=Q=NQBOp@6Llc!VAT6jhoU};`XuVJs4t?vj`}X@aMVwO zErV@?#liC6(*|ES_~OBr4&F2*a!C9T=a7UUV}^7Nxn;<$Lv9~(=g{<_6NgS7S~#?5 z=tD!F8T#DN7lytxtZdl4VGD*W8s;7L=CF^3eKPE`VP6biI=p@Os^M#fuN{7P1Q}r& zVH+WiIAz4f5f_fQc*LdAgQ7=9XGiBo=SPo^o)A4LdP=lA+7n$8JuP}sv^UxpT^sF> zUJ~69y*zqFbaV7^(Shjmqi>1c7yU!bu$aj)wJ|5fbi_Oq^JL7Pm}g_2k9jTT-I(`c zK8X1+=Hr-8V?K}hBIcKv-(&ua#j$*>HP#uM9-9-J7h4cJDRxS%JJu6h5$laz8ru-N zJhmxzRqVRhQ)4fPy)<@H>=m)s#&*VTiQN`^W9qcHZ^3jnW$0>0saYx53 ziED`q#I?t*iqqoGj5|B-oVfGiHpX2TcWvC}xUF&5$8C?hG4AQOSL5D_dnfKd+y`+V z#(f<3Y2458)_6HyjSq{Dj2|37G=6ye*!bM|W8$aB&xoHHUll(qeop+n_yzHc;=S>0 z@hjt3#~&ZRF8+jgE&inVQ{qpHKO_FE`0L`Ii2rnyGAe!4>`}*$+BE8(QLl{JKkDG9 z_eUKX_2sA^NBunN*HOQZ`qPP=c4xRV!a3ME)H&Rl=kz#BoyRz*J1d>l&e_hn&Lz$k z=W)(}Q*)l`Jl%Pw^IYfo&I_CuIX63ZI(IvtbUy8T#`&D{1?Nl7ea=^$uQ}gve(C($ z`K|MN=V9kh&R?9rIsX{VjmD$-(eb0FjIJAf+UV`0UmX2?LPSDl!iPIy1z z>x3T?eoXi|;g3Wv5hwDA5s7h$If;3R1&K!`PE4GfSeRIpSe!UDu{3dU;<1S}iFJwf ziAxigB{n8DCAK8CCblJROx&6Ha^m4J!^cb+Q#a=1F`Z*}jd^O!Gh?0`^TL?d#~d8< z{+L5!J{t4Mn9s)iH0IYazbA1?IEhb+PfAV7O3F#fOPY{0DQQZQJ85Rp;-uOnf6|hq z#-ygCmZa7snsjc`=A^Aj*CpMMv?J-Jq+611O}ahl&ZN7Oo=ti_>BXeINiQe8n)G_o zn@Mjc?N53)>Aj>s$HtCzkF6Vf#@L(3?j8G0vLo4*oSR&bd{pwp^kCAl^EyyPpBJCZjiZ%y8wd}H#>$vcyGB|n?|Qu4m!SCZdMemi-8 z^1I1jCI6NZo)VD~l`5uGR`~hgmG7l+cNIDaW{@ zMO~-3PIsN&Xs>q6Hhu1&5hUAMaKaNXs)$913ULDw$VBd*6>Pq?0P?QwmSYE4Z} zElX`ly(IO%)HhOpN{dR1O^Z((otBuEmX@D3K5atUq_in%?z9G2r^{Iu#;d*1VsT`$`IKgvMS5QX`FVpY+APW-n&kn_B!?S zeV*6z%jfzduFv~=pG>-u^fc)^tSc-I)(h4L77rT;8w^W;jew1U!C^=k8is|X!f-G= zj0gi@AdCvjgehQ4U~6EVu-EVecq*I=uYkMZA$SzN0^S1O0N(-M1#g4zh3|*A!%xG{ z!7swEz^}t^!oMJTA^IT(Abv$8AciA;LySU9Ltqg&1Rg;`K!{n0EJO~1k0?P@BaDbe zh^2^ngcV^&I1wI%9}z@sLTo{7L+n88LhM28LmWUHL>xgJLmWpuPVSjJH90%EEZLL1 zEBR{jC*)A%Xk;RCJaQs3>8F}36`79AKoXE7Bn_E|%tvyNJfr}rLoP*HkTzr^(u4FN z1IQq9Epi8P4{{%}9eEVlfjogciM)Y)iu{i1ii$(^LiIt#qXwb|qY_XfP@_O~K)cZ)bQHY;-GbhL-htkQZbR=y z??<cH0n8!HQOt47Nz56{dCVouRm=^{ZOlE)L(CJ* zbIjk^3E0WlY1okd%a!;VC0i=qZAfq7-pTaf&~sC1rKWnw0e^ z_flS^{FCxFax^5smD`0Q%|LyP3xI9IBjU!u(aRO zXleX3VVWpSn&wMenYJpeHEmtm-L${cUZ=fDd!Ifv9h07to|c}GK0n=%Zc1O2zBIip zy(9fZ`pNV&xE{DcxFNU%+z4DQj)xQAif|H~7q(pb@wPK0!z*B1i}_!aTwff{zd&G!r6( zR>CI2Ho{IqJK+rBGT|2CG2t!Y6ETh$Pn<}cK?I3>VhM2$QB9mjTu9Uqox~t9OpFm% z5O)&WhNhLMwh$}q9y95S7pM`n`QWG-1w){?8p zbz}>)Y%1jEJl1!mevM4!}TndB2qKGNQ6a}S>vXD|iSxi|*F;i?5 zJHQ(}~rl+~2Al=YNtl%13|%3jKO$|cGb%2mn@%5BOE$}7qn%6rNu$``OZ*c0px z_62_j$AJ^TiQp7)I+y~cgLsex{sfCbI>-dsAO|c3%fNZye6SqUf=j?U&;q(aKNtjC z!FAvUa5K0S+z##s4}wR)W8h8j4tNi|4?Y5)f*-)o;5YCG)D`Lu4TJ_m3D5{=6f_!| z1WkozKuHi8f}mMYCX@rwApsvm^LbD+aq=WR30Wv|0phn0Ad7%K*427Z9&|2tE zXd`qOItCqwPC%!iv(PQ*F7yC;3_XROL!Y3p(06KAY83!*NdOm#t z-AUg_-$`$y@1q}}AE%$EU!q^3U#H)s-=^QC|4sjg{*L~U{)PUHF@iCXF^w^U0b`&T z7)B~1osq@JWfU-q86}KA7%Ikm#zIB~L&vCNco=ILe=;^PwlKCcb}{xa_A?GLjxahH zw-|RB_Zbfvj~UMxFBz{HZy4_x9~qzX67o=a+`P)XaNgm(r_5iNlbB>?4wKGgGV_^2 zrh++}Iftoc&SlPLE@YaRi;(2Fi$W~G0!k>Gw(5*r4*OT*H#Dp`7#fmO>| z%v#E-XIWS_)>_ta*5CO9^O5<5`PKQ&`EB`E^Y7(9%zu*qEdOo(xBMUMZtNcHU)X)v z{n-84BiWCtx7c^t57>{{&)6>ux)t;&=vC0Wpl?C{f?o>;7Yr>JUhrGNsDhLN zPC->csGz;z38x=t8Yh#Z;FNLZbILgt93!WmW92k(92^(N!|`!ea#nNJa{lCO;{3%q z!@0@1$9cec%z452oAVFnEw>xD2e&_WB=>jjSndSwRPJi7q1VmA8#mcG%t}ijyI7vnKzX;otMH(=izxI9)$<-ig|N+<-7`BCC|V!@fP!z z@;p30FUDKJ+r-<(+rit-+s|v~9p)Y7UEB1u69HCLTNVrs3FSH8nLZ{Fp^b3Q+uyBiTyKtv)w{VYezwn^&u<)qxxUf@r zO8C5}PtnXGdeMTSK+)c!n?>J5BSd3G6GW3mQ$@+5bP--e6p=-sh$_ky6^IH&0+C20 z70E;`O@`(JRkSHQrE?OztBHAuGBqL3_+ zESId4Y>;f0Y?17d9FZK89G7%TPD##4Zc6S*?n@p?o=Toee~}KA{w5tI9U~ntohY3m zohD6{;-r~Unv@}BNx4#nocqgUgUIj4VY)`bn|n$Y?Ug z&zY%wnM5X&DP@2BT)`-lS!DrPSQeG7khRLz%KnsXlQ<;&z|xlL}DJLGP; zPu?UC$)ob+@|E%p@+0!I@@MjY6+;wL6d4M(LanG$)G92BO^WS`9g3rh3yPbHJBs^? zM~bJ4H;VU)Pl~UK@5(O95lWDZag}&W{3WrH){@Po^`+L*K5iQ8lO>swP!TwMw;1 zbx?Igbxd_!by;;ybwhPqbx-v`^-}d(^+xqh^{?u?x{JEEdbB!GJx)DAJy|_XJyQ)= zC#%uw6m^=Ks?Jnrt7+;*>PEFw?N!k>4JsR2 zHoR!tfe*GHGA zo2i5AkUESmRhO=trOVW1>2h?1I+;$X`$MPF&DAZ?)#yyR#kyrWv(Bco>$d8yRCcKx zUzuB}s%CuXa|4s-x8_s#~gCtJhYquRdJ;yk<-dp+;FVx2C*CTT@k2Q{%4LShKU{ zNX^Nb%Qbgu?$&As5WO!kCW%$SN&KPe@Frtj9My^qAEHTb8s*M#!opGtL-e@s47=y;JF=||4JY~FW zykqKX8fZ#0<(Z01O4A=Em1(YNfk|&Nm}*T+Om!x+DQ4PcI&FGp`e^!O`fU1In@~Hh zc4F<6+Ud1PweZ^P+WgviwF_%2>W0<*UN@_bUZ<_QRrkE^Q{C6P@AX~lFW>nGP|)tA*<>SOiC>TlP7sQ+Q^V(w<{Ywl<6ZyshIZ=PhHYMx<+ znGt5TxyURsOU!?mE6kPVYO~Q?YhG+#Zr*6#YTjYqZQgHgHy<(|G2gOuvBX=(TP9hi zT4q>amShXsl441>;4LHz#lp7~S;UrNi^4M7Qfeu)%(s+Vw3aGMwIymfWw~Q{ZtZWK zXw9~YtZM6G>uT#(>kjKd>tX9T>v`)1>m}=L>pkm3>tpLXTUT40t(UEjE#5ZJHrV#N zZJceQZHjHWEy)JACEGG=c{Zi3+-9=HY%6S=Y&&ebZF_A8Y{zUTY^Q8zZRc%IY+oDV z8xk7EHB4-n(lEUtsR7Y|YQQvb8WuG88rC!%Yq-(y#NN~1+uqOK-~Ow8h&{nR!amB5 zvSaOO_6$4GPPT*g3cJz1%x<>Z?2UG(Jz`&OUuj=$Z?kvUJME|JXYG&e@9ZD#pY7io z2Q`jq9NRddaZ)3!5p2wA6gSRpT-aFASlM{J@j>J3#`lh{j$sbSL3bz|a~!pf6^>Po zHIDU;jgG$@+Z;O`ZH|kMD~{`qTaLSq2ad@KIv?TWcpx>mW?xHh}?x!PTaTt{7UN z$zGHf;|0A;FUMQx6?i4yVz0tm;;r!dy+Lo-8}+X6uJW$&uJ>;Ac6d9zr@iOA7rj@! z*Sz<=&%7_auf1=*?|t2TJ$$`Z?rM`Nf#TWA( z^d0ea_&R;3edl}^eOG+feeZl9eP4Y4`n&kM`+NG6{8)dQKf_P(=lE%UhM(oH^E>=u zf6Twqzsi5Z|J487|I+_DFd={lpaR%HS^yWo2Y3Nrfy9Gng%ruX&Tm)(UjGc+eB|-HkCBZYpQ87H7#yh z+SJz6(R8BeWYd{ok6==e9pnVX!Q!AISQ4BUv+S_cb4AKGgg<)HBpO)Gst3G$=GAgbI;DSs`gi88U<%p|znuLz_ZdLfb>TLVH3- zLMK9}LT5wgLw7>=Lk~kw!UMvi!ehdT;ql=a;nXlLObC<0n((6V(r|s)8n%ZW;g;}* z@RsoQ@UC!MxFdWfd_H_Bd^LP0d_Vj!{3QG={3+5SGCVRiGA)9Q;3K36B|?qRB6$&3 zq#(kL{1I6YF-Gbm)`&ggjCdm9NG!54vMRDBvM#bUvM+Kxaxd~K@+tB)@;%x$8W)X^ z4v7959UL7R9Tr7J^P&r*wrEo{6pcn#L|dY(qixZSXlL|v^j!2}^m6oh^j-9G^jq{t ztZS@)Y-ntFY-DV7Y(i{uY-(&qEGdSK5o5Wr{1_+3iwR@0m@+myRvJ^sv@z5F_Mct4 Qb^E{UKmY&o|8LCuKTS3c1ONa4 delta 12336 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 + absl::make_unique>); \ + void register_##name(){typeid(name);}; #endif // MEDIAPIPE_FRAMEWORK_CALCULATOR_REGISTRY_H_ + + diff --git a/mediapipe/objc/BUILD b/mediapipe/objc/BUILD index 48c9b181a..f2df3b7e3 100644 --- a/mediapipe/objc/BUILD +++ b/mediapipe/objc/BUILD @@ -286,3 +286,14 @@ exports_files( "//mediapipe:__subpackages__", ], ) + +exports_files( + [ + "MPPCameraInputSource.h", + "MPPLayerRenderer.h", + "MPPPlayerInputSource.h", + "MPPInputSource.h", + "MPPGLViewRenderer.h", + ], + visibility = ["//visibility:public"], +) diff --git a/mediapipe/objc/solutions/posetracking_gpu/BUILD b/mediapipe/objc/solutions/posetracking_gpu/BUILD index b701a83a1..4533d7cf8 100644 --- a/mediapipe/objc/solutions/posetracking_gpu/BUILD +++ b/mediapipe/objc/solutions/posetracking_gpu/BUILD @@ -1,31 +1,91 @@ load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_framework", "ios_static_framework", "ios_unit_test") +MPP_HEADERS = [ + "PoseTracking.h", + "PoseTrackingOptions.h", + "PoseTrackingResults.h", +] + +MP_IOS_HEADERS_NAMES = [ + "MPPCameraInputSource.h", + "MPPLayerRenderer.h", + "MPPPlayerInputSource.h", + "MPPInputSource.h", + "MPPGLViewRenderer.h", +] + +MP_IOS_HEADERS = ["//mediapipe/objc:" + header for header in MP_IOS_HEADERS_NAMES] + +#[genrule( +# name = "gen_" + header_name, +# srcs = [header_rule], +# outs = [header_name], +# cmd = """ +# OUTPUT_DIR=mediapipe/objc/solutions/posetracking_gpu +# mkdir -p $$OUTPUT_DIR +# OUTPUT_PATH=$$OUTPUT_DIR/{} +# cp $(location {}) $$OUTPUT_PATH +# sed -i -e "s#mediapipe/objc/##g" $$OUTPUT_PATH +# cp $$OUTPUT_PATH $@ +# """.format(header_name, header_rule), +# local = False, +#) for (header_name, header_rule) in zip(MP_IOS_HEADERS_NAMES, MP_IOS_HEADERS)] +# +#MP_GEN_IOS_HEADERS = ["gen_" + header for header in MP_IOS_HEADERS_NAMES] +# +#filegroup( +# name = "gen_mp_ios_headers", +# srcs = MP_GEN_IOS_HEADERS, +#) + +#-c opt --config=ios_fat --cxxopt=--std=c++17 --copt=-fembed-bitcode --linkopt="-s" +MP_GEN_IOS_HEADERS = MP_IOS_HEADERS + ios_static_framework( name = "MPPoseTracking", - # hdrs = EDGE_ENGINE_HDRS, + hdrs = MPP_HEADERS + MP_GEN_IOS_HEADERS, bundle_name = "MPPoseTracking", + linkopts = [ + # "--no-whole-archive", + # "-all_load", + # "-Wl", + ], minimum_os_version = "12.0", visibility = ["//visibility:public"], deps = [ - ":posetracking_gpu_solution", + "//mediapipe/objc/solutions/posetracking_gpu:posetracking_gpu_solution", + "//mediapipe/calculators/core:flow_limiter_calculator", + # "//third_party:opencv", # "@ios_opencv//:OpencvFramework", ], ) +# Custom Bazel Rule that patches headers of framework to flatten header imports +genrule( + name = "MPPoseTrackingHeaderPatched", + srcs = [":MPPoseTracking"], + outs = ["MPPoseTrackingHeaderPatched.zip"], + cmd = """ + unzip $(location MPPoseTracking) + sed -i -e "s#mediapipe/objc/##g" $$(find MPPoseTracking.framework -name "*.h") + rm -f MPPoseTracking.framework/Headers/*.h-e + zip -r MPPoseTrackingHeaderPatched.zip MPPoseTracking.framework + cp MPPoseTrackingHeaderPatched.zip $@ + """, + visibility = ["//visibility:public"], +) + objc_library( name = "posetracking_gpu_solution", srcs = glob([ "*.h", "*.mm", ]), - hdrs = [ - "PoseTracking.h", - "PoseTrackingOptions.h", - "PoseTrackingResults.h", - ], + hdrs = MPP_HEADERS + MP_GEN_IOS_HEADERS, copts = [ "-Wno-shorten-64-to-32", + # "-all_load", ], data = [ "//mediapipe/graphs/pose_tracking:pose_tracking_gpu.binarypb", @@ -34,6 +94,11 @@ objc_library( "//mediapipe/modules/pose_landmark:pose_landmark_heavy.tflite", "//mediapipe/modules/pose_landmark:pose_landmark_lite.tflite", ], + linkopts = [ + # "--no-whole-archive", + # "-all_load", + # "-Wl", + ], module_name = "MPPoseTracking", sdk_frameworks = ["Accelerate"], visibility = ["//visibility:public"], @@ -41,6 +106,7 @@ objc_library( "//mediapipe/objc:mediapipe_framework_ios", "//mediapipe/objc:mediapipe_input_sources_ios", "//mediapipe/objc:mediapipe_layer_renderer", + "//mediapipe/calculators/core:flow_limiter_calculator", ] + select({ "//mediapipe:ios_i386": [], "//mediapipe:ios_x86_64": [], @@ -51,3 +117,8 @@ objc_library( }), alwayslink = True, ) + +exports_files( + MPP_HEADERS, + visibility = ["//visibility:public"], +) diff --git a/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.h b/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.h index 65f1b392c..40c9aa7d7 100644 --- a/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.h +++ b/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.h @@ -10,6 +10,7 @@ #import "mediapipe/objc/MPPPlayerInputSource.h" #import "PoseTrackingOptions.h" #import "PoseTrackingResults.h" + @interface PoseTracking : NSObject // The MediaPipe graph currently in use. Initialized in viewDidLoad, started in diff --git a/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.mm b/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.mm index 4ea760cd6..4d668c452 100644 --- a/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.mm +++ b/mediapipe/objc/solutions/posetracking_gpu/PoseTracking.mm @@ -3,6 +3,10 @@ #import "mediapipe/objc/MPPGraph.h" #import "mediapipe/objc/MPPTimestampConverter.h" #include "mediapipe/framework/packet.h" +#include "mediapipe/calculators/core/flow_limiter_calculator.h" +#include "mediapipe/calculators/core/constant_side_packet_calculator.h" + + static const char* kVideoQueueLabel = "com.google.mediapipe.example.videoQueue"; static const char* kLandmarksOutputStream = "pose_landmarks"; @@ -37,7 +41,7 @@ static const char* kLandmarksOutputStream = "pose_landmarks"; -(id) initWithMediapipeGraph: (MPPGraph*) graph graphOutputStream: (const char*) graphOutputStream renderer: (MPPLayerRenderer*) renderer { - + self.mediapipeGraph = graph; self.graphOutputStream =graphOutputStream; self.renderer = renderer; @@ -127,6 +131,9 @@ static const char* kLandmarksOutputStream = "pose_landmarks"; } - (instancetype) initWithPoseTrackingOptions: (PoseTrackingOptions*) poseTrackingOptions{ + typeid(::mediapipe::FlowLimiterCalculator); + typeid(::mediapipe::ConstantSidePacketCalculator); + self.renderer = [[MPPLayerRenderer alloc] init]; self.renderer.frameScaleMode = MPPFrameScaleModeFillAndCrop; diff --git a/mediapipe/swift/solutions/lindera/BUILD b/mediapipe/swift/solutions/lindera/BUILD index 0a945f0f5..9185b3750 100644 --- a/mediapipe/swift/solutions/lindera/BUILD +++ b/mediapipe/swift/solutions/lindera/BUILD @@ -18,16 +18,16 @@ POSETRACKING_DEPS = [ genrule( name = "podgen", srcs = [ - "lindera-framework", + "//mediapipe/objc/solutions/posetracking_gpu:MPPoseTrackingHeaderPatched", "LinderaDetection.podspec", - ], + ] + glob(["*.swift"]), outs = ["LinderaDetection.zip"], cmd = """ mkdir mediapipe/swift/solutions/lindera/frameworks - unzip $(location lindera-framework) -d mediapipe/swift/solutions/lindera/frameworks + unzip $(location //mediapipe/objc/solutions/posetracking_gpu:MPPoseTrackingHeaderPatched) -d mediapipe/swift/solutions/lindera/frameworks cd mediapipe/swift/solutions/lindera/ - zip -r LinderaDetection.zip frameworks LinderaDetection.podspec + zip -r LinderaDetection.zip frameworks LinderaDetection.podspec *.swift cd ../../../../ cp mediapipe/swift/solutions/lindera/LinderaDetection.zip $@ """, diff --git a/mediapipe/swift/solutions/lindera/LinderaDetection.podspec b/mediapipe/swift/solutions/lindera/LinderaDetection.podspec index 50f6c415a..0ebf50daf 100644 --- a/mediapipe/swift/solutions/lindera/LinderaDetection.podspec +++ b/mediapipe/swift/solutions/lindera/LinderaDetection.podspec @@ -86,7 +86,7 @@ Pod::Spec.new do |spec| # Not including the public_header_files will make all headers public. # - # spec.source_files = "" + spec.source_files = "*.swift" # spec.exclude_files = "Classes/Exclude" # spec.public_header_files = "" @@ -101,7 +101,7 @@ Pod::Spec.new do |spec| # # spec.resource = "icon.png" - # spec.resources = "Resources/*.png" + spec.resources = ["frameworks/*/*.tflite","frameworks/*/*.binarypb"] # spec.preserve_paths = "FilesToSave", "MoreFilesToSave"