summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2024-05-21 15:45:14 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2024-05-21 15:45:14 -0700
commit29c73fc794c83505066ee6db893b2a83ac5fac63 (patch)
treeb584f9eb09f308d0172e7179c1d920577af6ff1c /include/linux
parent4865a27c66fda6a32511ec5492f4bbec437f512d (diff)
parentea558c86248b4955e5c5f3c0c921df450880605e (diff)
downloadlinux-29c73fc794c83505066ee6db893b2a83ac5fac63.tar.gz
linux-29c73fc794c83505066ee6db893b2a83ac5fac63.tar.bz2
linux-29c73fc794c83505066ee6db893b2a83ac5fac63.zip
Merge tag 'perf-tools-for-v6.10-1-2024-05-21' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools
Pull perf tools updates from Arnaldo Carvalho de Melo: "General: - Integrate the shellcheck utility with the build of perf to allow catching shell problems early in areas such as 'perf test', 'perf trace' scrape scripts, etc - Add 'uretprobe' variant in the 'perf bench uprobe' tool - Add script to run instances of 'perf script' in parallel - Allow parsing tracepoint names that start with digits, such as 9p/9p_client_req, etc. Make sure 'perf test' tests it even on systems where those tracepoints aren't available - Add Kan Liang to MAINTAINERS as a perf tools reviewer - Add support for using the 'capstone' disassembler library in various tools, such as 'perf script' and 'perf annotate'. This is an alternative for the use of the 'xed' and 'objdump' disassemblers Data-type profiling improvements: - Resolve types for a->b->c by backtracking the assignments until it finds DWARF info for one of those members - Support for global variables, keeping a cache to speed up lookups - Handle the 'call' instruction, dealing with effects on registers and handling its return when tracking register data types - Handle x86's segment based addressing like %gs:0x28, to support things like per CPU variables, the stack canary, etc - Data-type profiling got big speedups when using capstone for disassembling. The objdump outoput parsing method is left as a fallback when capstone fails or isn't available. There are patches posted for 6.11 that to use a LLVM disassembler - Support event group display in the TUI when annotating types with --data-type, for instance to show memory load and store events for the data type fields - Optimize the 'perf annotate' data structures, reducing memory usage - Add a initial 'perf test' for 'perf annotate', checking that a target symbol appears on the output, specifying objdump via the command line, etc Vendor Events: - Update Intel JSON files for Cascade Lake X, Emerald Rapids, Grand Ridge, Ice Lake X, Lunar Lake, Meteor Lake, Sapphire Rapids, Sierra Forest, Sky Lake X, Sky Lake and Snow Ridge X. Remove info metrics erroneously in TopdownL1 - Add AMD's Zen 5 core and uncore events and metrics. Those come from the "Performance Monitor Counters for AMD Family 1Ah Model 00h- 0Fh Processors" document, with events that capture information on op dispatch, execution and retirement, branch prediction, L1 and L2 cache activity, TLB activity, etc - Mark L1D_CACHE_INVAL impacted by errata for ARM64's AmpereOne/ AmpereOneX Miscellaneous: - Sync header copies with the kernel sources - Move some header copies used only for generating translation string tables for ioctl cmds and other syscall integer arguments to a new directory under tools/perf/beauty/, to separate from copies in tools/include/ that are used to build the tools - Introduce scrape script for several syscall 'flags'/'mask' arguments - Improve cpumap utilization, fixing up pairing of refcounts, using the right iterators (perf_cpu_map__for_each_cpu), etc - Give more details about raw event encodings in 'perf list', show tracepoint encoding in the detailed output - Refactor the DSOs handling code, reducing memory usage - Document the BPF event modifier and add a 'perf test' for it - Improve the event parser, better error messages and add further 'perf test's for it - Add reference count checking to 'struct comm_str' and 'struct mem_info' - Make ARM64's 'perf test' entries for the Neoverse N1 more robust - Tweak the ARM64's Coresight 'perf test's - Improve ARM64's CoreSight ETM version detection and error reporting - Fix handling of symbols when using kcore - Fix PAI (Processor Activity Instrumentation) counter names for s390 virtual machines in 'perf report' - Fix -g/--call-graph option failure in 'perf sched timehist' - Add LIBTRACEEVENT_DIR build option to allow building with libtraceevent installed in non-standard directories, such as when doing cross builds - Various 'perf test' and 'perf bench' fixes - Improve 'perf probe' error message for long C++ probe names" * tag 'perf-tools-for-v6.10-1-2024-05-21' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools: (260 commits) tools lib subcmd: Show parent options in help perf pmu: Count sys and cpuid JSON events separately perf stat: Don't display metric header for non-leader uncore events perf annotate-data: Ensure the number of type histograms perf annotate: Fix segfault on sample histogram perf daemon: Fix file leak in daemon_session__control libsubcmd: Fix parse-options memory leak perf lock: Avoid memory leaks from strdup() perf sched: Rename 'switches' column header to 'count' and add usage description, options for latency perf tools: Ignore deleted cgroups perf parse: Allow tracepoint names to start with digits perf parse-events: Add new 'fake_tp' parameter for tests perf parse-events: pass parse_state to add_tracepoint perf symbols: Fix ownership of string in dso__load_vmlinux() perf symbols: Update kcore map before merging in remaining symbols perf maps: Re-use __maps__free_maps_by_name() perf symbols: Remove map from list before updating addresses perf tracepoint: Don't scan all tracepoints to test if one exists perf dwarf-aux: Fix build with HAVE_DWARF_CFI_SUPPORT perf thread: Fixes to thread__new() related to initializing comm ...
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions
y4{B( WʋߋF'WoM;8pV Lu28- Il%Jzs)4{MK(EMB0v+d8g(ֲ/Tͧ+b+RE([jy哤Gveڷh ăk %g:$rDWmHJ]!U fIZO>&#Jϝ/ǸHC![7NM>(3C?/ǣy8ߪ3?fO'/OdMILXLtSL$Mgw*/vTTGFn E42y{QSyaLڼZ!\<c;qUG;o+/M4yNe~yQodx!7SZ-MF,Elr6 _ Mn^ξ*<%GL/^ݕJuS\î^+2~E~ͦb_هd0t VrpawxnA)?^bMc<â$ Tܪ$'NuhqB87tpw;|&^K8wU M-|"}#G)[?u Y 껱gDɓS,)<~Kg3jNp7hty^D??pF;ζNy0e]YF~n{> rH*usi?DllmK8KL>| ުIdpN>DV3I{aaiwo͌jز [fDqp-N !qHHl~P2SCcYj|\c8%X <.Ƿ60veǵٮu;xNΘݴѧ4RM:F|wڥ(>0 20>pq%Y5Go;ii˜$|j;wT?9i5-VeZg=B#dn?V|֪Z 565OMnјN[Q}mRt@֘PP_lUmG Gˏȸ\o6.9#fc>5Gl},  #<KFtnM+f6pssr`Xqp tZM֌Q3 qwp:[hNty9v٢! &syFǚk\8 CA|ܢ m˳ءaTr#:Hv?24@rwD# U8Xwg@|G ]nUi/Jh^Ěy)W?1<ٽB*[6qpfD\" 8pp0f ާ,TK--]}Q}i)/4I5Ƒ~|W? b'WxiG>˶p%w9#m!q(pɄ]G8M1dSt<܈YyRSX!ֱVܜB׹cǍNAdYkD)(K*rfxXpgs (\~zSjv{ ;zZmծ~iݓ2x2!}ea/9h_Meu QhŖ%!-WiR_wĘ;p69[2BM)f@!f{Dͫ2z[F:›Cg3YK/JQ[`w)s@ \~l KJPƁQx*z={ .2hЦ۩l(Ql^ $ P©=? 2_.ԚXUי,vhTBUzz]EO v2hՇ  `ǬrtHgCvU:i}>Ψ@:[Ŭ z6n 6TNNsD1Lp3Pτ^:7&Vrê,RJYtH/8c8s.@uzj5W*2lJ̚D|Ngc:|yѡ [ba4kqM1/OBpo+l&XVnsWU57 G'Y=훥'`Z+o #AAxܿO|>gB^1+4kcft?" &.eq?ْ#W% W+v3E#<#++sG!yH006;VWJJ>t[Kz㏵.սmÃ,muXTF-+]xtp1B*a$T|s M<lZh pճ64yU$T\.'=Wp!ڨ7oyr-]LzNYz$Q@oNku#ÌSwL˸HkHj-K*QYy5-_a9E>F4ȾWTZOb=+p!z=_𾛚j_LXZy䵴HBZEvE?|oٓ)-!9^Al550uW;[hZ?Jc63j%h,TP!5G?>PB\eCW2wEz2=JcWbRcR cAjZP kZS*Ӌ)itԟ򮄛eG_^#CK.]ܓ֣JojUOR[z^'f_nnmOř%{[kv^\]yM\y 1oWHg h1o9BՒl6@Fip ^Dj)dHٷU XR\chIp|Xb8:VS>pFckYoK<|cجb4VL3`BWr^H-;<\HvijZbhFFvqs83 +A{,pMr>0~@&>/]kR`],U{fӒ%Rr%+)v h diҺ[y{;{D3Ďrc^`3FX.Tf!4>Qgk ڻUY)ls8s.콡AJ*T]\[ 5ZFO{zΣ^s 0}^.|svg`vp=?[؋b#r3D{XnBCe^NO?g"tHZ3_2q^e /Zw/}n,լ Xp]vx֋LWA>իk?T KH6{+ëRh[! #XwWwǣfU!ܛ>h6HͨE8h:HhUBR@ι 箿-+~(+{sدjަߑ6򞥍mE nZkk$.u ſx6F,ۈ?9I;T (u9Ђz贊ZlV[[ywG>@' ۗ>va`ٮoXqgS.z~3'OmTr{0V]z@ F}UVa7FJud،+j]p k#6u:v-&/麤Pg|oԧy'˸ Dn)Gm*^PufJ0EUラmKƁ [TBEz mqU9A6ٓ%<{~|O֡OV+REpuTJI4<5[dI%cqZ?QяG B区`&V^6uc$ HI0NޓxEˈ+6Wִ7;4?&o}#q{`h'n`\F.i=вq9<ިZʾCd 6Ii_Q]|=3SAx33;)Ŏʶ^h _f 2v9t*}ڸHFjAVACZ%UPxWĀ?ݝ_=zcDδ;oDjM}c{h%5-$I2:B@*B^]pEl~zG M_SjDҧUS]"+hG04W--P{^ŕC[?HKd-(3{~w'-gHo۳8G?& ;*|~s}h»2灄֞l>èۂGkNdM~L I/ʇO25f* 7bzKjk.)ia7wc2Vs84^dR)5vnI'LJl{gkeHS{$l9lB@h;`5ypm[ "eiq<Ċs'P==qFtD8Xv6b9\`${]Ghfh֮5hدd8 iIUR٭NSp5GΫ<^Cr<<@.^ɴb d?!|B˚j4mhutL)yam!0WB~E2jZNDCu@V xV5QlNmZ!v K4*/µגYFo-vsG;ՑtNs kI+oC+j%@w:j q;hХMCxfX'I܃*oTx5eAM:BGEs[*JRotH;ZZ\bp >5_|FeÁ{* xWwqnvsZ>=A$_$ͩٴι  Ԣi l]|"6B]Fq{T4&˶Hª&j$GN_NcPKIrK8#󴴋JTn`?y('\Q$4O}&ԯ"p% jn-fgrC3Vf>/voKwo|4/+[';2'[Fw'[QZ(T#*&oNFdɌmD֤?x?ab-6gDqd ıH*+yuY<䪾([^Γ`(3bSwKVA+`?JAoB3ȁdOye'ID? L ;>]UH^PL%L!Ju@v֬dkR }.RhիS`Z3~q?Ll1"yo{%WH@ ʽƈ(;eh"3绂]ZlH{'yы7:N[M{׶ ߏF3eW+tm{k: W8j[Rݭ"Yi Fm0U.({<Qx@){vwN{5(iy:n`h<-s+ڳnC~з_t+i>/-ބiA=Q&41Ѡ/enihEZAݒnkO6*F8L#u{+`1Ef.u-V 4^8_p93H)b 6!Z_,7ɕvbLY'j F Fl`0/CBD+Nx!QM5`"ݗW? D9iuΐ,hV9&CP7EQ+YY?vR5IIj6ڏW"#Y C7x Qȓ=ŗ?=Rx8+ y#0@Q/U ,`JvkjF [y@:Jrn4+]u1&[Wr+df kŇ~ b'j. kgޙR[g\4dB"yFCXEZZ\:wΜcTDӐ64Y=G/Xj dƢ%]̉ʥVKzFHb'Ҳfד yCy h4lZKú:UuGjԪLTdYk\%AmԤpBlG3 +"|DJ{X$1A ^43^[`#ҦYs)}C| ?w[ F ['}BfO`Ay;mkNPAT{,t(xL^Ϟ~DA/F# 9XN_6ۑӊ>Jb,nܾfs|VkVZ鞅7?-k0⯪Zk4r =[^C ڀHr?cd1- `{-KܭJ}rʼnMmݖH0gzߒ9,&+.Lbʐ E"k2/CY<|sYP'sI,˙y|2^@=3iݻЈ$yj#e 3kkx!9JkE4Ϫ 6nz'%woa?bҘ_$Z YzZ$=hzEφxT<{ZBfgP>d28ۄmmJ&m# XZIR]-+rpرEq7ϭm`Sbgl5ը+Ԝb)x}]bσEo9Eau`TхdFgn$mؤcJ8cŏ- v=YҀ@ZyE}9sz˳Nj3_]Xbp}jp:~nx6 B0m'Ru)w"BGك:6;~Qe.̱:[ Q85b ̾ fBmMNw9B5km`Tr{\ޗ7~'dHǤUq{)8{}aSٞ#/I9V;[T%gQ2וs+\}XkT+eQIV: L7*X u0N“ٸYx[[*W0dD꺡ZX/w>'Q;7i,''^n[83L=9%sK; 16NԒ+=FYЈ/- 6'"D.WdQ0ʱ9{+zC$y!-jpXеCZȄhn@uR¬Xsd3&U bw87Z ?B YJDG~ [[ך]gM U:ʘ+LPEk{<E;zWF/_MՄȶ =FF@T}U*2U*6GH]_ `:(p=^vƫΖe%#w n]8_:.TCXv8>@dɕ F:r.V@|6Z*ӂd+|#*;X7a0;5(Wىxm/jm^Gz A`Y$4-J5km̙?xphb3@|̮ ^aTd֎Logu hB4XՆj=K {3i/fc8;AYBKZW~;9X*qr)dcL($5UoObxIgMga)IB&\86w\㇢2h< eq9m+roL{I- 66xpͷ@EZZl9DXz)+=z& I̲iZu ,MxDmw d9ֈ!}..:[Wz%.HX\D#reM"YVc :4!28Y7&${5Jxl([š8QFW/Xڶ+oXf-7w"Ԫg"ŭݛW\E59&3ᓮ|_Ob<Ψ+Q:ՉxոlMaz];.4Tgp`aFu Zq xֺ80phz-D98ѥJK66*)'}H:fb-a<[Q=q0>g?sc٢3[4iQNWZKzrQ8JI.ङXv0։sCqP/T nroO܉P[ kPZa;͂΢~ÃrRve\klh_; }Kn,fD2ണ6V7b˕&}?6((av +^$qH'epp⡆o>۞$hҲ" 4qPpU }vAm\U`@5j~ TMs]u'HLP5f>x`ќ$jӂ$Z8&Hٲczm0RhGCGߙ@/OQ4SB:MHuQ܌^SOjp(?cCa]2HFĉ"̂w Yf;9cv+‹  mQpæ!I$k:},t׻Ɓ)Yͅv"ͬEE+Vk T\0>q^.sEi;(s6Q R=Li|:-&^|UgS_-裡n4kute0jDp>2u2 Ut0JIuF3@n*jvF{a W+<ܖl|S` f-h`,w 3u|E$oTRHKk}9]ux 8?0?u C$D/WBϬxs3Iݪ A9*(2ؒQ_`U$P5jΘtY]%/C 1$~;Z_;[d풶c, F{ڒU@qYG `%/4 Tf5>zv,{*>Q=݇O@Hu[,5 ʿԟґNI=:+k;&J2$Y.rɈ]eyF)o&IQYn|bNt!F,lW̢+p?L_.af3a+f"Kӳ+ u];K+2勮 v":[Q*ʿ\+7)i?MnggAҫmߠ:5U_M[)8s9qsB}5Q!o ynRF|W];jX8k؄P9AH[o8( v^ޮx3C%^}e4];sNܔqս݆`Πī_k p RUe#R'nȧE:zɽ^ĸUr#?ADFT S,O?WIM=S;aՊȰ:\fBiO@JxhؾY0w%l[ew PQsl#_B̉Vj `t:8NDӜ+C5[xih& 0)~ ! |Z [ypx_oe-vbm.\GXfזWdagLr;'xU]Mɺ;tr!H}aw*62jmUuh9lJ] F9nsU$y΃NVesx+/#`gJ')jxg2:N+׬M+l[q@hG(^E=P%z.G7v 6 :wl 0]t`,819+ʁlt2z}䐴tzkμo.KZnԘKUV-d E&N2 n%L7߂ E^yUƠJjՄ zJU[,@^EFe=Б6BᒃuP;e$[m̜$t:N HÖ {PL-Î5#Ui:a zhk(FvWgoo X*VH"Ȳsek6HdlG~QxUI;/|R2BGn$)db4ϸXY5LEkXlB} XLMs!Ma- -I_\l%MHt|xb6poGYzZa"<#){–?]BĭթҀOb4bg j d/RN=xK:RDWUüDZI1yq$)0SלM~]ݿ/;&lj˒ud|[3͛zl=0CTj째p$.yyZE2w""ճG̤ܱSC5L,9jRAK,ڡm&zGL";GypgӁ]A}˥(Jxv9|3}z3bϚFXWk$%?`GՌZCKw['P%g'HcZ#UPi_I+nzjfd(f'|wvF!+ƝZNXmPuj܅Gvk WTՕ.GS@]%{f+ގ$S&gњwU ч8h(;pF&>JdscuZ!3 ;,8\D/nX,2{W|&G*)d{%g3ޝ[@씖qQ{Mtwr[ 8_0iF}iS;CYVok %i]{&BRwNjpp%9o}GV!9^s>kBk[jǘf̈́dBA t.qYk)zV/T/E`bW|`CAŏ&uaIK$Q'qt\m꫑^i_;ּEihS*GS.ؓ2yBO3j4jPmNq܅]) XNi(bS,Qn9\ID1Pf$#юRVq,u>XLmE5vڿ{>j ;z zw!_LT2S&H%h`\%;pDvzQo+{W/Iq*EN nӫ[/'qԑnso>5Ur*O..Kʄ0[_MV#AݑY/i+BC HzMq+xoRgBRY+rU}a X_":eI bMpYHKO bx%pjL  2//:3' lu Ϟ+EړJI^fuìU#H5*j 3Qc2\6UuXxXWjTo:E vGp%4N37=,!y<>jȌupMmBn(N@q0Bq䗦p`f '#~=_?%(Ed+d@Z3'VjZaf%wI@d6*||yvdNeՐh)Y7':62~,3Dؕǔe㿉l("Vu<1K`{)ƢE욭#ߙ eJհL ;XWkeS2Qfɬ-R5*>dSW/GFȫ6ȳ9+P_7>%?tZH3Pv½6|sA 81,.AmQ`B$75-1$a&*Q.Bԅ-;z8stPARtnt.QJ 6*.Jr<v56!x2 `_fK9`10iՆ8a&Ѱ+d}/sgN^?TM♑̌MV0E"gD?BҟWAYդ /97ˍͯ7"[p- ԂK ǜ˯5NbnS "eB`lRY8or$:f3`13 rkG 3E1ԋ~UV g \f?fwK-ǧʘԱ~Y7ruf~`d|M_ry&VծXz*q#rϚ(\:,bY~DF{$,0΂L&1`0rӛi\%@a`5/R\f~ZR+QZl:==UkZSR=O3CmNsZP/EENIN)IC` QL _ao& LM4y}2#NIϬ'3EB͵5rӹ{9mu4LtqZVh;&K$fոp$k\FZW|W'/GWHtҟYyQs"?fG =/mYlmK =Eiƹ>1rUjjVPZ̉Ҡ7/$%A@C͹VzsuJݷrJ? 6HƠ̒ޢFVsr2\^E, ʾH|>tD0=}e:tBO7w?uUMieku5nqX6Y H+s"=qQ8dVvE8 NB@"rllz!Պ 8ܣ` y-PS[ѥ5ǁiJ n?4)|FMOsnQWW}^Wg:n:$s Ơ 3IW-UxLӒfse\'&K`3aֆ,;gqD!)l<6-^=ijaS5Dzg}զ*@" h#e:ƩIe\ӳ˂γv:|ZV9 ̺$pᐶNxMT"fv[+dE٦kzJiYVɮoJ+bV6[-5>;95~g4RwЦuGꘌjMUU:0;զwgzpW_,ەsAgKQPViKή%f*࿾rOz!w1aA' ǪjfQltyv%۷=IlNLh$ZIWW@Ĺ 4Vd' 2dU/j,h%MDbh9[,T2| ;+|@k?\z@9.{n*ISQ}PUxzC5 5:1\-Oh K`NӲ>Vj#\38~.g('53)r=vdV/\&M  5@߻^_[~!>F3,sȤfhL~FZbZ_X/q=Brb@R[iljAKχ:)Rlo L.c?=/sTP64y6(=*7ڕѠKگ@Ǫ;퓄VNKr3T6\pAG =Y gkWfN ,:r.@n4Mh>8NbTҍ14x-![φ7L(Ac  L {s@ vc Љs],M. ڑorBжun5 |+|٫}kᬜL֒GI-R\kC-~tG5]15 V7k%u6='tKb^p<Yr \cﶛLxid5FC$PM*lQѮFXC W(\ŠUhϑZ||i=`)z*頯Wdo^rZ.vPȏF}/k v7fO6-#h XBh +}{|!YÜ` Ґti(ҡHgNh6 3/ z`έe*l@S^f:幗&e,sSdnxZ5%$ZTSt#n&b7T~zsf"Pë $9p5<J3.x {K=1:L^NUF H `$%;.H_wkuZZw>I);{e ~ I~(7e H z,ldiQ1b-,ט?<‡nYjԫ$r5ĊyO6d`O{ua%JH)Y*y09tjlP<Șq 7&dAV*^)N 4,4kQ gOx(AbN9kXQtHMQIтAsJ.Z X*qˋ7Ydt}oApmA-IyEz-ןQJ4}|k3Yo) X3C;O&qip6(ς{*;K`j™uOLj\P6 FUH%3 i͊$ZGLK!9&>[XEq 2iGg\.p"+ʲG)lZg -7e x|[852!L2`L؀s{ԟ"{ f,U4A 쟟RGR)^p:?wt #T)d0:"#UdVQUy1i(c8cR#Є)qDn+S#WWB֪jMFW?]xJh{Jnɕ," g؍N}=״+TElGZKwjZhJ(6`{3L䩠fQtGC-XaYCH85}/vzzi"Z&76"daݼIn*Ֆރ眻{<.ee>ZVJmOd>$~˂ ',_n!P0݊v^o!x/|wy`砟pI^r!v OߴM V feejLI2),;uWkV*>i 9c`xeɸ֪:k|? UZ!ZÈs6~㿍bn vIR Ɍ i0IG H5B\Uv)!f+1QAI֊C҄j^ڬ8$jGѶJTm$KՄ4qmb_PT F2烣TkWۨ΄ v9#k3uת3I7>Laً}t{Rb.37'ZP߼(~է^`7/BIjjVS7V I E0"r}#%$uFY棇Oo6luHѸ` S~aQq􃩋$ |k]du2aV ٬c՜dS>S#X Bs'?"M8ONoư{"P8ф<GzD9U_n^ye P8QT :\^+J Gn#1VEsBeEGuYwp 3Ӹs 5Gp Zp-PV:wh"-MiY,o{[gYڭJUڹ TUM?0 oZV`0:HJbA fb2+(x~׌j`7$<e1:bSWÁ>WokפF~nƅЩP(#q1a$'j^i5ې$  fz mSfn<\.gX۲xLl,KmRգ+A|ޒ6-AO{KxFa j8pzKiBQs(z{dgё1NBPR[Ғ4m6MeEzKdįK֙BhpВmF3&*Pݷ3W~P?@h/[6, giDOD䮤.#$E8+6kՖzu' 1A{f `-\0fʕnӅ/ֶSo1Gޔ֛'M!R5ߞ xk,æ8OdY<sz 7w\ٙ-LjX ?l9̡ՐMDjYɫN4g+nP]+'ĐgVԬ^?`+IFOcF 8m1&R5lw4{JB"dY)d6JZ(w Jyٚz]DiX=jhaʭR$#P::VjQ8@cpfZ$%4xeK S$1JNJ/zѶyqBΧjUZj@ج"4Vv^P iU^7SߒY-ql]840ʘwnoq0WYЁʧww-wW Cǎ7{i!iWg!  G 2N^7FR+ANgtLqI 4tnNLWyPV.oP-+-9Dž. mV3fafG%S/bt9E*-bAbxe%IǐFA:ҦC$> #D{+ HkVtvV֘)<$tO'IؚĿ.@%?vqtcJ 43"ZۏIIJF7^0^%cI衧4xH ]02la4]Eou^"}.0V]~!`hitTݣ֟BU+"M,A# f6zDCQlM`ժp6L4;o&a*Y/!XTPjVvd^[:p m׿S [򠤁ԛwXn3KV 8pCЮxy+@Se h "H1Mʵf X΂LUօlB* b$ ?rvJ8D H }usxzy̹Uw:Y `3Gwy|t3h7G 2<3GUI(K҅%\8qӸ3_4Hn! RRLVjrѧ1q#Dև)kݚŦQQ@:VmV(hGBd eԱu H%KU57/K{{Ň|$hE-z]T85a;LrL*M 4&23 sm ҂ :42HQMQfJdIb'E/N/ؠnє#2+d䢾.cHeGjG!@2(a>YvځrD2I&q'$Y2 ᥊CHuVlY,a|Lj`ݔJ u~^ďÜ㢞T{:Jw8'|BJ [^Ц:s\zES 0]gβliꇑH;s~y6NH'@QЮΔ,}. JAL>hX_\p~BY(D7# Zy8NsK~6#|(]~rgÃKKV䗶LiiA @g&k2a~s863I@ ";B6Lj[_OObəAvP0= :[:h(>OͩYV`.{-=AH"rG\[#Ovл*1 j'U[}5,bq?WiIUɞ3uJ&3iqw^Z:jJ\_-m`ےMfkUkZdYw*iU{*-T۹k$^2nժ7FjxܢEV!#e2P.j~SԎQ Kx 3\ b9in!>bjZ3|Oߑ8*T=-:GROPIf#ZIAH&&)L9$'4hJ ke0+A1]th5j6[]01|"|Z~d=!K1E5c&Ѷl!bjvCUԻTT@U&]NPmUB{uGqeZw8r͑qnT{hpoѻE61_xJHt*sy9ֶ9+ w~g6^ьl>CIӫ 5{`RI[VkfsL~PuT{D{2AfAm@3+jP dAt[ KVuHgKgtd 1xM}4ϝ Fcs|kX̲FwߒE3;yUr=)菥u0ߊ]ȅ<{zщQŤv-'l:"MׄH' 6`*]15L{2PsH^lo@N~`ns3RiWPΤ#QD,W܃oY8n='f=;ƾz:Y42bTg_lVH 6=]lkvfhƠ{b٬U ˧"mĎR{TVN]ԁxą;%ouX| nsI%tJ~i3:ɜQ?Tj$~\NðCښt#:j_ Zj:p |fY9?;52zRlx- $yt-oIsd%\'4`H"y+Kw굃ָ3A a:К1bUR\$Hi+ZCڣ @Srrӿ%2Is.ס~HJuxba(PAjZScIHζT>gCZFۻYWg}^gR_Wf>uF.`h L6xhNCx &:BJ>3z<\&^/"R)~@l[,h#˳bXΦ5վ.񏢴F~o뒴婪8jxz蝢V$B_ h%ߜ}Ɉ8;]0z+ &5Bkϰee+qĦ6`5 Frk20Yቓ^m)21ܱXSڗ3Z;?ʡt"@|wAfr KYu̙!O5Jm3 o-$ϒVl`퍒ʨ&}t-ɇ"\ӕvLQi„,.jH2DF*1jz$EX>]MK7dnOqeBGЉ?H WD]&u$1e4h%hM3a!D4$d1@U B~e@Sv%/3;?mmIgouX{<$1U8_AEaLY+zi ,rYh*53fO+YIOެ9v{\hfo'ͬɲ}!1kUbױ`Qq{Y33ɣ+},Mf@`H'ʹwx^[(m^)qw@ IOBd%*-";^Ǟ .hh*#Y}_Azj-"1HsC[nPJn%% \23܆;6ɪKYAKavD%њ?%햞(S25~<{zQKi6N&$cjML/tk% e&WDvMx_bw0&LBi-t JߡW2e>19'/K @42d1䰔\3TL/@VUtӧgBh[gVyjyх%`n &>WЬ+|qtyuV/N٪}<#)#k#IJVYKwplVx#Weòi?{ ȽEB};cybg{1G{Z7ј-9p'4-@pC/OqzREikv;~c5b25ݴ keJX+ CMsQCD?ltKlBCؽG<+ ȻHU^)Sz`` 欨Cx-s-"han`nAfG,;8C8.f#w2KY"Vͪ0Ln{U9qz!uXd.EԊnC!)gUr:V֖}dNCQӛՙXg !'ڭmRC#YBVl/Fㆪ_3G >Kx&f92'#<tT;h)wd`&:-\pIn%vV'QrL / hrI9?<{wɁwrnHUGEFUM&`[U>u&M5rY^M&M~y>T `}-NPW GT/q}N`~-t 厩Xl܅ZЂ1(\^#o` A c{^E DKEuNՇU/ n' |I*'u!-ð.>sv;[o%dW8?UU7ɂaĽ_`MPGn^~}mD*>8:@CO NH=XLz8LV0Hm:eF.##VDhYLꉫtC[0hC'"q g"W6aa{M]c#L4>Fi`VNA֪͗Z3IM~2oC h&8@?8== L*Y;O&,{3~33/0$n>SAHDmKOޙ,k )YOh׬ G]>v!Ss _9'Qh\&Q . @ImDGmgwD\| kN3!$^i!s83k'h-bwt&w")dV6jw#+(#4֙cuR !1jF4+MS 3MLu?%.8R&=ʭML$~]*˙;D60 9:j=nIF>_G}u0yWgmX|{k *籸Lt',&|<=G-9+{(,m]  bqNJj8Swآ!qpT$l L:y/^';J{NRˍbc ={}e+H93 T#  _`KrC?YK1b%ŋ.QqYƱ5kRrҢ "Z. 0H$$nG2zݭ-mS<9}sSd!U_]LT%5rޒB('zhUh: 7@Kp[#ܦXsX;_*HpmTꁪ? ]*םhUu]7(ÚĉF % hM4N, czWcEWpM-;X&b6mz߅`-|́ULl0k1 8}B )0ϧhG0 jh+3Ҙ6dQ(D;;Bu4%s$5 jUMqQJS;UvVSz;fa4¿+ pTj!M%K*m9ҁl- }Cu.%}#zz:LܬW_+P~v>Da}> jڃzKUƕ4H'46Opt}\p Cǟ `"YfLBwA2,dۗ@:o2 '8$p.7kd0($A>YӰeq5qJlgXXܢsrqCWcW;͝fn+CVuRV92go7pMMZHۙI0$rEGz_P )vZȎpFetf=9+`V+FJwvby˝:p3j'{[kSX7[Z$2 ͦvr U2|ra#%z>|;ziכ4hΡHuF6Q3#xFhy 01`N~XSWLhɺzL(uT1x?KL%ÏFfŽxa9IWj]&iEMNfPbFRimUpwz/^UNF[xb^\Y)8,kAM}`H[89bi[sH!Auqڬ-Y??U}vhZD5͜pz@іc1s~I|{fK\l1e[\ܝnV)֛pSSX1)7:üFWX/H_3')Ȉgv~ 2;{:dHrbχ)ALOӵgzq] Vs)竛V~2`&jĠnU 5ޜҗ i-K C}L푽9=\^kC"ӄoV}',^nʵ%йn]=FM)capFv|RQW}¶kƞ=op31 j<2;<"]Hk1%IG!%i~%^<3nV$ej)]LU-xK$(,0_-/,&@BkЊ{A pUr>5IYWኇ-N~QSlt>}x?!UZ⬌-oے9֠fY;tGD64ڧ6JnжJCz6Y";VN&RLV~rBHG$&W-L5QY]JV tpeGaSi"LU:Zc@nLI>^Q+bY) ;՟UM:wILkGF^y~bݢ5?"bGYR{Q FGRi(5qvvo j%֊|֚sY~^BY 󃢂Y׶6]w( ?bQ^F c(:iNw''[R5-:n}DjNŴjyFN1=\˾N9qI-ᲡGGuB>ӁOduƬGh-8.+dTY=LY 0Y3${grR\܅.I3YpA)o|ԤȤWB費WNQ'MN |#ӓ)#쥀 sΑW[^_x6|ޭ%y¬*V V2-"Լqr  K5RRoa%:#Z -ߋ7{;~$3\YKzJib#S>ws^ gW۳3vB@.UA~z)ADr XK'A$\ ;YjB %[xVɥqO/IT[M1P3YȖQǓO;s=9WP/P0md^C%6]Iչ崈(J^DD ]rDꪄ/ܢD>2va/6>- k3ÅڴЬPp[˂:yŏc#=,G6;ߏjo>o6$;RyiQo 1zAeHsy^5HRlwEdFlXA9Āʙa"D "-hQD i>?'ҩ*ҜwgmM#:۠aBVi#==. c #dδ;wB+G7s( Q얤/өBq~>RcsT")ҚZs=~' h]R'dvTJ{YKT%{F('[^5>I1w+f/{ ڄH$?YB`B;X. sNh`+TJ[ŇWT4F{NU)ۈvʦ昵6Nm^~P4rSږb! FTp|_">MRlsaGxdH9[>ȍj T p%Qt4p<8׮)LAʑ3婳vN J{2FFL !T.ńs8_41ڨ7kvPa*/2"z[ | Εh+`^R*]TI@mWˆ0Rp?^[}jWL/렦T^{ èз-&_ȥӋ;Oz}ޭgw߶:ρEr0>gMQ3vҭJ$Jl˫Hn%a]DSv}fBMC^ml!RPGjR#+]U7$2zI*YeB"p=`}@K_:d9D[z~f@[v6dy&䈞K3a  v-%WJGO/ϥLwI.deUms)UC;MZW. wX [lg+k1+kfDgjhҠn*i)On'C$8OyYn!Zx}=YZվiQ[/܀|T_۫)b<]kh)KiԵN BI *Qb0]Z7S LrLiZP%ޒ2dƠk9MW']_ PRʦ]\PcL 2R¼R0#%UH#Ac&%vyZņUW;b){ebGr-Af6$?J)DXy 2տ}sx9ВWA+CyZ%K>aꝋ5[nDI.Ȭ~ FwpZzK*3c9ɉٗL=M:;g*1}rp%%~[|+3zs` T4vyrsǔIĄ {s (9}8XP4, (iO+2zREnq 4E,B ģV!31C:U!z]Vo J 1#yڇ%ϧެ.LG֧Ӫ4`l9F疻6gHD:=R^tr@au!=Ň,oګJ]˥\["aGp"*eL߲#9ʴ'b3,3O,W)PmÕo& L!vMx`B\$ԁ=׾'nVxۣ1EV_ٙfI ;T ,@Nx ҪLkk{{ʶ2OĔnzXAN{6JdBūn6Σ/i؂vD7ieE#0|,ϞCrXp޿w_idح0%H ZP&iQNCMƪ&IG긨ڪ6Iڑ^ɋ鴯2븋aErtbpodYǼ&sCdGfGwYqǜ?h>$SǶ /_y)Nd^. Rն0z;zi^cpRS3DP"dN)s ~xyIlqi=bUE%2X%ȿC0 ˤwrfP{n) dsUiըj4 k`FSBmMDτuD 2qgتŧC6FCN~]0!s ^޷Ed/,*]+|$Q1S'x-wfI?[5 <׋Lo ,^PbդWfܖdJ$ &[spd+sBIuB?Fz-H( ~4NkYxvlf&;r1F#y&}탵[s`KOU׈$қRooH4up?tڴb5w۪1 Y~EVKbs4QB0)N lP@@Q\Kl$R-Ìl#)jr~|}av<<9frHv.!iurpʖ24GGzB=GJMgm{Xl!lyRt%R{/a5쎗ip=W3ԛhڐ4{ ֯<;+,L%MRaeNPb>*6;r+Y~ø8;@澧p$<}u~"6#iO/MTY(1i6TP.TRx5>U#yW\uOTuӮ1্bIֱ4<⎭RRpF6Jv1KU#iIJKMޱ^x̻\$ftd@;N ёmqߨ#5A75Vo(㑚 U{9 S$}M͗F}0n7 5!s cb1I6L B Lj{94h OꙂ11udujȞxvVj]UNn|հŷk^B#;Z Kuqm;,=wR &Vee$ g yb ~)G5ak׫l,z$) 4^ldcɮO/ =kY<.GXLëV 4mj礎Xl:" j`h'୬i5/g#8fhp%vKi(1 ֎9tvILSVYi(a=w#2*ՁBjWi  ȉtF"P~ͩ؜XΆ`LZKP/ GjZ~c,x'}RV?ƨޘzR8o ?B"dee.8X?S Ktz49w  !-™LttQ7YG> i綃ʥA\1٭4kx1a}N+`-SX~Ne>?.juSi a}lǓ#M(kTUAR9٥@| P}r묤հ<<\[ELPax.܏+?LZȾ; 6XD.,T=8q\F.+fZH5B k|-iKYܢD$߱n;l_B~eG^b\@;x7l&2/zR(D,GL6iɥ93MѵP&_"j̬ -&7lBNphkI*w,21ed!xL_MWSWֈg@HS:lEjqQ5$;[ qq#wb;C-9)@ ¡qֿ_'+D)ށ`Ot׋ä)ըd2 oa+%._PR{yFVoMYXk#A{ײgM,&3} Kx03;nnDeV'')<-Џt}^?ՙM*ME<9n:2 ,%|o4+](Μ2PET"6qf:(=:#;#[w,zI#~o%'ڔ& z0ZLw1[Y%'#5S6dbtHJUMpK>)`*2W_ׅMjA1Ԕ".i>=VuHvq+t(p1Jx {k&T ^p;v)1VjW<ݎzG } {GߺѼv5xh# ݖ2)Uة{{61ͨZ3L8lT4Q*5͆z 12`܇0=9uϛ=1?hnAK9I 9}?LGJ1][G5=Jm zX3=RݗYp(%`n ^RKIi >B$zl7 YUI`%{@IF&(aN gK_ d2r1rR Ca]DkIRI\a6_l4{ٍϱ罎'@wOȞd+jF1fxu.cOzNxzp*RvCM݆SIPjc ʖ ۗǕur$H Mb\3Era ]]RnEӤlm7  j/4gɆLC|uK _zajҼ̝%w"hsT̓gZNR{,yqLЉұ {cz$+`kg.rդ ;XZs14_J҉p*'nѤZE{`qR߿i5z< k7R|BKH5Ţ ۦZKܳQ^4:Dd7՚tȜuiwN[QQ-2gq%bvE]F$#{i)(wqBK9嫂/ jDttssde2+҇#дχm8i4gU{[)[w…W؄椢c9$>)*,2~lUih_rlSo& rV֜VS˭5/Yƒs 3CjM^t |,Kg>fd)lSۙd{&ɵ8={[| ~;RPP/6I\ѡlq"&Tc;̠+;vPNd[UNiDIɝpmGֶ@A5ZB␭U,\_.q!@blvK %&e/,()#t+2dHp*1Q0 |\W1N>\HȊw3T&tTf%gz) z)2:ANݤm_t nJ`-; k_j]߆ ;tVD> kUF(5j_J PUδƨT#îPꂔ$T)֪ؑZ"S}ZI3p*ny;yV4D4d2 >'яս#-*"yPDb';wQ͐b *7Xui\wpVZJmN Vӝ fe2S tЀo8_RZFMp {x`]6V4iLŕwgHv L{=16 g?azRӉIaW=ןD;ϏVX˾vrv0u)q<e<_#a֤=j<%bz:o$Sgtҽɋ)[0lml퐄b7%={?Z*& ^|Զ "|؍32H4:edtymX.TB@xxRAWumu$v١N3QLSnĿ2IB#x@b̑jROHy-{uuЅ:6w[vl^Fu(HD._.v LFFߜMl+ C. 'KqQ{[$ FKm˽qڝ)8b8/NSɥ!.\q0td KQo.Z`f(1U3Rt^hHw/C"fN޾>eFvxe|lvෆP8֑xEwn4qU}խjCTUUe0(թ:@Oդm(\p /Q匱.ǥXTjWB$<Bzc[!bR|87t8_;)nx+ 4_/kE3Cf歿h E{z1@i :.lA%~:`5#U7!]L ǙqdIaޕm0WgWYiV r4m]o!Z䊓)Nvֿ^$ljS2YX&9{}U|gBq]JY$pߥ]Yv!GjRQuw&j2SH{djS#ɰ5QUe'f?FA'Sf)zm)I@V-YNZ.UNs#kou?pTG=~ndI5ͿjY&(Pӱà8}biBvH;{Ѽfm%R.aإ1t(5ӫwӗ%킡G/Y˞#9y~/yWql # 9O厕%x_q lFmR(1>+q5g6~g2dg)[",kY#H,˗˗.iyN\|,Wbޮ? n7_s/oWu:np^֮/O#z$\П:~oOҊD#@{ZH;B;^$c:/K),&5С YD8eSpg.D_fڏLf{jJVK',|9TE]ºKʃ8W$4dFYtݗudEvv v%E4}魵W ~ޗh% gb`0}i?A<&?\{:M֝"Id4*M|U[v\aBFCr2A/ЕMX俸v|T[[,EyQ+b/CeH1Y`[wċ$;?1N3#[9l,Nmv|E2P)j }p` fP$oW[#|%@?Hv^YaVjaT~fU|eފ(I]moN44]h2sw5჏ t}XhX#k ."h ߏϗ~7ӧJo֞t}gH> ;0$dn/xg`ގ>)F x&Ť@r1 q瘩]mC&iD!-/'57E+ŗ~'?~C-%E0: "HqK0YszUl-LH' ,30ey^~9J_ ӝSɘNT%}Y)t>"c>i}.2m_~L94owJHb<ҋW9`13G2Ul2'ic2 "¹>3#ct {g) }|] to2NK _跰Y0( ",ȬV8@tF>Ag<9C@ߣ;Pګh -ŵ=aJWH?HwТ%s:t?Kߗ/O0yU1Jbtiv e?%5L;̖iE/XXϕȉ̪ȗF0B20?oEXV8VjkȇAtҠrhtMbz۱b?_f6h`,g+03Z}B%miǎ#Ųx;O>Vx/Y8H9Q r.>Рɜ(PKɜ8e(;ys^!C֤TTotʝ_F}IXPgz5xqk斤ogM_,`V[y%9DA3kjY((W+OG%dG|( cS+  хߙO*OEpirikV$k:Xt3Q]ҫLm;C.O(KoSy-ITf+߯gǟCv[_z0Q@Zj+2y{o ,7_yrH}Ej _L~2HL W[+ܔEA|@Q⤎nbkW4A~2lpH3`!\ >ڐ`3kG[I:u '$jšжp3 S/h]~Qb龎 x;$~Y0@FuOmk-_W_Fz9~V'w&&i9;v;?QȜ8}ej=Mk(TM[CZ-=:t؋2q`2ߩ;ҵ/tՔEz%PY`ߤ] Q#g: 8-8|eIev(hwu@ έ.J7q>C~|h{s3{ۯ7W~ƻ+Z+3^/ߓ/_2p~w' bg{Rp,owg\y#$wnr^X|ϿϽ$I:1a庿SF oUsg͇ocA\K! %E8 +J[[Uo׀2uKC( wIOznpצRK$<*g3$bP¬cQKL^]c68Z,fW ȁ_f>7T>k= \`6$X ́k!Y>5Q-8gNs,C A's=9X#s/0_a~%~!ٔ;kK1}x礑y-! q|: PG1Y{<ɇB#6/bzs8U;#:|~X\R^ Ubj,> rs~PLtĻOgCT*( lL`$r ,dUJn}T0OxplY.@:3a YNk J] |Daq̀2k0jz~bn(v (߁*ƀ=b3z~&E2iM i=(%RYxtq3zN@Vr ']O'=l\6}gq|Υ'\y/xp>b+?녵+3|΃oŮR/n?K?S3.Np6~F3\.>Jb{F=wXjֻu aIBX{GC%M.BYE#ZEu,Ts"+3گ395AƏw =GހHe܍ń1 Zѩ|l={DaӪ "pè%?"ZwA\#Q}Nǎ@o3F|uo9: zSFȵj͘i| kHNB92Zez)yl6FMu|Z^#ipx6}'&mr),R)va:yǙf(a_ 6--Ť2Y1vtYp'ʤU|'|Aro~ҟ_y ?ks(|2/z|5bQkT]sԟ܁^> Β7' \%(lXU59|| v$N38S:AbNrGW,zyֶ<#hO(a$o,CEB[ʀWz_3fm 9ZkZzWI y8_yEvdMaվ<9Iܵkq0K[[t! AݫڰċW8U1vn6$-Yw>HZ#FIsn&8 _dƷ-!4YeyNkXV:SK$R`J`o46lμ`#Y|x0a].Cdªz&S; NZ;IgջVVoAwXxVt ԠO/n?Pc{=C&bXǿ{V$'nz;Ws~$Ihjȟr%a*'ay:n 5N6/5x(/8=CxmEa{ '6`8FuPҴG ΄?m&xy ?4܁N0/hD~H7;i߳  C ɮ /撗,Ѡ?S|sJL$A+ 0CqrB8רlc~xwkRe8|/EI{@'#w7 ?T#%}X';odx;Jt(OZ!+K:)tY ox\^/^Y~eb]QAϫ?SO]dşGL]YYW| r@BV9??r[ zIկyǑ$Dh$*-,;N Ib/`ỉlY+ZBq,?)ZW??0!G֨6~OD;x"lO ?JJ' Nc,h{xGO|"VY6EkVHĈז[8 &>MQG( xЏ9=W6Pܬ _&B!jɌkf`''g@}j;-eBgHש^''ro`LށKB!נeز4&HOie4wQjo2bcY0Æ̃息وtM;Jފ@M/0|K(?}w?tJ>t1uV97=]R9ʌ- @hBPWAOP5te[VސP"G|xfe;N Ne*cMT)3F B2I:N. S ~9RbgI2BV58 S4 1R5"ٜ6!0 *,!<0R[[?1 8|ub&Fp_® UWV"c~Rsxu.i/~k,ԎhE[X \@7-2MAU{M-%U),'#ZcwJD(@3$?rfzq93J/h`̎@ħ