llvm19-devel-19.1.7-bp156.4.2<>,g᪊I%z w2"~356c|ьٌ҆V \5WVpǛuH3MF8ᑝxҕ0%hPi V|JsZ.|L5.=7ѝ $0 IOM#0MEogњ6.7&`3& %_c'p9д^Qux+H=b⨝;>IZC#Y";Y 'a hi1jJ$.-fS2u9mYx6eh<ڀG[5#GЫZie[]>t`VwgWe|T_rNohbv V<226;4u`>C?d  6 'G]cht#8t 4 t Et ft nt wHtt\tt111$Z(k8t9:4>91@9@F9OG9dtH[4tI}tXxY\t]t^2|bBTcCdCeCfClCuCtvewhtxtyx9z\lpvCllvm19-devel19.1.7bp156.4.2Header Files for LLVMThis package contains library and header files needed to develop new native programs that use the LLVM infrastructure.gi04-ch2a42SUSE Linux Enterprise 15openSUSEApache-2.0 WITH LLVM-exception AND NCSAhttp://bugs.opensuse.orgDevelopment/Libraries/C and C++https://www.llvm.org/linuxi586|D6  3 I   & ($% /X%({ u4\<4m*Ql*.7w6X 519 @R S&Yv F =I&aM8r D(  ~= ~; "3M3]|>TbL=5fe  S 0t=ߝA1 s!o%UV i69"8Q & I di D  0o!#Q c:8;EOL F2 {P VIeK jOB  `ZQ* ^!8&:\r2XY*$ #gf Pk h [ (P W܃<bseco5$>#N4` c ' 7 fR~!-) q 64q N! x!   1 2! L$g)+08)%((>&#f^-'?oFO K9 V!RW^o%A rq*",Bd O {_.T &HoxD$fhx>7S.!5% %/  /c;cV6' * hV#j>ԫeW=|zpupL 0 ^ C bL ^!4dD)s\hI?8~"~1tY%7 G 1+{ BcNnn K(1 VE>O&!= TM8s^ C!-Y> J H<(F *T^"-'1&No h9 }!z1x / q "O x/"#x%HI%8$ $A /O* ey&0Zg T] $O"HFdp %1STf /&t?eKK|VhL #! e *%0K#W].}R=;nlC@f s B17/8{ U.   O+( K JG HB3E. jN d J r : d4S>` _Q4 - %05k D$) .>+ $U j9u 6$!S 8(@Ju'&;S%  Hh)6L@6*/7 T(Z!Y!R ?'$^"s7#6 !_(U  Bw>1 e G38 J?45 $S]VV.DU\ &ff #:1)+(uKnfyZ z .R5Y%2r yn6XV p1D 6D- {l 7&JD='`"/j+qz 58W!HS/    }rJ +.>!#&NXR`'G?&]"%- ( z J NCzfL/! Ns,n( $ ;> ? ,% DTYCm$o3:f jH 3 nL6Q-~ b6"SG. ;-RvK Sg:Wi*L,X!zk 59 9i7$:G_R?K /t 6I4  u{7"WtU>E1a ,4d A  aL,G **!$- -kn*# SA w (.,9 RN<{$  B" *"g9@Qb' 4#U%lI{iTk81ric ] X)x ! ) V 4 5 z@-! /nLD3 S <ht"Q&Y jnM/R   @0cC  )B_'!W ) .(/)4WVU Mo%T1 C\DJQ    E  : 8xqr4QoR6 }*`A9) I3;%0AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤gښggښgښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.ggښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.gښg1.g1.gښgZgZgZgZgZgZgZgZgښg1.gښg1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.gښg1.g1.g1.gښgښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښgښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.gښg1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.gښgښg1.gښg1.gښg1.gښg1.gښg1.g1.gښggg1.gښg1.g1.g1.g1.ggg1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.gg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.ggg1.g1.g1.gg1.gg1.gg1.gg1.gg1.gg1.g1.gg1.gg1.gg1.gg1.ggg1.g1.g1.g1.ggg1.g1.gg1.g1.gg1.gg1.gg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.gښg1.g1.gښg1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.gښg1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښgښg1.g1.g1.g1.gښg1.g1.gښg1.g1.g1.g1.gښg1.g1.gښg1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.gښgښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g{g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښgښg1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gg1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.gg1.g1.g1.gg1.g1.g1.g1.g1.g1.g1.g1.gg1.g1.gg1.g1.gښgښg1.g1.gښg1.gښg1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښgښg1.gښg1.gښgښg1.g1.gښg1.g1.g1.g1.g1.gښg1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gښg1.g1.g1.g1.g1.g1.gښg1.g1.gښg1.gښg1.g1.g1.gښg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gڜgg1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.g1.gg1.g1.g1.g1.g{g{g{g1.gڜgg1.g1.g1.gg1.g1.g1.g1.gښgڗgڗgښgڜgg1.g1.gڛgڛ6d578da768d380b764f01e91dbecf3883694a1bf2df6107b3047b44e2b235323ad5a539940b775e215557b610aeef0550cb7d5553531a6ebcbca19251aa49444bb3805c5c657bfeee4cf2254dc696b73ae0036a6ecc2c36fb027cb34f2c4652e42a37dc1e08716d41ba49f1101fea092df87d3132d4ac9b5377869241dc17be8efb0e77bbeea499bcde27f08e88aab8bf579b9562dd85f5032d7f5baf1f56543062d18f2baf76c75a10bb06b94e013b96b80b3aa2d38671174cf0f6169f1e7f320dc8f47f20b0d3867bf130957b8a7fddaa0da4690cb14c9be319ef55c339b90443a1142ba0ec4bf930b07b593ad95208ae954b7eb936894300ead8729770be7d92cbd00c4058e4b87aabde5e66c00983680c273e31fa54b37eb54181db16d4ddc0131614ca423510877f1605ae79cc33e3c02bed067e021cf7f46576643c7aee5ec07395ffffaa8e4ff779f8fb3727bc465a5b3ac427bd734a4ff5254ba132bb74f03d648988a2ef87a4fa138dfcb956ba61b92efd8cafb2f627909aa5390bf396e2b569d09f2d5c6496b944a150e0c6b203bb1e801dafa77a867e19b7e5e9db6bccd5eb3602effbb5eaa10b7ac689d07ef6fc39c9dd28d455dc491168c7c2826204056226f5716e260a82b49f70a0b80f384d10535fb945e4f4e80bbd121fb2fdcf3619c57d9cd7916ae1530045e4c85866613daf44759807dada94449f8571c42f76f105c010ee5e0a5a0736aa44a8ef9ace086fd671cdd2617208183c468fc72b2de749a7f84dd2ad7d80e83cfb641c6d1501ebc5c89dc8d9d911d987a2fe58a147071b045faea6d4de079b7e67c38f1019f08dbdd5b3f0acf80a55434ad57763b783c583a8088b81ce4713d317296d0853e866488e9838e5317908ba8526884a9dd5dea47c8f2f24dfd128c30386759db3a2426e2ca2c066fa418efed31019b6115d956b80984eb7d53d774ca4ac652ef63fc4725e0aec4565d295357070fa4ed35623bfda2652b9e9688577e33d8c23a7196c5dacf8fdece67d2fdfe098f4595fd831557ea13d73a311995b21f9c01cb8095e7f6cc39bbe48af9166f0c2de85db306cdf6a2caf1790b30c9130bf6f1b5078902d65f9af1e9ffe8d843b885795c3910155218473b79bccf42d85b4a17e5dbaaeec5afb8f94a8d1974ddb0b16ef52b359bef76299a257b2a438a6dd7b1e4dca2ca893b6649510a977e88bafbbb1da352df793703e6579bafc5541d6c9f4e752af4330dfc82ce2bd76e8bf0c84f1c5043bb828f121a1914fbbea57cf8ff50b0353b553a835606ba41052bf02f763c827d0da50135aa9fe846896554c0307b7b75d3edef9614cf0636daed17e9fc2f15bf371966799309ddaf3510b0dae412d52ed7093adab2369c2aea61e36aae67dd004bd58a39556fda21abe0627ec4c0f39f1d9bf853c21c474c61261de711728deeaa2a16a225a26fc2c22659a214103aa05d14fe1bccf4466cbc48d9b64bb02d2190535c236b2f76673875848d595859b8585d28e66dc4e14375d5a5df844ec5d73490946ae7e47d1717b2ed5d484c1bf3bba1253b9103ef5dd257b38fbc71d900bf7e5601bebbcae22f96bf817098ba55f729e87bb857857beae0154f0bd96a5167a70c8fd7328c34e1239f76eb96134d9e0e62fbbdabd1409f1880478e00d5ec0ac391038ebe8c6b7db0e5fb70c25b3c0b2a58c71e734a027a94b338cee3eba2f57aab63e26ecbdb8cf4da5b066ddab478798bae28c8e8fbaea01f0351fb30aaf11201baf1d50b9eb68b3a0699227d2d24b1dfb801626c570a964cee94e49c0a375d5b0c99e0ba8be2ad0aef48c965cc76da6528f5f9fbeeddedfe4bfc6b4a349b1e17dfb37fd6f088e42b767a97aa8688f604c9e7145c839b29fb4c7b22d779af6178cb2e8f625131252bad631a006f536bd04a9f65dc3bf7c450f86c0cbf41cb354a2da30859edb9055f4b62412f434bae9318c449fbc39bc149465e81c725037027d0f5bccf015a85ca145ca57e0a20931d5a5c222c78270fea03c59c35804f63ff28c2aa52635b35a2c10ba27b2fa4ab929b67a5e683ad15d70a9ca99f7a50efae129173fdb815ece8419b3bf0cc3db1e3cb0ba8cc9c76d097a8b3132f2d6d7ea793879f6998cf2020136d7e200065de6e9b79c6006760ba07dd36df8a8671ab78f71d0083d829d03e47525e3326f722ba21ada0d2c69260ccb5cd3e378b234e82da9d30dd3603ffb0c297b840fb345a53950485b69d1bc22ff59f3958d547a9eed465d55bf89445d228cb78d075875b390f249c8a6bf5abce357933570b4e84db505f6031c6a07a17d261d82166084834fbb2e6325a80f040fb52567e8c54f70f9fa875f53a9ff92f70a6435b253f1be2c86f434cb0dd5e8c606fe0501f55abfc295fe498a2139dbc1c0295ea7364bd1ae1c3c6c090fba38c3c8a48a62893cbe9cbd7a7d8db90c48db1bb6edb2a3532ebf6c510475e254a91aeae840c9b12ba058c9ca7935372354f5f0877e06e3cb3eab71a53e54870d12d6618585a426f0005fb1032817d170abd6953a63e0c05e951773211d8e76483f512056909f2a5fcf06241a460dd5c67e31d86dbf6aaa94e8585193c6efa36766684c729bb898572298441e1171448f82db5f6f44d9df0533168793871999da733a717c9d684a5049d13e108a762aa7cc7b2d999abb841ca533c6e60cbdaaed59d683661b5f68bc1bef9cb78d159dbc3ebe67f0d5f6ba42693f418ca9aab8417c909f7f3951f408ddac40f4bfd6a61f66f40b7aa40b75601b66e734ee14bc4dc69ed6066795c0ea61020ab472ca839f13774cb9e3ba97b7bd659f4748d5278d91a8f8b5fbbe17c320945473e64aebcc007bfe50cf2579de3bd9119bc091bbadfba6556c5ea06474201324a26cf6079258388a84d979b3cb3d5cd1f2d80f314c4fdcc641cf1b5ab789d743f935d58af082e7067fd6df4a0c3f959fc9a724fb6f2ac22ed2f29a5b1b3c9d49ae9840d9b27a093a5993a39fd65adeb4ffa22f0091e250321fe4c5e9b8802eed30521aeacd73c78319b8bcf98795f4e900e958a6df3c0e3bd20d9113632b1d931d1dc65057e4ee67def6f395e9385fff9947894076d987ac128e6e5b52f3a5e896149ab1b819cd4b21d032d0f9091bde5b133a739464b2887f80349ccf153ed0211634624d716128b0cd91177e74dfdef95a2985407ee0f4bd0c6540722bae21a1928a6b9add6d59247de6d58df29a44bbf85ee2c975fb6a018b961d427b9be27b5240eab04666083903376c1f0d85129df0765b5a7cda18cc0336d7e21059086254ab4b03e47d62691c96926624208304c281a654bebb7c1b9a0e42a6cd9f15c2ee48a21b2ec6c5f5d2ab753fb8644c62aed85c07dd3738b5218b962c880d12f9a5e9897b8dec2c7b8a52bd783eea3c320e804862eea6a64b01f23498ff10be3d155b0aa804b9454cd6bf9adba9af2621a8de5490c751c901710e3e0fb303f089570c468f207a0ac86b47f2b41b564ee396124c6a7cc2c95abba73d56492e5792901f061b6955c00a17abff3f26351b06be05ba96d9ef722ed65e05a3c9d90eec56aadb09751be5e9fe0c0c2ec519498064db679840a8ee99fa33b22e279d3dc5a07584716d80c304ebbf594bb147faa017620a6dabd2bde45e864b77676b91e0b9aa3d485e56ee0c3d6361fbfe395b157531523bd4005099a221c7519c5ba246efd29329df040c5da20419d79ae6ef1aaa873c334d26bdccf78577a4a6c23a41c1ad6c73476722db30172d05f3fcd25403638902b3c944d8d867d96e76602347dc7a1626b2ab92ec790e75cad9734a343e23770ea407bb73cc39121f987aa00190bfd32d3bdf44b78a84632641dc54c4965dfc64b0561eaceb5949e55fdcf056efc29c043d7987c42e5ecff7161fafe9cddfa2fb19ff961b186af6fa53807a502b4b815bef6c789ff83c561ac3fd0ffc5c858bb4cba272eb7a2091a0edc1a880ec5010c27eade446fa8e23b282a52cec409e80024a2df172d4a3b83ad759c04ebbd8dfdce4db199491d5e8b101aedb18a92f5737ca48572f1945f8e5775ebf15b14c8d2aa57dee7577817842ab7e2267bf3d526fcd6ecda3c431daa2a952c49fff5fc3d7222c5f882b9b83f2db2ea6bafd4e392f85423e02e5b44244e871aadf9aaa06ed12ebdd5e372ec663aca3fd1914c57827a0c73a83c6aed1224e4b142627625e06f5cddefe1496950056025263211d1d700d665418cd09f812b3201436e76896aa3e18bae02a9c600c99dac86f2e2ed91641dcfd85700aee0bfab210ff3c25e7a137d3b31b29ba89c957b3a10c6f25e6be053deff2b53689435d88869cca47b06183d213602a299fc76b73941af41fcf0c2a0d19d2399d7d75f23c7f1f9287c9a574c00c9bc27eec9357ff011346a32b850d144231ccb1ca612c0751172ac4e092086038e2cfbc1b5bf1bc34a2e584c9c8b06f8d79937ce303ca65f05756be4e943da36da3b560c87942bd986ccb3fe17e742dcb8629cfafe8b4489a78adfd9e4f430f4083772c0d3e493dad864bb5422a61d9667d1e5d4b61ff78d9cac49e0998d61dba6f51abfbca2ab211e1ae7ea6b9f94fa243834dc4fb0aef889d75647b7c3e777b03f70c81be4050cd4472bd134fa431eb5a275b6642da1a87d7138e4893fe4f8193daf1c5d7fcd06fc5f0ae7721f5970aaf6e4cfbbabee1ff4b5281875d4069aa9d740f6d2ca910fc0fecf85addaa4b917e69c07bd9a5641631955461c99c70ac4865aaedb9f1d44a2d1f4ebfd87d093f881dda112569f1048080cd5e025cc823d1e280e11c00312642614ebd338d4c060cd0618675b5bc18559307ea8026983733949f94e412286e7796c46b3e043d88943ef365d707cde3c84f49f1d84f891a6015da000141d3a3e75fa79a0cc026a989af518d10ccf963b69b916b8652187fb4e61a27b44d2c99fdd2c814f943caff3326f64eaccf89f4f2517cfd4e40a46cdde1a016356581d8d1540f57ac510c1994d51c3506ffe60e46765d90515f21cae56540e8ab025c3d0cd832bb0b1bcb0108733b09bcb72dc49d3be098e717f2cc706b3ee10eb7fe1cada54f41e5eb0dd3052a37c58393a3b83120da710de49b475127072244208687148893c9312eaa02238ff172cefc17d3824dcbcc83dc2ed27adce8df58cda2deb598995503075dd7f80b4f8224e6baaa92167e5d94e1bab954c81fbabb2287eb5f391d1c96a5d236c21ed9f5030e378d72c507ae7f5ccdc41fa4d145f5241ef5a613ce5cc9ea07ee92fc747871612b2e43ca0befa21a32cbbd83a0f079fa949f0401706fc3f3eb4f8a1d9e96d1742f6b0846b7da1915f73d2542e055a9271f064095861b42701a7e6425d410fcc2cae37b6bb4ced97bb70d853346aca0bc36f02592f63f8bc575c1c06783524c0c8ff5a1aaa2244ad85e77e7dca2611a83865edc4decb4eb40c63109367631cbc496ff6ba9ad3d4dc0bff147467677bdd616d2d712006d22d57457d1122421b4138ef55b4cabb15beb22180c0fc19bc47c499c40d3f17ab1f329c6dc78e191085c3ac53b0fa28a9b28a398a810a4b96e840750ad393bf9de767b143a550d10c45f7b747ada940df61bd81493efb2673f76cb62ded6241a83a2dcfbca5d11e7e8053ac319cc9289a0a6e7dbe2cfebf97a03b0336d53fde33e20c2adf2a3045e0dd1793685359334aff03f37951ad8fdb8d5bfb30344c25b3532d6d1f1e5f37a700c8b14e8e6436ea919e412085f9a633814a70c83adca608d81100a7dc7d7a4f6dde7ef08b6529f823069ebb41365a8ec42d0832db7981d45a6d8cd34b75498abd20cdf025fb4230f406737b79724257a455e3d665faae7f78922c270b77e7082108d8e3b5836178079adc449deef8eadc1cdeb2b3d3ff972755b17405a83e0167a4916a3c88b4528559388f86f43d3bfcc57e3c000d767eaea9f6fdcec56cc168e9b75f6cd185f6a42915672be1d2d6a7dffd0c140af7d2a29f95061c6575e7d066f8308f3a13ff8287960c04cae2fb6b90e44b4454e6ea58d5128377e314a8965eab24170795e40559b7f1ca09036332e38d6162d47f3d1584af3dc979c625d9438f5076d5a4da3eff64e7372d21cccb82d750b7f702eff81b1fc09f248ffd4d9e737be1ec1d365c312553fba1749df405b76d080add41a9b3999650c18dba58162bd132c03fc14f1c37ad54a8ccea04a8c0623fa810defdda57aff79ee3164fab9b24773379b2284e6c33e95282c60e934adcbbea362db098f3da5ddcd48bf019e4e23b0a514129b678a5e2e3ffe4de9b8ab3fc3620c6173afb26e5d317dfac1001fcbe6d63a4559aea118788375d4f9933b494f60ea47f8024f9c07f430b8f5cb695795bd51621501e636234812b208a29bd979f57fd2ef1bd73fead3f4141f7e7722a7df14aff7ee3486035af0a4c6a3bc9ce0dfa094b7f9eb0107708d3b42eb1366bdd203f56672d309a6fd62891b3757720c39099d22cb15cf241ee6b2c5cdbbce5daff82537831f00139bb8f1b021b9245ac24b724cbe3a421dd8cd31c858253b7b05056d8b8532040eb0b9633d4d0cf3b64c00ad56733372dd5c6d284172b5d7d411ea2385353e7e3c219fab42debb3b6681887f25a9368c49fca7a367a658e9073c3ea46fbbc9bfd5023534457529cca54d73c7287b8276bde14f63b9be082d802b0f84bf79d7b874689a868eaf1f03933bd83a8a68ff02b8a43d67431cdacbcaa064d3d19d5d0fe5c2956b7e1836f6e87067ba4fddac76dfa8aaaf5d3113cb85471f3edd54378efe768f3ae049c883315d42fdc7b5e8ac296ed2b8ddbec7dcb14b488036ae71c77db474402a5148943f9b1ba53995ce55372fae72b10e54c786d781034693708f864b6050f8bac78f182bb52e26b7f34f2ea52dad01334e8e26f372387bb2f97de5dc37d359dee09ab9e1ac990b604e223e36403e6a57b6a44ff26de40f27fe86fd8d6d064f8afbeaf35a1cb5d734c73ac7538222be530967eb47202c772148c4234e6de7bc7519856cdfc27d33d008780efc5fa414237555c1d17a1b8424522f68ad6d2e3ddee9bb19796e018321dbe0ffab6c68e79ba5114e743325d87c77df3a2e72a66e371b8d2d6a8427cf311f1fb76310cb60b5a0594c4fe53262b4574b14d14210b13172a43f6b6583370b54ee1acec7277048b5e22329e1703cad83683b76775cb9866cafea0680a3a2e3c4afba0047be4282dbf7a8ae9e512f86914c220fadcceb139dd77d976b60fd5561c16bfd07ca9ba48104b50b760dbe9e50035fd9b7b5a301662ba816517300e1a0f29941f61864392f1eaaaff39d59a5b0c2d6deb9a20db95979f16aa3a84cbc9acdc1e67f71b5e48f73e647316e9923258687b82bac4854e75e3f657e1c75d73404a29ca260f524a8716a727d742bf4252511b12eaef1ebe1f5f0542967aa7faf699a214084cefa6af57e9b19b30c29b74cd00653ec5b9a6a9f8e4c26b4924d373745c9a55c2cdcf691aa60552d4d602f316c0c3f442241c34ce25519eb8f6377ad16d7799a2330126e4ee7d05d3f0b5522bc1b4d25b173ca06cc3aea3a97b49e606b360dc1bdb10ad5412cbe44ad2e31976cdec82af031cb1dbca3d2288083a72c86721a8bab5eac2d3d2df4dbfe65926f1fcdf35a60e79573fd2f96eb78f28dba16e5d362abec86ca88b73ba744ef30ad3cf894e663440d354a14c5369fc6f0f3e4a595fc6a834d9faf097cacc08af9ffeb8a7a1dbb4f4352ea85ecc598103ca45e8587993385428ba8aaf4ada70092f556071a67769f1eeeb63e12d9abd13a0ae8432811e50af5499726714c294664d2ce61e9fafb3e7e98a40046d1010d9c8d4c0f2942b829e6836885fe526ea1113a88721e7a6152cc6cc11d0d3d7d34a02da63310e692b8c09d97a8c29008e93fb1df7b2d55c0e2d7282b5e4aa563ce77fdd913d4caeeb638174bc8dbe5bdaf24b16e9fa849a2b3e4a806782abb7f26749b164db122c0ea5fba57ceb603f8460136fe7c1386c46e54fbf2acd75dc4470501e809984a190a7ffc545bf7a7137a3de1b25139fa1a0f2a88bb210d4dad41c05e6eaaab911612f1ce56c8bef23c784c46088845a904205a9e258319b3ac9bf307dc0c3ef7d30cd82d81c0106c406a75314b38cd44efb32850b5acd3b11e81422d4a8280c2f0884c52611ffa7037b895cfcce5bd256d4c2659efdf981453263f03ebc303736fc65d8c06123f81aabf078c0e71753894eefc7919d8f7e00009ff55229914eaf674f1f8cb9af4c62204c1709f987effc1464522c7389ce3da6f56469c5c3f71bef71e196ef9c6200917129480e994f3527f2358ae86579fd783ea41edf07b6980a2f4d40cd1cb52c3dc0c5cd60c981b9c4e4f5d8478a985120ea5681c04f032be669846a6282da246b8d5aba1bcb3e1731c3ff06e4d137ec0746637989f44075e14c6409c9db994d56dc368b58075514ec0408701b10939178b53d7bf83605bb05242816c8f9278d8a4e8e102c00f5b16c78c7cacef44d961a5f9e0b0a04e92107766564271580c79e95b7c7ccbf737c90ad1c002892417fa0e0c2679bc93d7bc149c38e10c0ef4c2b1392e879de23ce18704a7c55bd0baa24444999c633154bbca41c75216003dd8c3f51548ecbca7dd021cb03912dab5ad1a19808ea1979bebf0bb8534d13de4e81af694c56c446d751de4b0f1531b4d9725747c2cd73b1986fb18d7d78f512939409a7c7ad2d2d5c0a354045e0df622ce42d4b8cbf11f5f5152ee9f0fa56c8a9e540a89a69aa37db17297082d6eb5c4c50b4cee42e33e20e31352ba90baf9975d55869559f0c8fbf0296a9ecde32f4e29e9218ea8e8ece5656b3aaa4b43af501b38ad1527552f728923d5b32168e9a8911c2dc2cf77bb82b54935922d5ed25395bfdc301a02a5acb056e08fbbd0fa29b0288f361c6759ed2e8c239c5c9ad6b39b79f5f4a3a62487248537e70044722120045815a507e76b8dc9a6c377f0ffc680cc870091f8e9a8bb9aea44defa044dc99ef7a1f48df5804af5340ccc65ca623c091b0102c938fa12fea1a132064120bd9023c68f5844c1b3bbd927c1c50ead86c36ef583145061345f61afa405cc00badc9471be4abc4574e92e24d68698caa8ddadd194bdadefae3db2d0cac13f13db407f8d09d0d2d4da4b584a212d7278f3c56faf2478d0d6ea9db41ce47b7f663a74e41d59fa4378fcc1526ecd8a219b0fe7aaabe38b2efee6847a4967195bbb01095c8e2ff1265e26cf4b7512b0cdb4e5142275fc40fb9292486776315ef57136fb0c77b911ebf8ff8a14d72e6b78a93156c3fa1f422e416ee0b922ac554e63ee173ea3467475a95ec8b26caad9f55aacfa5117246697d068fe2c31b43eca9a527edf1083caf1b7d629d6e1be1de6a551ffb2e7c5dad81e48f3d79f4ee9b8fe61954afd105391e6664ed9416661c12beb9309e7854f31308c3f8baedc583123226cf675d2ee085dd14bd035e749719f992650d6c164f0f6bc909adb7ca365288fb2417286da0acf9304006f02c803caa624d74bf426cf05cd7939674593151a11795c9e823c61a552749f3e752bf44f639f9bf55bcd5776eeae6335c46d931aa423f77f54086871cedb66bc897bb363177961923daac4f3e8a3af679e5d33d0234fb4ecd5bb2b93457211f52330a9c88a994f52f8d473ace6268650e3498f181caed47411cd5a7add4badb596ef55e04d7a3077b37f498649b53ab302c3eb8f51c01a0f6e2acca7b36137543f1d405deadbf3cc4a6799f1c917582149aa338fc2c0ec164f5a39889277c827b9441a58ceb2ad22ee13f2528d893058dece4e7e2a458ea958bd5f54690c70a239f2d6854afa9bce4748be218a200bf9389c12b7ae05790786fb0badd954141d022c170370896224fcfdd7fcff7e2eb6bc6fabe009b33e1d0eedfc25bd15a938d83e9b03ea6bca83653ecdf9c9ca047f8ed39f33df4bdc9d61066492796c793da1607fde2a479869c1425f20f10599bf92011bda41e59c9312c630f3cb5ef19171f7d4f200f18131f5bb382dc44a7d10f7fcc924ce47369bdbc591f32c1ac2e84046942cc5b77b5fcd8f8fb1299d05ed65c0449901ebd4c6b52502f6736b7280c342224638ec783034663c95ddba80b336b4f004b16de2483263281e4cccaf1ed5db3f37088c2cd1c9b9eaf76ecef2313b567f4646a0d0466f30468a5ffd0920517a472adc118e25bcb71f467638a791da4e00b94e924109404f6c7cda8a182307d3b4b46dcc189fa7e27fb5883710105768177947cd66954e43683b925b7f23327ba6cb29035a587c948497e7f1b91b962ac34748c8208eee8bf1739b31ad1b3e34927d4da4bb4c3bbdedcec27a7f6052376ffeebac516e0da71d0d74c4213a19f242a5db3f1850b86d7023449370c4c662edafc3ee0023de9f4ed15fc964a00d105c8b6af7e17bc32f0de8c46c04ab3915dc4d90bc3c1aafdc28b9f3d9dd910e974027f5d76f9f8670b0ee69da5da744442d6f1d46cd1d5c79cc60cc60081154b2843d6c8136ed66991691c1c8de876f9481bc793394a87cc9989ba1e968c2d6952d8fee39586d0bbf3c99d06f3b0f25543779d1a7a3a91dd5ec1b3a9820836ac8600f6a43f7d4083385a505e722b37498d0b8c869da02cbfc8685b457d123fc414f8f05ea0eda90f503c13e346031968658925826def2216fc28ca366694d2772dadb5f725229c765ba50c633f1342ac1f1b448499aa76d31404e4d8a76e7b94d628b7876787cfda6e8e9fb91f13f9beb51a96a8edd34526a72009db121054cde941c45fdafc5b6b8fc650691b3c1bc91b9cd0f2abb778a0f9e20937e0d19dffa4ee56336ccd6ca51716c05d6b520170d7aedf91b9bec880c43715f0b0097d0168ec8d74b351bda647b59d3c6c7acc469280329613b6d08e67f07f13083533605c7bb2de07a2ea63e3f4462774fbaf803b8d10f4e6b65c547b5f4f003cbb30084672b4c32935fd84250d7ca36352c52b844a7a607e00aecda5927433c3f6938a18c0b8b9843594839d0a71f725e7ecf660931c40dba98581637095c6c84870c3b8113037e22897b76455dde4a939f7a83a5598b2acf69901a770c4a0bd16813613440275739eaa6eec9f3b87d76bd2635f7f9872b4bb19e069657e5af94b42387a22b04f3f26b7549935ad2f864cf987413d84455a37e5270f58d129067c6598807f3d7c2b56fdc2acd26a184f193e70e128790723a7c4958105cc5200eecf2e9308c594c4d74d2a50a54767af5c1bb817c6dd70178ba862ebb865f447cd254f76b3d031e6eef6f9d68909c5b96c645618b2cb511536f6688487bebe01861bc89123a73f943d6a17c5310d5372b72afb1232a8b3b63dff4977d051e7e3c95f786c3dfc1114c0223f027dca43015c562e1e5540176389b19856263dee1797cf3053fc07c45a0c4d29fca2a5d8546526013c7cdeb201eacb420065f8942cccafaaf9714fdc6a57a047ad42f52f0516a77da157158141b3b1c5ff800d61a7f9732efabfb91a16515ffe82434d2239f0f56a632295e813359577f22b722a567249475181e7adde03c62f14c32d7c3c7c35be8a27a6c951cf6cab451b83ecfbb4dc285949e40f187d618220812ca6dd59834e9114d79416da76ddf96182b42da9ff73033eeed2742201bc600219a2ccde1e94447a322db8965288abfa11b873427e23d4c5055043508b07705f076b65efa64e8984cff549d2b3403cc3cb3efda8215e4d1e9a9b4b5292f843259a56b613aa9d947ce13f7bf64a8bc69552cd034fb22644659dff2cc4a272eab332c1f6a6282e2fb971683943dd51a70359f3b28ebb76e6e8eddad45d3cd95b4dc676e16caea4fba8e0aa6f10e035d1cf5708da2e82dda7fe08c39187aacc274e927fc39ed7b66f9643e403ee4167b4d47e0227edb6d5ca14b5de737499c79c154b3244063e81d465bbc9127456a4fb47694c26066e292cb39103377ce149d8d58c69b33dce0dc8a8067dbe2eaf8f3051f31ac1ff863fab4e6bb9ac987f8d09565ae6557c251573c7539e070b28e60268a60e2a70163d52d3555bd3f45a5cb79d71c5637a6230958f6ce80c9d254339547dfe7eae3f4052db4f24992c0e8c92ccdb68c078a66aa35bbe096e2ee4fe57cfb02a8315c1e2e32d654c34db5c74b27017f62312b1b771aeb034d3770677f135275da83095a20a10b770f3014ef892c308adfae1da5532fb7f809a84f9ace1c694012ae94a25e8bf21640c61e650f4c38155e57721252c660b06c201b3e547b1ced6d8bddf4cbd400f873d1d82118ac507edf1f4c6ff7b8fb625e9f9bc934addf9c0ff056a8b3030eeced0e218fc6483246bd492734f965743bee83b8915a58eee7b3b2c4b699d545dc77140837a71cf7a4d760fd8c723906725edc776ef4562c7f0bb4c674008ad73a0965ed48385e40dc49a00642b130f68fc3a6f00a8382a26be37acb258e63b7b0ae6dae6b6837cb5873f592eb97c0cea03d69d60337e5e3a414efbe891c38ac12b97b310fa67fe42010cd03c87264be7e674bd5a2f149a536f1712b0f71a77b13752fa046437b7affb11d0fc1fc79f514f6a0047a2a80018af21b88abc0d68c0e10f008661bb0be77c6e774ed2d2a42c7eb0b56b8bbd675dfae5a10d3029cd9f848a4f5c04e9f8a422cc133976255622600a78ea90e09107d23a3f0e3ed850250bd049197d884a2d9f93ff826a7813a46b0329a265155e5083383d328631158191001405f990e847fb1f05cf31f117b77f9993ff07c296bfdb27bf234e3ffeb6b7cd220dc51e440d41e63e704be37488684c4e161308ec6976f9078605919566216825367b2e514df924ce4fc64eccf8f1e0d9f3480204918df98ab7d53dd9fbf445857bc600acb973569f54859a718d3b02f7cc1fd7ae07e649f0be3fdb07da86d33fb96643602197d9fe488f8eebc6bbd43112aa6aed0ff6e7baeaaa7f654382605adff09cadfc8396ca4f12408136a6382e7e14264f1b0b7ff6f9710ac76f4d08d5ccd9aac65f43f92261e63b0ef3103b7d257c6010dd62bff19013ac467b0f81f86281fe6c968b21e39746808bc00cc51ac68a8f3b26dd7f757bac7c8aba5c0763b6e1593001043dfc2e734f9640b702f5365fc3ee90b43761286fca4cedde41d0d89bfba7285f7c314c6224a52f9246a0cb3cf4229f037efc4a74bc6aa83c87b35cac42a5969bb2ba2c8634831b4f222c4de90c1c4471c0430f277b13c9b0c597a926cee2b1726f48535fd87c2a93e9734b9ba5c29bc46655eec0bcdf3826fc3ce0adf683fd6bb4b7dd11413b44d1d2c513716a515b4a17c909ee1094bab520ef380924915fc24257270564c746990b6fc813b5f0d90fb9366d468c12184706a54dd9e32158bf58d98205a1cff949621ec2fdb1bf4c6f54634203b3e9db0c10cbaf606fdb4fa61122886a67debc620b02231939bc9a081edba304b23604c39e7fb2139586d34ab928cffeee246c5e1cf542849aff17f3ea7b9f96383d1aad46c9a0639506326078a740ca452e5f19bb2660527dcf846153355659fe635c8c581b9d644a59f60c7594b43649130f14e3b89a623ac3ff0092c7ac5696842e0918b5c7712c30bcd24917d957d4dac3c6493b63bdaf45cc807901c30d1821127dd41c2eb5fd32e3e60e22c7c8840b1e9421de1960046fb075dc3a0fb5cb335c0f612203e0ffacf9361c140039fcfa37ed874db113739f803b3d54e1c93ea75ef8e9422be2b08b02f35329aa6be9329a415a24d3b02bdcc925bdc0757bbcc0f9a0ea9a5a652540d5de8fe5189afc6c800f865867c19820ba9962f3538636bb3d4689893afec4946c31e249cf09ec94ddbc79357ebd0302ea1288a6d5d5d68a345a8f27a617c231aba126fe377c4cea5e556c6e3ca0ff835bdd51ee376a5d2c7e4b45866d4a0bb45b1307c332fc417586a081af268d6cdaefa5c708c02b9d9fc7e59b7254492f0012da9159f16f99da49f20d41b2f8de1cf8b9097ed9433b6defabd090b2fff217dd3bc41481ea2668eabaadd0b20cde875dcded90a0113cdccdb4a1e584374d9568b04a3649ddc87b2a1c916c7cfa4c344beb9fd1e1489e0d9232303cfb6803c8e6a3c1c9b11dff987c07216ca8e324a43f0f86fbd83b041d063da96f59f9c3028906c04f633673c57017d3f0ceda6f10451c76a200321359296c4ee6c983e5ab23376b774ff92df52fd755a66e158ebb53ce0f7df205c2a7cfa985f66bf21b5e82f04380abf1397c36f847ad8771a040b10f243411e4adbb375c4176031aa478e0066bd77d4c7510a49e89db4e019b0ec96591158da99fee1375c6310675c8455c5d34e27b68a4379a6798a811fc951adb304662d07ced49361294361d09b61b00f1ce47778707acadda5d51875068809ad6b7bd98cfc81d549ed7aa3f2063943dcd4c4b0ffb9cb268ba9a665d84d6510edd731ef219213169c00ae30444290a79312e96541e0ade2e80cb1f890674f2ffeb0eec0ba195902561c2f070694352f4847c83af56bc7cb94914a0d8eed9d07df51524102ba4329d1b48443765c971be02ba58b2b935208658ec38e8ac082eb37791bb414a261ac504ae715ea8bb429ae0f3c04b07fd88fb7e059ec79030bad23cfbd4604e0488df09fbf98c115666df2d1c1af830af389448b0130ee83a9afc09aa173979826301f4f23c0688bd83d380cb00452ec0b4418ca1fa48a59442502bea7092351280e59240c672555e9b998130401a9975b7b2d48d0cbeaca44d86e215beda1f9048df8d7157e1498bec3251ef286eba1ce020b7eea2751bd3553fdc8e50609629eafd679f0de8effc9939576ab10458fc18b0743927baa6ba88b301eedd1a44149305d5c47c2cc565b997525a193d4f073d523bde6c050351b34a1e951898bee897ad6df99f4b958ca00bceb49a7ae26e287fb5147fb0eae227a4ad9a2091fe2293704e564986370ee280bb5ad5836359ab917e6ae8191c033f17bbbb4a2436b000841e62851387ccec319d1b177de7f5b4bccee7a37ae7057cef21e6c3e785f1dafb9dbe4fadb9f4615218caec9b3a983fc9bf4f6c75f915dda9b75577fba3eed2e9accd0b867c648ab60cdb1d7b199e81fddb763f2d2bec697165e9a5ab129e2c0fd569012bbd4b075a6c77a039633625147af97f5c49c7b2967d2f31739da57e4205d18690f123485e657b1a5d6ddfba47db7905f15883a18eefc64f5d82a1735599b745eabc0ef55ac741ad0418dee05755533f2452702ed1d8bf33d8e883382575227133b55e231cef188e6106c089fbb8c2e2e2e662fda19e17dc0306a6b28a9e315e14358ce788f2ea94efa75067927e9dc0a4d32f201da1e64a4765a8a24b06d5db18263d277e8fa2ae0cda3d8e622928d3f849993c58505b231609c5fef651431113fe911d26508661e8205350322ab21c018cd6a139f2e4516022f2e1a59e9651b49726d5c40101ae56145707fcb69dcb4328f58917bca144367f8926d567ae21523fdf8a291c40ce9c9ac836596732b06b622c7e8ed5a7234919a30ee7038c48c6511b16f87b3e3bfb1900e57e43d17a85f25e50103bf321a6db4305de528d704b8208179d3c7e75b777c9972ffa287a219e056228054e6968a48a1d7f7bc880e2e04843a74d6ebea947631c544f6e0db812d63a59867ec5e78eef2a1d2735d5159743d2fce9814ffa91be92a4fd243f880e8e90373980ae3d65cad070e01f3c549784284d6d891f5ce871081ec3e597a8beea64440721b712067b0949a2952950990ae73e3a6e2766cd6555e4cdc34c7000df09f8682f00a55cc214e954bf0db9124d4b432e401ac67b97059b19c431d4abcf28925c29160710e0df806a4b2790530a29512c42be7adb5971ee8d2ec65dc06d0e1fd89d79974a86f93540538889ffd1675f301dc0518cf5a2d4bce933568930ff2ad22980148dbf3b4802c687efebe92365e9cf5111ff008b4f485677dd023dbc35586667f03d1e31321f71a9921cc81e5ee1877431e1d7b1ea65f99fc85619bcc6fa42baa5a1d9ee59f0902dfdbece6e8b88e0ffeb877f47a56bd72a12c1724280dc38eeeafd01f53ed70795a574e7182c0ff87bd372772871fe25236288b0c3da1ce9d88ea29c99605f01f05e38fba6d6b7e2e49204f9bfe920995f3a44367df3f5628c5c8f732388a8a9099207bdc8daa72caf82d74514ceffdf2c5b2544812c910fb1e9452c2a8bbe6ef5d61f2b2c0c5ffb0662ad3fb7f806e5e971f47647aa4d766d9943b01b376be66e8d7b86a6f7f4d308779fbe9c6d9a35283678b8128fb25e98ed2ad616904e527100f60eff65661da4ae401b1256605e87cd3565433c813849f9ea00b8cab9f1e1c4fbf8e634da09416be11d446eaadb3aed8e2b407b5323ee527f8b94d576f4958e98f89e76c15e6d1a5057520320cbe465def7c6aed963cf5fc64d9e1f26c29eeb35d1573af84fe88e867363a72eea616f5cfe972338cd7dd50cf272e0965e1d9f722dbdf23d955dfff436a04003535716a7e8c21dcb4f673bf725abc24c316dc2e60b039e57e5516bacf1c653c45af76ad9bf25c6829466d270718e5c265354816155e7db56b099038d18bca5f1198afe594aaf925b3b72aab79ee585dd592a7fbad887d1c50bbb767669b5bae95e73dfacc269904f9f76ff878943f429d2958654fe04181f29ab8d1ffe866bef8dc0e79cc61a0b70f4780dce24003ed477aec71f3887c3e09cbe33845c28cc9037b03fc35df1ec8777fe5658173ce557e8566ae09769e3af42b1ca8f05baddb5b93d3314e11dff7f0163282cae6a2cba4d25a478929332a5c9c1f16cdf7360f49297f73e19c1e00c4635defbcc4e01a12c7c5db9f4ad8d96df42df0eb54fe830ae33054ff1f7fccf177d6e813f44c40cff9415611ba8e5a4f795297653e7e658b9337bdccbcf8a771d99fce8044e562bc04a5a46b887a6df3e50de63b1dbc6c34b5285aad4ee95584fe79a22d7c98779dd0cfda7735fdeaa4f4cd1fc8fd5068e92e939491b3e141902f3689ffe44f5853346a56e64b9c4630f9950333b252611d8ab0404e13be8e3154af279482a9be885a9163626f685401cc082e98b7f32f83a06838fcf9caf802e8f8bc3980e631341f97e4c643ac6c727f0342d23c810765e44f0623a88c90e24d5c079ec645409201e0b1fc7facf5071d07c03d4c6af37eafb532a748127bfd2eb71efbdc7d71cc9fa27c24122df4cec4ed382923aaf72b4ee6774f4764b05f154a8dc39d25eb1f13f1ff64f40d4d5c8bfd4cc7a3498f515a707a9bbfbeca0fa2cec15171a5a29c0bfe1fb03290459fdd919c6c42d830f574344f2773004ee8857ebadf90d51b3764c1b0332e8775843dd19b43b657201034db4f06fb551d0408c1b2a29d3c5acbad7710b9e03e84ddf445bfa070b894840309d79f3b030694692ead98de099dc5c19b4130706d843b53829f3e36e1a4260e0aa4f697d162b0f9dc30927cab51a77d05ca4881f16d75b16bc0ed52b238b46a98ca1e19acf2cd016b10819b15c234efd606dbc7e3cff6dfa0726a10df7be94a3ddc1b91673fd138abcc10c7d7979d8fd5ea7ce0adc64673f101a932bd0203d380d0fa592fb68dd8186617168ded3e0b153ad157e7901e0ce387d9dce65a0fffae234fb1ffdfe091344e34e1fbce15ef28aa0459ced3bb196af9c85159c4f9c034aad957847bb86369f5170e0dfb9c45ec68e7c03ed9e87f085f3ef7cc23d100bc65254591dd4da9bc8858bbb6a9a4d7e7761b27058577ab64541a20da1e1379e0eb8e2e52735edde4cdc4b42cce725aa3b053a85b1e320bc2bb5ff38f7f5c3c9cebe7e1732f0083cce8c0b29c40e96e24a790fb11511df9b9b2af2c3246c54569dfbf49a34034245cde85fcc6cfb622899bb317cf46983cb05425efef2e216933053a37f6a1e7fe59c585693fe81b715895ca3c5de7c9f517a7af298f5d665d37c0f8b98d4f3f64d9b2656a76d0fb9161af03cc5a4b2ff2fd3a77c835e5a425b85404bf0f30f5821aa7717585ecaf7f9fd57056c0ae7cc8894406228c41830603b911fed1ef804798de4f77c9b62f1477654f53d7f61984dd0a09618391f4d61c309d580233fb358c1c953dbe7a80495d8eda04d19765e7198036af12e2e967a637908c4e651eb6be8c179d072d9636e05c719fa27315724c70be4965aa966c0bad0e177314669b969cb910a3e2eaa7b37e3cdb1179947b5bc0aa874ad386065ca1cc31981fc65c48dde9d8bf546f236c61a53df118c1e6b1983db49890dc8bcfc22a5e92a5e893a832a148699706c8e8f2a05d8519406f461d33520c4f10ead7fd2df98ea13a0159422a40944aff527c359ac4693ff4cab72f9bb4daed5e56ea344fe7e14e223db4cbd2d52c69584a5670a3e819c78f2eea761546d6eeedcea089ad2c917f2647d7244494b71a5fec1d2a0a2987556b0fbc523bfc309ae931fccc57d8708eec88955d34ba18748d755ba826463f0f065b1eddff673962984b3428ec12871f990d0631a8ee35b05cc5705bf4bf535cd6982172807924d265b6ecb49d0a2347619227ea66038296b7fdfcccb533d85f88b726811cac44dd0edea0e19a00c02c8785ce00007434ac4d55df76e5c31948a0ff5ad716a030e51106b934cf4f388b89beb23bc320ca6613cd4b72c34bfa23ca5757cfab741722cb1120c570185d5805e34ba167c9b643ad2cee545f9f71cf002589255b9a6fbcf4e2b25afa6877c2d4ac14b6656970af7690245c73c0f4db29354b2c8e254817b2abd9f19ea1604d8cda643a8fb27d52dcb5f11331dbf1747070a92ed8d7d3f3d0dbb1857bc6944368b7a342651467b72d9b4835259aee22cde6338349666762bd4bba07e0f5025011ff08d23e4d6e5fecb5dd81cc6dc5eb5daaba238fbc6e006d872e98b4e11811a10dbf3ce7a726184025ec090e3ab62f638a5b7773f7bdecf1e27f109822a6396caa675e1a8cfcf077edadc49042f1d1f1d45e7f8c7fd273e65cc6f0457d122b4673e2ea066aed41b1acba585ea33f7828c190a9040ced75bc7f149b2a7a08599b2f22a4710f67e4c86fbedbb148bb5372221fe3c835e1894ae5f2cd82ec882439996d77e6d7347e12ca3cb788e12d4ac565ac14d38868e1214ceaa3aea9ca9ca2ec2d24d5ecfcd3504af3fd4ce357547832cb8675ae61993552159ff2159dd628610584ff987e7c4c524c2982bafd48c875b4cf40f314b22fb0e29705889f23387dd433c846c58f0ed473c749645770239dd0aeb7b0afc48ca75d2ac18a0c98c9481708dbdc173dc1de21509dbe92057e09b16fc2c5f3eda5b83a67688dcb3bc34216f0ed42930ff93f67d06788101964979ee95b891e7aa9cb370dec9ad3bcb7cdf3b5fed7619620f8f90e2fb21ee647c0b662e36eacfdb38a495e57fd4ec72b2d1c24664fd0ebba2a2ed23e11edee1d17e716ce5ff3ee14f47699a41c40c96771fe27d88cc66888819eb2a715226b9877742d46a28103880258b6130a81fc5652e8cd57065e5837d526219bfcf810dbbd3f8fe3fa2d03a8b3617118591fa8650a3fb4fac01058a01926297a5fda01fff669b65beea7c3804b1c0f9621148d94b2db9779987b9a635d5c3209d3e7c829ea0198bde3925de844bf4a9f8df39163f51be67af0330348b18b10a59fbdf1cc50607db08f8462c185a1dbeb1a8e51c3eca26b604e6dedcd7270481cf635f6855bd196aa585e7ebda35bd4a54c3a210a9a6175c1fc971342f28d0c65adb52e54bd5ff00c84291731bb8136a766c2e7e181d871b4b1a301ff62e16cd5e3f00f74782c429850ca907be22089815a325e67772e3f0592b4e08d10cfa9725e0b1575af780aaaaab1fbce43749a3b4ef2e248d7c81e5bb6d30f72989fa442e6d8af5a6e6c85b1eba83b456b1fa59bfeb0766c63a89430f78da3569a6b476491dfa7d3e2ce75785644bfceaf0e700871b76a0b7a06938313014e14e365d9b1d07a7e5062ece5cc046fb1738476d144cfab7270a8a352072071ab249a2f4722a5f29d22641df53baf06b4cbb743ffa8321d78dafd45418d9ee2543730d509388cab58b4437abeb4932ce7bf0180eae3d5b0400ac610ff26c3b22d2c39e69ef54795afb6d531825fa27a257f0306fddcb868b1fcc0de05bb157d0fe3850584ec8e041cbaf6e77f8c475848e71acaeee1972a0044396696a7b4d65d44b80d39c109691111725496c5f8f4f9f72e9524c2b1322b448fb7432425f68976b69aa0b0b298998cdd92cfb6698aa84e426e2e73f440b764d09ac4c31752ec8d815074f25688b98d041910a416d6a45793a88f4181f4e4c22973849da922032d76a0edd3a432602c20740a555d22cf2b56914fdaa59f6250d6ec098134e18fe65fcd8a06b455f74b186c34ef7a64dec8ff9fb9849364ecaf35b0007f3bd4dd13219a33d1cb313c53411e510bd22e83391375b3becf5272f8d4f76566369596588f864298090a205a91966261f5cda7ec02273fef305236b79dd7459102f0cae8f6810a6c735a8b019fbde95d6f5c5d0be21675a717ef67f6ac14d0798fd9f2ca31c7a041b303e36377d7d51e0a94a9f56228c869fbb78259b888f9de4dc4491ab31bd259782f60f4990ae53ab0d2096bc0cca639094133ccf9d4110bbb66b1503fd3e7d85f87524c1458dc686653f7f8f59b41705fa218aa9fd1378d33f1246e53f820778c8728c3e5553dfec601250601afc6998781bfe315502e81a49e2cf7bf0b58e0ed705acf0da9a09208a2d087bce2c450d618c571e5cf33c84cb9dd345e1b56d23ab3b1a316e63e36d94afaed23c42eac73c26a148dc9d28810f6933f85e9f74e0d99daf78df48b48ffe4ca5b2f567f8b74cf671b4cca366ca4f69755707614dd19eb35e73ec3a2a384533f5d9adf972495023c01b382d784cbc22468004b851936d30a9188b94e33dcd11918bf6f5fb9206fd6e8ec76634ccf4408f9823bccdda5348cd8910e2f8009c18e2d6e87214745f07e608cfbd5a2739164d474a58675bb4bba28479236566c86cc4584d6047975eb82250f81d4d457f28db9f1c4ab46863d3c5e0e1ddde5bf2584ba33fe174edf2001fc6932bac314829c8338c5b8b4af0a12682a62d9304ad2ff4020ebfbb24a38fbf65760f65a75093e01e7caf623bf09ac8c029956abc1c51c5a4afb895ab42cb00e2224f50aa0831508a364beac1e91f77e66e807964f1802930062bea4ed89300c01ef1bebf27015f3ae01c08076123ba3ab379352f816c272ac3104664c3c22392fc7dd7116c03f5207cbf901933634af07a2481626ef959319a8ef716612fc1b57ecaf2d4898401c13960cc4f971893451e01e2b79d74cbe0f221fef3c9b9386572aba0032365f6d0109feb5ba6dcf6aadbf9c09c10212369bf8fcb759fdddc1a4637d710552e8b1c5a4f2cc4f9cf18413ee3840026563411066fbcd6599fe45c4f2c1b6cfd42fe38a6f049f298088aa0929465000310e08e2be8c000cb33a50c16953ceb612167868f3fcc1ca6f6a3a2789ca7a3586660ea608dcd3616761a8024a41d5331195666873d1f97f9d8bbddb83e0de9cb9ef8df81e6b32ee449be62b1ccfcd9f412a7dcdc5cf0c002f76b6e101edaf27195b92e24825b15a7f82c989b10a594ff0fec58c0596dfcbf3cf1f466946ae7cb6fbd0fdce871e2e0e091f79712a21c7acbb120cf25b982d13908b100786b5e546b64de7f43d10bf584a68a774fe8573d45a5baeb69b2b756c00b69eed1387b84b7676cb3a0fc859d1b57030b3069274fb4e35b99f06bad7a09aa28e307bb834b34649f1ad49edd4e9e4ec176d7813f6e0ad9884e9ee0f90a208b124793862b57b7e1ff874052e0fc6c73975cb5a3a93d413242fdb60921560403cdb602643b047a8c37f18daf708d03c5aef680acb219e5fe46099baef0a62939b3a0703f04da76052b704835c5b77373581d6263e274bcf42c5643506fef2af684eb43c216688af97b13bb9071802bd881bf8e5b97b57a742676a2f9e7dc46787b790559f30a5ce9f124be62c3cd9fa18035f380f56b89d6a0ed2b64ac76e42c09bdf6ff58c3f80acc9c2581b8913c83cd1eec0308fc2a715ee03a58a48ceea465486bba96f31232ca4df5155f5a1ebef804656f6cc79a30da3a0b3bcd0425b6baf47d89c4c095c3888de00f4ed28c315c76b4e158806e6d53ff78f211badaa3b2061008d3ca96bcad57b18e9ea3737429ff5754e9a049e6c32cac53accddc4ae7c150a295ffde8fda04036f60d58fb16ad74fcf0d8a16c2c2a9fbd2607325b0af788d1ffd3506ccf1b2a1dab63e41c9c0c46d3a0f04f4fe2804158d7a511f3e77a7333aa3a01269eaa412bbfff692a42f2f104afaa4204923214f0f26a3470e1c378fe99fb109ca8d5519a9677507af6db71265358dc2b05967d213bf82a9ef30b2ab47e5f84a675e0e9d740b24c83159281d029cd9b146dbddfbbcd2db63e68b7378a8fa2ec2b89c5919d169b7849dbca122fc17c635a1cd42479e3416427fcc8822f700587cd5618ea75ab86b7a6ba48fb3069d68db64aa0035f1454a1c83db70602b10cfee403d8a0ea3b916e218bbe312f28fca8aff5fb7b1fa0076fe052ebadb0c5e5f8c1aba030d37ea094784768539c03ee777bd0d02f15514812cc81e9f40e30e66f34ef5d74230e984ff9312fe13096018f175854ab14cd25fc3bc3bf8fb1fb83ab03ede4dfdcb9f5010e0ecc2124d618f90e87843afd25cbd7621d978177b670e051b1ea15b2670fd0aabdc285ead4a11a53887ef3a2a893ff62ed9635c9f98252041db8c42bcb769c3b51dbac9acb8642d683050a902f21d37839c61bea3b1f601fb5b80f700190b34d1e0a8c7967342c9b5c2882cdb259d68a30bd98079e59285e95902bd3310320ae8128ffbe0d05d798418deaa116002adf6f0a5c899e260a2c64822c0f68d59fedddcbce56f6fe11cba39c2e6bc76b6b90e1ad82d679624fdf633b765b786498292c852ef8aa4ed3157dc357acb8d13e437ec7053003a6ab16aa0e4c12d48b0c6d7c9e57d4fb752385de58b594bbc1a3238c03709a6ba82ea7138b54abdcd2259ecf320002c10e4c2cfab337bdef7f3327d7510770da802bdb10dc92dc4da3645911c28353c6c4f34bf097826a7b25a0da6cd969d09ad136dfa3455a4894479d2213f50c3d00eaf7f86da1b8901bee7a5dfa8c253de5770949668c0b79f207a6467aa0625f6565aadd79e0d383b02291ec979aaec4e789cef4e85afd9a2342d3942ef8d7de8066905d099359acee0642e94bb317fd9c61b93ef1ac9755ac89ef6f8e1ee881bafd9cd2f573e491acd6bf5b1203c65f5c0b8863b7af687eeb2541ac3c88c230660f409b792bdd2bd01e7fd1bf6e75cf13bd474a13857c3b5d735dcec34f3c52aba93a852200fe113a2c35648bcc90f88a447e6555e270626745ede4308450a5593b30d02a548190799c01fff46565b4fdc6eeb63d9f3b34e722fc685b4e883f304be82f9b9da0476035580a00fddbb480cee6740dab87e0c3c06fed489da9d9519927344cfd485f4335a9ab5836d2e6c0ef084b70ba19ca56a1fdef469c8f8627b9d8c26f9af238986f1c664be95f56884efe45f7af77845decb99971f737f14d3585407e71213048c28788fbab91146fb3cab29da8f311e7fb0e338897aa0c252f0855961aa863b6ccd2a66e5251b59473796f7f7cc64c20dee0bfd591e7bdd65f60139ea9aabf746d7bb070ccc8b53772b9a87b92923afa8e20f95ceb39e2c3464a3c1addd227788550859912c0bb3781117efce15c3be112d6167e2a93bdeaf8ffde9f4c68b5032b746f2c327e02d58e32edc840deeb4ecb53f9f5a5a7d193240448d5565257e507d44d8d5fe273cb599a304ffafa8fc51809a1563b8f6c9a6cb838f313f7f88885846bb0f0a746ec3801d29bd17437f2b29ab4b6eb14ea828b05d98aae455d198e1d8da90f0fb6cdab8e07e57674c149dc5bbd0397961a5ff9628920f6bc0be284248ffc8310430ff8b7f9d8d1a5255166fa8130a866bde5216d987074e0e3ac911a21bd60be57d8f550ebd566b9aec1c1be7512c0a0238128c79d0ea74bf39a75c9e147db7379f863cbfa0424b38cf491322d2ec4943abaa380cf89e8d1a000371d5181f131f287bc869412885d04f0427b1d9c89d521bfd3f16cda92ee2ed2ea6f49a235d538e5bbf462217d080fd70718a0af7435f95da5815c5f424d08fd02d12f6a168f12bed52a58b5a5b7dde0cae7d4f81e24a5f42867f02d6c534b54548543eb1b92070df21a5b78a324fbd445c0a09f1b3ac4551c1ef4eb82997315f2bc03e21fa52076187879625300f69c84ff0c4f488d0a096392fdaa8802633140f3acbf71d46e3ac2df522d1101e1de718d8cba3e156f872f9d5519fa84b96576db1f282e999ea3b33bc2339065dfb4310c8880bd99f1a7d691db70d062e40259e160638df442fb3673acd4eb9ccb75a6b958bf229060a5059e895ba602513be400c84602442a3d68ae006d0dfdca5e10799339f47499d559ffe953e8c7f485b254ef8cbce9803a1a006d866cbddf68eaa7ed83a02d4f13ec2af3ce03c7a77c60f8d0e19933441f98fc39248d87f36ec7170f7adb82c470012b6a2b8a1029b3c7dfc9847c173dafcf2ea43add30c38e42c053b3813fe39b5f2a24749449397bb4f457a1a8ba16b37b53eeeae24f9b1f3aa3f5d32b01d20b34282508135cf8735df1aa8c78effe8fb7f2fee8a5965405ee171d7f141dadb121d34919c3b3f8cbf180ce8bc0efab6aa281b64a1a83a14ac94cda2d1060569d34c76731eddfa3bca6303a45ea99c0e83d3a92f36d7ddbe8d416cc2265aca8ba60e649c840dfe38a777dd38f0d8da88104777bb3fd466b72c08e0bc66d158e24f76094f0fb6dae0f871a5ff58dfb4841f85da3c0bb07065f549d8eda32e402434ceeac67bde0744a8db823f6350aa18bc204633a51193b704f2df36b3bf964ebd2c27c2dce1cfbddb371d4e9cd8e065fc79591cd44645f4cbc720ced861aff7946fdd8dd915734a07489faf0b86fe9da3d2504ae7b64eb97b722b4ecbd6939fcbfb54c386af8f0247026578b131ab58d3b0d5172b6355daae32cfe6ffff007081a48c82022a31c48d6056d375e7d500019c21b94d9799a59bfcdad40053469a1322fae57b80a72d6e91dcbd7491bbe8b3de819332ece97f5f0b5a0bceef6d3ce122e37e62b00f3bc346efff473228ea7838a0090128418ad1ea706657f14414d799362af2ad438c31ee3d9ad8f79c4a727db23c67b2a83283b6eec5054cb892a28743a7cc466d26a00cb3eed82010c5f08c8fcf83ce25bd3740aa3a690b5be19cf5b0f98a29d8f5fd571a6408649aef9d7f85f33afaded6b7043fd79899e15607215ad7d0502ce67554e0721c9df8ca247e91199795905200ca97e67ab94bbc74b25acd7df30b80661afe4d88eb088e7bbf7bdd690e5594856baaefa83f59c8e022b5f41495ffc42d614f80cca1547264133dfc863470a57642879eee29492fa6794e5c2bbe08e7f80cd4d2cbdb5101a67a01651d5279f850b90d318f916c7ceb26baa68ca0fa3093d7afb46a2055e860e907daad8b0893b6f67d4b0d1e8e77f5c150b50d0924b315423500809158b3fd00aafbdd726ca420aa0aa610ae98cccac2f740aa5d2b2ab06d75e55171d075cf6b6d70624b461f974d45cf77beacf4f47a5e41cda6df9fedd5adc2785eec0872842d53f62911a5b7a8bd6ff9fdb3de6e80894fa87fa685093938b47b446b77eb1e12dec13b254b9e3e14fa2079ec90205adf7ad8675ca3e82ce4e477ea600a9733cf3b546f14ba664ffabd1b4bd0a5ad1b7a29980fe0905171d5be0b47308798ba7dbcb67eab0fb4a18710270d603e12e307fe2e9b3b4e9847e2a3ae164ea7d5730d9e0564f7d16fb7ab095563580793400503a8475012f8e873b7e09f8be7c514824a1ef464f2beff1a65ae9bd02d1bdd79919ab8012f1c149c5ff05664666351cea93ff38c73e366a0a025ccfccca25b7f8031fea08529758b2a7d16eb99881b0de8d29b6b2a867a12ad3748ea1a27e07594166271967b2c83c3b9daf3a11be5d12c94b031ae24fb868c14127b6b927af5e1f9ea6b44e5e2f37f30851900fba2f3863760556c571d46f5ba8e953082e21276d2894f380b87d1dcdd3b02e8f846c7f8d7d674e68be23be8cd0b349d58059fc6fca75493652c88725722c9fe108dd391b6f6b67ef828af0622f3c8348ea313df1fbea8d81decb9d2545fb0bc231b9abc8e942d5fe05f7d7422d164df51769f1efd2f3eca2b021882cbaaa73ed9c29309d7ce3bbfde1b2a5a5337763d785d30b21bdaf7caa55e7c1ae5ed0a96396b20b5d0984bcaf9b0de0420b6bb65075f89e39898b9653164b3e452912cf7ea17c2dcfcaa542287b23ff01a183c6604392c84ffc1181d6307c8a97d2be4bcb968078f159d3b868a867af1536257a6d6b2ca0619e3e3b14f600d34d7670409b6df1b769d9558dfdf34ca5660e0fbc137f8081cad670b79f37d7ee13275c8a1e0680d520349504b4aadec360b451cc2b12f890c37e82090c0306835e225167afd335b5ef5ef79e36c7bffc57174c939d4f2c64541dde8d3c870eaa29f427f034a30535272bb7dc8ae645c3347d4b9b3da1a1b414b8d23dcd0e48a124b7f5838fe46e03f8e224e153bc63327f64823235fc683bff61319aebf3dec65896bf498ce109b2a02509e7551cbdb7154217f3dde915e1857266c0fc23ddd1eba81a16592c6b904d345155a1e879d05de604db320f83eb1aa9e1d38690dff0ea584e9d1954cf8e9e000e777c287eb2439b73cb38c916b8f91efbf06df63521cdd6b6dfafdba2d2f08e61acb301496ce1b690d8453de3750f3a288c15c04cf0366207ac7ac3d8cb7c685d54573211c58317eac2eaff676557643cc4aabf4c3d31663ef7631288c1ff106801dfdb7cfde67b71d2dd19fe246dc43dce96f484b34645a12069dfb19c7d322ce6a391381d01557249c109d2ec6fcd4eb9522d99f473755112ebd2798400733eb91f0ddf881dcf0b0ca6310bee23dec9c8ff54e3fed6fe4a718e00ca649941f703258849f6ecdab29e90fed48737031b4d75ee7c4b791dc886d120fd5575dc927d9857dd2ea7d69e4b1491d0f28b61782530e6ab4a58ca375ca2a0eed38583c40d53ba4ac55ecbc257117e4be51838407e40d2014ebe75e9ddf82f1af42217d5b8bf817198d96d0a4314fc427fe7740422796c568373bc415c842e64fff8f111e7694c2e9b3e792a9427684abdd7d49a2685280c2e6c2e3023b03596036b3238ad349c222bed12f3ce6b8fcb55cb7d57436a65bdb0439ee235c15bb1acfd9341257a01a6f89b43292ee6cafcd6c21e6932fdabfe75b6eb5475d48f9bbdfd8a0f6dd47e1419352290aae7541146c60d73762f8eb978c72df88942741f9b351a2c249a8922b7aee89e4cf7c78fb0cd7e8df9a8d3df9068657e47ff34631ea83f35c964da96f764edafdb3f984359e1bfdb440a41beb6616d487a24cab42e715fd769cfea89e05c73e131dbbe1250dd8e0c705456e6badc3e80eb33696affaa35acc972b388b779eb33235fbce226d1fb882e244b087523353c718dcf665a81b4919c2bf6f3e5067ab6fda614a5878b0d517bbfbbcc9bf901ed0805f8b90dc280b830fe2e5db9e248e8bf29e5f906a727930690e8df55b9b048414d6243031743c1a40d11ef77045c50bd50eaeea858173f1eedc1dbad1dcbffd860e04eb9bf8a4213000687dd770bb0cd63399d8e99c4ac0409cbfc50fc1d156e59f6e859accecd4cdc209a17dcd2e4933e0c85a6a177ce30d4c506cd13e3db8fa8b43aa1bf2b7bcefd5d0117dfcbbdd405d8d760555d77f019f8f3cc71fc364f41812282243009eb0c22a978414771de2484cd12974590a8e1c420cd0d071dfa5b4bf8beea15aa3e3879e7904e1c3dcf3f18fba1ccc79182c6207f6466143b51ae2aa2e526ed9d396e78622dd2eb0a582b52f08bc28cb60a45ec95ecf938737a4017865d131efce4cc5d35d4c956b92f03726eead2b337d780ee93037bf10d3e629d354e589d6b6f35dc21003d50f790bb433435989ef1534dcfb3f36208c6d81d2aeaa7fc5bb67398493ac68c551770ea13f109922e5da4ef167bb2f0736ae4a6b1b1b471db920fb17bc42af109be4978b90e12dfafc16595c2a4b190f9d6e350a3c3ed05ba66c2a749b738165b7e4fc2e683cab9b01632f94c8fefe8dc3438761e46ad86101d40e0c1f5b4907c51517727c44423b7f7c4701c3f8225efa3616b7d035d8f904cf21213acafc2daba62b31f867e55e1f9a874f2340a6da326585db63a4fdda6ed224c8c98f48708272273562ff9607e8383a36f5f2c4578dce0f9b7ebf9be3738e4071f83cf74c1a9139fa3fb3078052d5d92f871d85874b305203413e72196fc87aa9e55cafd7330b5239dc8c1035256a7c7979563af18223ce955857c2fba83eee93a6ec7482b24645c799805f425e2adb05687c539f0320b62730b3afad849a4b6352df8761b44ac171b7e2ecc36403a30f00082a8a66bd8337ce26e96a47c8367f023cf53ba3e7b8057a39997dd239892d1425e2ea26ad188099b8fab69fe0f7db34454c62f578d5e8e09ddfbae10142f43eb3af4fcb9057e9e3bf54725c3c82107862b82fc69eb36790a6372eb9765509de3d4a8a1ed18c8a2bff101bda36ac5f8a66973f17ce932cebe53697ed951007a3ee0cf03551d428bf2644b9b101cb4ed035beda254cadf43e97270a56dffa48b9cb0ec74770880d5d95f844d087ecfba73bf6e357c0ac5202b6a949314c927ad6d33351652e7d86e0b895e54adb0e712411aca3fd44df4a963f384f01a45373110b30924c5c95ddc5bc532a3c63ae68ef4411c7dabea7f6806658b0e41dc2248fbaf2f1268c842f14b9ab24d395be5a21cc6cf486cd89ae5d6929ab41ba8095675c3d287ba9066e3eb308cfc7399f7d3e1c8ae5c16b2b3a8df7d68753bbb22b6a152821a06f19df5da468d29e6aa16ce4284c342c85a913be605e4fabe3eaf6f6001599a658e4504bd5f32cce13e386baaf8491e5220cee2c68913b02f68f19cbc4b3bf3d99410c0fc8458c1b93b273b7086d067ac3c37f8ed0979a063b18f9bb81df7ee98a8d7a2fe1099eaf72af8af60d8393cc4cc31bcad9143ce8c9b06aef0de57174c27c8f9e21b5ed39df2b713640ac539e06b54864587cf0e8a0a3fe1dd9bd5554016147358594fe44ca0833d461eb752801488b15ca00b0ebfb7bf0d7aacea2f9dd291321f137da71859e28d4641ff5e3093e8f31dfec00098be98a225067406e280a6dbd4bb601811a3f1e5b5c47e10108b890471ce5c4123f22cde54a612a230fe6bab049224f165ddf04483c2acc0786b0fbb045ecde80b093edf9f25be25f8b43907e02d9d86b82cc352398cbef316f2c3bb26bf003089014bddd35fee76c17101398c50a57ec0f22ea2c87324e13a45aa71dc21dfea8ed3246d6dcc594a588f9a1eba2750c2b01e18e7497d2673f8674b8f51e30d3d64af3eaba1ba5fc5ade1103a57d66623e44c35aa4ca219ce95a651463017040256c8675610731f325a23ec7f4c64f0e02e73cf8626b6d85a0f1454217901f31dedf4a9be145acc5ba21c100bad3d2a72f498d99d9183054c672c268c945ff658fe51dcb2f4fc58f95870482ab8f522b5e8b8bc04f84496fa9e26c185e7f759778caf819aabfb115ae743a0e17cd4a8d12ade8a88022c4320a998d136e350b2599d9a0498bad9d3c0f1d09ef73a47f95dc7a3b8605724a04d3e7f48d31ec6a4467a577bf20f8c2b088267d919ba136a955ab1ae9f35743303ec132c16b4f10f59ed8fa638f59e8c62997428d04f5b2130ce1e60d4c633949319aae7499ab4939596b9bcc84d95b7a8efefcaebecf1b45de2c760c24091e20f348b097c286072325342ad8218d021f5e256b874b0a8d5d70d512719c87161c6cd3d34821d23d1b4770b517d59ba19b28db34bb3fde49986bfd7d05086d6a01b9faa71ed2f8dbb4c9a043cf539d96940505ff7700f11db7d3cf6f71367413cf63d31c31ae70580efc75b15d9a0d3da8fb65209136321e0a9c5f5f6a3dc95d9241214900926b929f9f7c32211916d8e638ec9402281bcfc20e780c46441a28b7b4b262e6a031bc24cb1080eb9da6ea30867bed367f280d726a811c6e05c8b03831ef6db05701a75502d481fbd640761308f08ab7e070470db8f791ee57093dc2130a6a9e22b494a66768880521073ed340bfeabfb6bcc21159d2d3efcfd9f78ecf188bb43489be97f378ef3fcdfb9226f25d29dd86d28b4ae0675bdd2bfce1d0482a310f5fc064e71187dff45c99a157149560ffd6d42dc1c5619218d69b68348c04de537325d405ae3eb44d149fd0d34867e8ec3673a6a337f806e3eaa076887721b4799cec5fd59fc62b96218a10c2d44165e53671a4f9518e8980c582372d86cd27a20737af025dd3dbb00cb87fc99e5c5eec355429ccc5f7c25bb60c89f18d52d937b15a52030726f98f6fed3ec18ed27aec834e852d85b6916a010cf36ed147f535fee87d7b28895caaa5f26eca30724b042686096c55b50f37357ec00ad89e28454b45b9c939ca975f45d2bbd1862c5014be88ac0dd7bdcc20e7540e90b1ee75361b1c7182c856dbde653e8bb3c17bb999de2eeeb7edba4c9cf3f30952309b8609c4976a99a68efc105a08bdc3ce1e4dbef7534b2318d4b8fa6cf86fe58bd026f2e960b99335695885579d516359fac690a0685e365c85c03e37656d0d80de2be5ddff8a0d7db75f753df209676e560f6a1ee955fe86072eee6a95869f61c078c5f032546ff6ef3c65f889ae8c15ec476f4287c6b6f49ef9d5bfc95ab09e5c9680ab9773edb3eab69a4e5f7b7fcc8473bc0cb745fee6b25e29cd7ec5a9e3cfde87fbbdaa40c4866ba4d41161d0ae2af6c1f02af8d2a9fff595b37c36be6cc14cc5c414441736b164737391f56daddef6107a042c6f2533c2f23635969618bf148518eb8510c022bda94cb6888416851ed9927a49178e564a874d339d9466fec3cab18d0b49751f7157b9dbf3952870864cc8d69e121409a5ab0b317640715419f6bb7509d18f26e36394cbc815ad8680255ba9ccb575c5a5dd6d92d6f79fb4866473a05bb93094f85304c3fe14a4099cab76c7580d18e6a3550b3cd1aa2d5a458aa2e844261894cc0aa2b32afe6fb5208ddd500133beca53ebb0f6de8837e49c4f52d9d30803627368d4536aa45b90b928f90b9621d323d671f6d409cee7c578abc9fd6466f919432fd1a2fa92edf342120ed1a84c73ac62c0a6a87c2c94711957025f57c20855a4b14665de9af07c6cafb5acf2461177b1e744d8770903f02ef603e63b14d8fc68fdf5d77f923b01fca4e6d21ce37c2bfa9379af063b55950ac2f7debaeebc40d23ff9c880ec0834113f3a18022237c684cb32a70986fa1a45a4ae468ad197c2f5d53f98072c32fa5e87207969b3a1856e509f18b80d625cf0af8b7b866d2ace6e7ca1896830cf7da6837c034e11138beb9e1a665d19f70baf62fbb13b511c3931b32d6e32664f3b127ea3f3b4809323103b2e2f7e52aba3ed7f1e874195804631e4320458cb0e1b31561827f96afc975d73b0864109133190ce6f77f2c0b324c345454c29b4c57c48416fddc0a132c8da44c8f4a954efdbe4236c1032cc7a8d88c3663a8feb21db53d0f74b378efd04196ada87d6f4c4632f08d4e8cd74b1daa4563059f7bc865e55f9d7e93bcbbf79ca62748cda33f82a5633931a05ad743dc7e83d02ea669e45bd8f434cbb69e9829b28821ec4ddc552d983b557aa329ef347379742d49d58f5109969283e4eaa1aeeea429b58cff717a0a5c7de9c8611674032c39614371838f4b185474103bedc8044aa29ed60ab75359f8c23ce6e7c9af7982b7fb88670c6931b124794f7183d78d78b08735f019a12f56c08797d7e02817016185973cf604d460f779276f1a08780823ecd86b35ed8e55ffcdc793eb50339bccc62796ca2f60df4aaa545cddcff011bf675439fecb33c218c0b896e6e59ea6534320d862c6308af3d13149af7e249cb7af6692503d221bdec8bf7d8b0486011bd4a275b093fb4bb062951dd5b4e7576107ff41adc56a33a1765ab6ec76edcef0362f7714d2643a4b38a08ea1f3bfbeecc3708c3af9f4da8c0b65d0f57e361e34c7f1d71ec54a93a5a9e0105b7099a76f58defa325e6ee80e72e3f24b36ab5193930f38d20397eb45987cef886d29b74b34abe2756a53a6e0e79ee693cd32d3a70a0510eb4599ce2c300fb9b4c06e22d1e3a00db3168b62ebf0139a8ad082b90ce148490fe9f8ef502e6490d6454232028da8ee5596f4e7e30f7eac16c7ca85106af705046ba4af339f59fbde980952418b492a99aa4c39900513e14d24444b0be56b7045786064585b39191b24621afbcfacf4acddc13a1082f300e909858c4d2e24a45257db57d629ad028e0fba4d82695796b8f4c634bf5cc3f22b210a53965d37757415fdf2ad8151c5e51003f84b0604b3a539667aa03820d925645c753ccf1f4832283cbf767a05f63a013f524d44f324f9c4d631843452d9db3f6e14284aa3b2c35a08d24fd548ecb50bd6a38ee6fb96ae038da4b7174b2580fdebf2f62c714faf7d9cf447d5555a998275d32d1caccd7b2435b8c18c99bd44d9c115daad04223ce1d2471030d79d36e0ed0f1a5ab225f7a2b979ce9d57dd6f251d0b599fee11613061cb850b138ad37193cc61b9ea4f071e75f276ab6838ea4e72a73787cd5578ed7ff44aefc683b91a1a31039e12bbb451ac3e24330956189a2508ae9b2c7ccf816205aef836924e9401410111a8f22b5ac31ced53d07be6435e5c0b42fd5311e7830a27511152d3626cada59c4a12909205f1620b6ae346d84b20f09232725117400a53bdb6443dffefc5eef05268a865854f29f443942744a71671d6f26a5ff395bdacee634a4f25e0ae8bc9bb25956731b46b6adefe5e8accb0d22e77c4b6235bd0fd6c8fbc52b7bacd5848c1d8f44a40130988454a545cac66563f282117d5aaf091a624fc20582baf151d1fd3e925dfa64a09bfd37244dcf124bcd900f4516c0568aed3c031b8b6ea7ad97858568200ed5d2173a1871928238f5aa6ed0c5f746ef08e29ab63778688826d1fcb5b54f62129e41632729cd6c137fd0027494c6e1198d305ae71971284be007687692adff82a0652d22d77a3825bdc0f00f3468bf27d286eb27658300b2283a47be3de1ab7b25f5de5421ca6866ffe5377faafa092791b038a594fc718beb69462e06c52c17a91d7701679e5e130294474b621c2a20204dcdc8d04bb2eec148f9d5bb2e25c36538d9d04ea92c9ffd849c92713e978ef059dd3d95a400b63cac6c66cd4b796ebb6b26daa3582e52ebb40df50736480ebc9bba353aa63b95dcdbace018dd7dd37bebc4b224bdb36d17d522f4e0d29e121f48131353f4273dc14e70b096bd2e5f7701beba79922d2fb8af0b58c349a55075d6e63933b297f038a7600e34d2d83a05175c7da7cb41ebf8acf8a82e9b14d6f5f74539fdec754c1a4216faeefe2777cf828febb63ac9d931742ff179588516fb64aaeea6710030f1166b1c81454f99d89f762fcf2574ed782e568b3446bdcf531fabe5a4a88cae8514940edd71f350bdc58487cf2a8b0ec6a8429c207bfdff85088094c4e64672ff4f04cbd1515ceb113784a57118c12864e0e1dab747b38a864c0eca741fe0dad8ab3b5dbe2fc6dbd205b841f4aea09323a7866d14d03aaebf9ab5d50995a184e029e166eec8d274c23a130ba02310e785c5f8a55d545e1d60f846ed75e2d25130bff0666a5b87dc76dc996f1ca258b0e719fcf736f17bbb63ba3cbceec2d08f19db4a38ed9ec7303a087b1b4c590105ce1cd3cc37824487e14184115f63337a7561bbecdaf53e1d1a77a3b99b4ad05166d2f29dcae6bdcf22ce1e2cf563e8d20c7fc86bd43256633c6026ad01d6694ebc8542bdfd3faf47181a0af47a6b4682b927037676520c2fc7f5a90db7856acd8f072406215383a12d24908c8d6baa3fdb5cbd22819e4c1985fe7f2933539b9eaadc8e4fdfff2134f62713fc3f12c3192456fa85973d713b3ccba6ba5b8bbd9a95c679eca025fc97b4c89c803affe6ec2110df7bf7bf453ee6690cc523327c320abbc0fc7fe1de80946d1b9a84cde7ca056f1da39f1f8031e4bc191c4875a9cb089ffeb438ef742f41d7ecc9cb248a78dbfc1801248eeb94ef768582e89ba7a4f4d5b2a1392cd7520943abfe9476b2e58fb3fbb523e7d9f5ef0d42752e7e72a631b3a62c0fcd714cc577a573e0d9e0baea518eac77612763f940381c18777ec01ab26d103988927246063bafd0a8e1257a263308496a5be44fefa671c554919c0d45cc28c56011ae1d628f14327ca575d790c3809d304d48c2414403d694b350570410d1524abfe75a25c2ecd923b2c645f922d684e4728388015f40315feebe4ea6d62b8839c227c70b78ac88184701877feaec52177c24f9f33d6f3955ece2e42456c499fce5d9f934bab56b95361709a32b03011e826d1a578d0380b64cd915fa8dc3bc69ac47747395c71175ae72f0b41733d30ed7114033fda1cdb0e2a53a211f9e27b76473da12df3eae11b45ff9f0363c103ead2d4f9c1d6690c212171f945d83e1824e4ad673914e6f79f480c2653d52a936514f812273350e4608adc7fa8ff2620e9b5201a9fd630df41943b51c91c7ea888cd49e7b2d1a999107b3bb719a8e30a2f50e7f294ec38939e266cc6aef6ada74e561632d0b2e945849b5b6984f53f9ef0180324eaf246db307b926ec2612cb540feb4295235ecc85ca6260d9891d51240e696e0d6fcd7e085a07c18a50e3dcc07662b36fbb729323c02172a5bbeddddb40cf2c7c2dfabcb7fc56aef26b14731e3760b8666be89f92506a8effdfdfb89dd69f9ba65b97e109fe2af503bf4963bc7986055ecb6c83649b3d71ce6ee6a1d9560c75c3212d9d835f968a86dcc09e65f2bad6fa7149491a08137c00edc175b2ed46034fa0151017cfcd902f8af4651e8a90a6812c24a899197c41ff229c59375e4cb046da34944c08e6423c5f18690aeff366482abe783675f96ae952b45f29911912299292b89d543b82dbb42b4f2955b446ade148a60b4819fa98c64489e988da9bdd4e649f73fabfaa962a27f1f1b25b3437d5949309f8bb5dc8aa41e438d5fd2a920d05a6bb8a24cd68c8198734db0a3d6ba119a78c0911433185c93e1c1da3b0c164404dce6a592e392ca2fc7328850a9cfd72600f8e61644b5b87f7918bd2a4b0b8383f8d7d58bba61073b7c86a075ca50e241b6f2fa0f461512d664c2e17cca56611689884be10257da256a0223d6443f2ae582b81810822d1e3d8550ce5e44423048f45e944998e2da65897f16a60b80c3e7220c58b99b6908d8bfdaa3672c08d93594e5ceeef6f430af92b36aa0d682fbd54ae6727e50aa77fbfbe6859ccc186a71b0b57dc68fec8d1fb9bd231345e9451c26306769f88c9488d6059170d8007891f275eb118d6cebd1ea16ca710878dbb609a4edb1fd811837acbd083d57ce204dbf402ccac3ee0e7ed3c3886036b277573407d0cf1cb25ba750e4f034738d73ddf40e0212ec00ede12711bbaeeb0fc9b4c134b974ac62e339b2f86cc36aa00b59540c953d0a5fa344dfb9195791986e1942f0d04f4ed44765efbbf2dd1b1ca31d0976a76149fa9a59e1bd825672e2a72ea2c4861885f73db480dcbc7d09cb041024bc0836c56c6216845cd3c2c25e144a1c2ca7fd26d5cf0711c91449f12aaaeda26a99e8eac2815f99233b9746e4183bbb1828888ada3b9785f1d05adb290efd62427c8a911fe1094003ccd073a792ca4ae95a2bfd3ce4e4a25070a19a1841822ff07c565a46d2853cee0380691ef4fcbe1efe872b1901a8dfc40a43d8134000857a33c09e661b07f918d27053c84b546af9d1f9434d8c415d0a1367dd7b602e3c3e67288ef0278e948a7736b6dd70462d5d236c895e6f5b14ee99732694a09617724d0b8635e87b756917e91278ae4a3d69ad80adfd6501020ba109a731c1ae25893d00fd1c8d291a7971df19e7bda1f8444120a2d4b3eef9e6c7fcfa465dbf3338643fca1223a09a87cdf39f9452a259859646f5be2ae0e4d2f5261ddb62dc1b9887d79271db30b248ca1b1441f0f16e178d2dede47a9303850c412b43c3026d8bb3bfb84a51ea4ffdd29e0087acd1b032617637f3440fe4d59d33c1bc920ceec1f1580c87591be760f9ceb6d34aa3ed32d0bd9e8d979015e09b8b770fa53cf50378e59eac984ac02dfb104cec66407371ed3f36df10347682703e08946c5cbf27d9e594f89763e1b56692ff422f07a06fe0f4cc57cfbc0bf36d7f81e343cee5a066d0ae744c744674f5d43c70006112a685ec0a05779fe722367f707ab44ddd6a8003dc0d22d09c6b7e90c852b153fcfe1cf29df8e88442ec1c29b9b8eba09fb93f1b857f048fcd15e050a220e6123e2ef233deb4a84abee1284901a5aaa83fe281f0e0987aaac2244ea9f352039f362c4f240d8aef19f15fa18547e098810becdc6b969b29e722d5cdfebe323f410070e6c79387c3fe79f78a1e03165ec68a2d7e22fd7ef7d315fbaacdd21b7041fa7888dc9da173a09f2d5ffa98a768cc655cc40d594849efd3cfe6df3eba135d5d9e01ff8befdf0e930f3b2f101cc595274c92cd99e4e317ba49f63ac8c029fad9e17426bac12bd8878506fc9bdacd5a6d41de604732832396dcdbe37e282f4cf4727202d7a20708b25ff1dce1c51924806ba415492ff979845e8917fd985e073c954d31d45b6a5e041dc134b6cdc4c041902ac17cccf20ab66feb268221fe8117572962043031f7258b8992191b66222ef2299c7c3be0545a11ab98e4225b877a5050ad528696c99177f0e6a2ae4fa92e3719748bf130f6bb9c0ac1880615fd6beaa1893b1c3f44df9d5ac585357e79e7c9f45a97a8f7faf8860c62d077f5756b860f9abe0c225ada486b512eab5de9e10b28e958736cdd3850d1dce4e432df3ab5e43b3e982cd64ffeaf41258c3547dd07c6e3aa9719ce8a3ce7e3593e8aa5142aaf98d48ff8eb76037842f1c7317e635e978d8dfa68da76a6eae2c839ba9f3895be7d2e4991c29c908c5fc060bc3040a8b6a65c49900eb5a018d27e8dfb7d771aab4226a525365ba8b45163121384550e3fcc8187fcff426ee21f50a2fae7c84ddba3697eff323cf73ff986e7f478b022a565c120d7d23d484814b73eb9e27508c5e405b34f4f0a0eb5c6d0b1b4fb98f57245bdd65a15221537481d313191ea62f87df4f32d393d5d9b695952efdbfb56c026463e703f03325e65b62245a907e8404100daae6fc91b3a3cafa95189e1d611fea134a5fe59dbf0bf776d94ed263369449fff66bcac6ae0fafe8d92726d134e8acc34399eb500e97c29238d5519ed41691094c2979f49c8723e03e1b5a757b61ba1204d692b0b0490e4a530d7cbef9fb39803b04fc89834a568af6565db06730e692a60827cc4162a2a5f043e2b6580536f3b6cb332326ff2f4efd2ddf4a2e09b630edf06057d7eff424de0b3d54f691998bc6735f3a2567fbe2733422fd41f63ee4ebb7782c74c772b8ceddf5657740b96b0e6d6581ef0025337c5638623389cc5c68c5c520c767ad6624998b591a9bff15b5e15314bd2f2a20885ac3a3083fc4501f1e8c450f9a06dde1861e9522c11f8dfa353499b2938c83e8af41b6a4343e306ce705587f5264e2d774b9c78e2390f060feefdd3e609d07e06c5ec629a85b3e87eb361567ca04bba76f8e7f94d4241f4a97c790d7dd80e1d902c9ee8a3022da87d193b72e4af15e26455cc865860e392ab1061e507bdb912ca6fe68914c83619f6160a95ca5782cc537bcf0a7b705ae205bf46bf060bfddc3da65eaca778c7356959f2bbf92be5907d5a806f4f2ce7a3866cccdd766d674f1e859023b09c8e1e3d4942051661e3d32f68cbe29e891937a0a81ea106aaf1ceaf0e5166c03a16b973e17a415388c27547b3f065b04c52b2f93745861c83ee7c05caf7d47a3565891f5084f2607be74aa0816f7706e37a0d024e0480be84304363aa0d1ddecda9ae8b970e94a53a9137671107546fa92713b4e369995bfa92d21c21a68a7fad6d6c520961dddba58a2d1063bdee373e9bb319c61ed4e0cd01ee265f3eef27c812b29fb5864a40b9aa991b9b3a11f5c96b74102a02e8ccf194499840daf5329dbd575a8b8de8d9e89311666e4ad98fd0e3e06041eb0d16a4c681edd991ce408cbcdc5f07acce2fbd760f1ca69285fc2fa674a64e665518a00dbf0a5ec3e3c5972131f03ffc3e32f3c42c0ff7d0f5290c667efb01f2605292ac45c21f1204d2f7174a87f30efc19d3421b6dc86206c34c607dfaf86e0c4abe0d40b80822bf5ded19478ee6e10bdb195eee7efdad13b326c946656fac17046b2013f3ee16b8a52ccc35668c73dae0a7d11fccb565e356995a29a0b697ca991fc4916b773fd361999efccdbff0e95e982fcb0c418cd1343e03c79cc02e007e490289b843199d3ec4078ee8736c352b61d794352bc181226f9ba1c22fe3ba1f51cc690d2b2adc03882224f137421c51109d812f5d5486e7638b947d2637cae4bcfafc85e5ae396528cb25b8e1d0bd675afc2545fefe25fdb968561f7723f9a0704870de315156c711066f4e8ae780ffc4ddf1df99102dfe88ff0c8258db137288d0bf8835590951273c2421ced4814d0a2de8710871a61ddf3618dd39eea744d745bafc11ce1b9eff58c614e048bd84a1243bd7890e49c5872d17bc6ae1dfc79a7c2f2499f7af768b9ded367e0198753150f9d48a2a1c6a81582bb0af95c1f059ad5ba3be45fe50248403eff8cb3f0fa4c153f758ea7f83ebe4b4b6bef35acfc664b1b2c929508ca300578bb42850c8f3452914fce259185afc3e3d73ba8204e9cc0bd7d3efd32fad82b86ac3746f4bb29bb9f3cdc821c1416ace9d0ec488d784b727e2ca5beeb9fbf38fc83394d8a041efdbdd79f7ca2f230302d46fd2614e274d8edc2dec180242ce9f9573eaa5ca3a2b2c44ac95e23b7e39652911ad87ccb545fdcd96f9f1a82bde40faa3790201a1768e0004edbb6f59df4a071f372527cd6fc0ec0d65c34b74583a0a8ed2d7ff319cef6c38ae41f514681d292fe8d862e46fec2542fff63799e63a1b7aa68f858f8544e42e4e4d149350cbebac837db3a778ac6340ae65f203ae9323b3305e5a4aefde3c0ca7ce00e4828ebd5a125e2700837803807ca96897a561675d15a36d6e12715455a2da1e7c76933b81c34d46a3d1027d60e941c36c0ccdb14b391a60328bf5dbd67f1cfdd2451b83565d885426e7e760898346b0a051f783e206f0f0aa608408d3a745c16bdc0dbd68df5da3ba48e71215603824cd1055c6057727bac6af38b30f01c32f8f12f3f6f2571f3dcb2375e6942efe35e16ad2422fbf9a07de1750d8f28f564aa98da23aec36d877a9dadd370ae6cd60f6463199d0cd53e97510aed8eae47112425ea0376920e03c88aaae29522ac3d0a77da44f6299707b2c67af730f5748bd348ff33a3f4ae070f08f4d48e9f6723fbf37d7c207e0edd4ed40553a69f084261e11ca97c65f04eb3c1634041e86539919b2aa04864a61102f9166ce92701ff8266500eae080248c350c87bbf7bc462ea8e17c574137cc4a62f146f7c6bf4aa25563df001feca5d8e235c6af6caa2346503ed84d8559fe76ea445799b12f684681dd1fb1b5d437a8d1321fd248a9f17af2a6fdf3e7677f07dd2e1679f0553c27babc9554d4c27efc1b16feee27b566ab0da3d5d404a3ef98636c331db333ec57d4322effb6404a2bb0627d1fdf97108289b21409cff09e3f5ddc840a8d2179530af1c282da199f9f08ebf30219846032a138953e46f780ae6df339211a7d60806861eb63b3f0cf096ff3a78da7e10fd37449e49cf61373541918c06dcad35a72ec57c901e517044587858e7099b7a372313171a96a3eb84f6920b580c313c55c44a305f99fab5071c7c1a02ddcacd6ffee5a904b71702efe34975d98f868945298663be0ab8ad8e62270c614a6bb92af0aa5f5825f3c20b0d30d75161bc504519eaca4d2bbba96c54a33f685eafa21a73c7a527bb2e09d085186f0dd78271fe494e4c1bd7dbfcc7fc50d392261c88ebf5d285261fe8c3986c82a23fd6d8f18b07478c212a2d98ff4a1eb959ffa6f44156b368da00454424abdc01276c949e912145bd121da46aa970237ae3b4ce51b5d601cec33df42e794e44e2db3bed470b299d2c3681249124505ea4f5b23fa5b170a9e2c4e3639a83572934df95aea302799a65500cd3de96b24431e417ac81e6198455e0f9e11ec1c602d42cacfcb9eccb41c33eb34207532beb52f3dba829a3cb374a9d4df710a39459c3d3efc571fe7e743ef3053f815b49af42e838b1ec164af1b1b270ff008ade0de13ac5374526a4044aa314097c7e740e7c073a0589e8db6034c6d42e8fa2ad945978803e1e6a2bd6368d698194f415a052d90bbb5e83ba5f513944d2930a6d4f85a6a4d4f5c93423a4ecbb9f1affa35645aedb4480e8c7c84330e1787e6036e7883cd7fd1fdecfee4369a400b2ea176e8c372876d9897682dac360ca44e338a1449b7a50a2fd2d5149521518f3f4bdd1707a3a50b3b99a84c16dd9d2283b8e926c256d41caeb420a5651bed40c703022af934dd3748c58b178461a52a20c9a0fe44e97e4fd1bc5ab92baf76dbbcbca8dc505c534770f3aca15ab15a66571de0ee39e254c0cb2ac3a57b9db5ad69be06b02dea69c69d79f916b9281c3b364bba4a41135753f66c6afccffdaf1527d4ab9ed5ca553040a7315239866d3dbf4fbd0fd36e3e8d6a55518184136bc21c88fe8206506f6274808dae0dbb129379894cf7ad3ecf74c47a0776a80bde83da5ca79fca521387bba43ada662a54e508b0da0e62a290e202c87f9ce32235913764603b0e874db79c65c57f99fb07e2244a5210e10b2d759f1b1befca9477ddb12776f4aa58e1ede6b6a8bf6352dca4fddcf13fcd478e7b2056145bb9f189dfafcb65e81b73f682364abb981e51cb4cef7b6d6bf4c821dd22a7d883d7fa935dcab40315693f570c32b9334adaff3b5d1bd0d4f1b1552c16ec3a7ac243102488854363115014366b6593d28cf13d9e7d0d7da65c8a39fd814e01a3c4fd0980ceeabdf3bdee18076fcfb5285185e3e1e14584d76969be1faa3ac0aeb9d6fb59db488751e6c37630a3b2a365575e69f260d4b8946c0d8e817e737c215420bd7f1d2aa0277fbd3652f340f2f0660eacf31bfb080b613c88485cae6b4e9d48c00eafc9d90fad270aac69e356743bf40ced118747eb1b905e91929cd6ce8e2948502e36f0175081d33683a1ce5732ab290e6f169da94818bcec372391e503fdd4870655e52461a40a738e5a0553b2af42c14e06978544622795ac2048c761ddcd74d8c837379379668604f05105e52095fe14b6321f4d51181cc5bf375cd85246e2f37d74fe0318db884c44522088505123cdccfcd024f0b6fee56d0b7cf5912b5d6a1296a5ed13c86482d54363c17b5e49ebd0f04b7613a32ab8bd6cc3e99bf17043bc376696e26c793b676f1e596512ff2a3e5bea3904a7f74261911b3ae9ab20fde8524105a48d54f8f9adee82ee22177097a4fa25f3220d4741a1aa4f04d1e618d8ea1889da9707b0efe670a2ddcdea0f35acda5d247ba87c074eeed5c8b44caa5225c9a20d0fa36fdb7616cb10c6c293263c819c1ed6feafb092d0d67c31b85d1324963c82f681821ae37cf9b69f202e298dd66d58ab050af339b15631fb2fbebea1c3477aaac27563cfda811a36f1effa361a2a61898f630d0efc3ca4c87802808fd7a23b0b372cb438ee6cef394774ca490f22dc396a9cdc6b4ffb8f77ad93830801d66765f14f0b296f26bb0253b17abbf0209d0cede39169ade4fe3d75f408d6552d5a9e4d16d39becf693299ecfc3aefea78631fdcf70056d2fea12da91aa7911351a6bac0c843da7a1786dc340cab60e103818abae9138980cb3a3b1a50e16435fdf08c356a08f2969126c04e14974ca1a5c1366de4461b09e8a9ef3bd096679a07ebf971ee3095b3133d4da1de1934fe35d596470044340067816faf245f093f0872eb339b0c77d00a79b263c993a6d67a0fac80a4a5b63d9566f4a35cc0871e52102d93320857e919f40686a7114c4e10c4b933893510c40f0988b58a4925318568886e8e0536d62a2f514ac69f63663a28483508c31570694e69bf20d8f3d8e99033da1ea80b5b42c1a904b2b3be6383348bc5628fb1d890a09eb58ab5da5d168a3a464ec67ddbd8d886ff93851a0b85b626c5a936fca77a286042e7d3c1098d68503d06f691b9650e4aacf91d940efa19e16c09f38b15e6ca99efe86ad342c3603bb69797f917933694c70997f89e78d4b491d4fc56e9f6926aa277da1a42bc8b2880da23ab230c5e653fc95030d9248e1dac4b143ac41cf436495193e29a60137e8e5629d03e3ed48ad8ab36183fdb90489c3a8be8e3d03b06e949e19ba36d01bd0263c0c453cf6f495746466caf66dc2b93b60fd6ddfbdc6dc53a1b7cb7c1db678316b6bdf7097e9e6ad7ae667292474febe8a10fed6457ad931c260551ac79457820fdf125a91f77ed0af90d802f810a467945c7d723e97988c5e37c199d504d36c81acc90ef2ac7b388836a14aa8f169ec7a1f0100e6f660c01f9823117790dafe023f6a9eaa0ad5842cc50f3202d681bf63b7997379b6c53ac804065bc1f09ab2baa189fd59610c545f216b8b73faf0c9775fd0e59b70e7cf36f7665d3f1094f882548f42fc90a19c0e39e6f8406b57aabb681f5ff760c5e197a0738d51e2a0bc54ecdfa8c2cd4c7248f71dbf2a4ac9a38a4ed0fbce4bd2f926b977e8bf2c5ad25aff92b9ebefbb22a42049946c263f75c712dd4bde2fbe0cc6b793ca7613c65ffbcacc9617eb1c743fc19a9a7370dc48d5ae8cdc635746ffff4cbbc237e6ebb53728f013618f2363b18d35d52f2832499df3d76d8df1516e1debc0972429cea1b2562dcaa3386e2d98c33c54fec95d0208b1426459d7ba53607a32221988a608c6fb14d0f73f38d2bf9c99959c3e335e0f1802c94d6f2141099736e6296095a270383e49b69c82387bed37518f978cdfbb02f47801dd31776725e90bc047881d99f911a90a897da51cbb620b1d1f4dc396828f31fbb9748c7c8aef6f36c9d4fbde77e60288fae8469c392943d00b5eee599855997ba40bdc44fcfc5bba02996ee6b3741ed65c1a28ee4796acdb2c2a0cf29b03370e164a1898459a075a53c6f8a761b16e5c5ded38479d0b567364e363241627473a81c73f689c80846d1ae957b77057164357e0d5ac48814d8da5332684e0197112137a39f8797feaab9e21cb7324ce5423353c38654cd65743e8d3cda236cf54df1645cd31be31989998875b85378c2df1e26ec771c067b6afc36e14ee3522c21e883192a4f52c28fb0add3ba10bf831b690500417cf1c4446060ee46eb17df3552c574020f18b18fa8f06b5d6bcd1cfa0b5931960fee16cc9897d17ff8b16be876eba1396047c158236a660f67e6e43ca373ffc45f29c585c494df441a4be8e7d62a870c0d15c6ef8ed0ab7b2fa23bb90990470fb487f7f4536746cc974bc012f1aca2ae8c9e7319ed39bbe751c43d5ffd13b8a23728e2277b0a037832f2664317e56be517ab5c946582f907541b8db4f716c9f15c3b151324527b5abbbd66ee1493220324631e239b7a27f40541936da7a9d1fe065106716fc0fe3a334118a975d57001211a33f7ab6039352c7b22ad1b26744883e53e34aae60aa2c8136b655db0099bbdb157e3a4e5246e21f4396f5093a96ed3f6b4216bc73029ae3f042a8d7df493a166937c15fb60656cf8c07c0c8f12e2271296be79d7b941067793b65f1b8834e27480649fbdab2f23c61cddb78506a2d0fa31e4cb51c32ea16b47503a065b39818098a06233c4d610baedebe7c4b0879db1ab8e6e520482286044c639263df57833e9f87a9db524a031e2334adbecc8de6ac77663d0a21cf2ddf572039634890504e77d3f216c609e2783e6f08102b633e44613bc6ec3e662ca348677cce1cb719fc68b6b5d6a0adabb259f2f615625a919dd218d86fc52b12a57f050f2681a0bd3a63c4c8c9b63f214b93bee92f5424409c9c63708049cd3e476f4f4589aae0611f74332be93edbc294997c99578578bfd68c44aaae60f88f5829170e3106c06441fc020e0bb0688112cd64db597274721830a063fd9cb0f8cc8562b00f5c36f9c58b8453151ba75b5dec2894a7cad91a1b0340a02525ae76cbab1814902eb57da56652a726158368f475e3d1aab3518f610257cb83d81eccee9a9a5b359fecbf351e58cbcf18a534d969089f493943a25ba5c8542afa2364979bb6f416d693f1cbda078ab63e87f735f92474f38633cd586fca80698ced49edf2d13ca435b51130bda435a5cb57c98663225b01c3e4e32534b3fe952249a0f4a4ade43261b8ee2f2fa7f72bf6cd90eb81f1373823d6cdc1e45ef951b116611fb8951746a7f2ff7d901db94f302a4c7362b8836f2bc11b251bc31e4f8e03a881cb954dfa1ccaec69fba7524b943b2c89f98bf7ec73f183582421477ac68f9e6a1e1a1c1657a887de69995c22f1c55ef640e7bcf05b096e3c1d4d0c6a35045b8106544d03642237523ed2a8a611e27d094d84cab3eeaae10e8f18891757634367cad2a44677e34bb4a790eb30fda0cfd7e7ff9dfcf73ff05ee9a9d45e8919f0d673ec8d0fe561ea0fda68c65d8fa6c01b72a3d2d5244bee75651191a3a05441dab95f58528c19a302f3d762ef22d851a87ddd165b98391e713e2c27a9762ebc13fd5f9fd88798aec92cfb6cb3db3ab2e899b3c353a20e176e8419c132b184508fc865f5bde8524e315c3ff4457747ecae1bca208eba98b8f14c7b39aa829b770e0688b1b872e2d84d04f77cc1b5b4abc3565020bdc34b6a905e6ddfcaf63ba7b2d7f8035679e0d75d062665c09a3d493bc3a66bfcc331bb1ad2666d72dd83af3d30ba9c5ca6ccd42f051c6c6daead66a1499ba02632dc48f48e384857cc1e96d3c11e43da9a85cc7d70d05b9544f871dc214ffb1e6d67e0022adb32d1e43f70c8e89bcaf7706f365cdde83c15472f66a6259f4ecc88a98d06f14ebac904a29cdb2a49ed1e2917d35c84940d888e639fe20c0ec734bd517d53ef077971bb90b241fa50205fbf18d0da46e861fbf0497bd0199035489592210f3e8fc571ec740071b93fa9d536d1da4aa835d18b79ad53d5072e32ca7b28b43c18b6b5bc50fd99263c4543839252d51f87ef6ecbb10c02e6fe8f4577d753a796e3bf038ce5b6043725835a2fa3853e18fb1c8974039626ea1737b9c65b5dc7aaa470d886f23fe745ea26155a287208d069252a8dca2a4500e03b202525268a20eaeb39bab5519056e7ec922292d215c6932b3efcab4683f3b161130834336ca0c6e1a370bd18a9ffabf21a463e8317d017c46cad629ff83f921ecaaaa546ca71ace107150de3818d39647da5df3e1aaa7195d8a732dfe8075de53ab8ef4f1109b6c92e6e7bc5c6aa87ee6aa2c5be6036622eebab9769010fdf54fc4f9c9363c6164c75f9c03450d82d9c53548231c15a91b4c7f7cb7285be30b61fa2e28b5f2b9747daafad3ac0b31f99602e33abf7de6173724b805ad643ee7638fc098013a5d1efc7f25e118fe4ddfd4790f49a42a0aa4d23999a8c2b037c0662c6e1526f30c55e61e1b8e8488a77e8e93b7501698320c2d4eda9c4f7cb01a8d607896f8d0f460b68ef8ae57c86eb2b3de7092bf307e652b147c680ddbc9b6c5d203f68023c31b2cc5ab4ad62180eb08961ea7740b43ead470721dd9ca9caad2cefca6817c494a09f97683c44fb645f01d8b59606657b9ea9c107c678f632b2c29b520dd23b0e20eb0e059aade6fce57cb3120201b392096f4fe6641d0daaab6ac564e62a7f48553183b27cdea09299f2d7ad0abafc88135837bb48f1afa034c4d3a6ed8f857521a474239aed6c3bb0baf5400ccbdab00e8e72905ad93dac02d1c89257d3450bfabd43e6b0f9e445fccf2bda7c583a9b827835c1430ca45d34e15cf3214f7e656082dbf17bed34e52a3b662ecc944ff1af29034f724a248e8514eb4553934c5450fcc8fa029e6e57641532aeb70e83084065ca6a62e9d38a889d7acfe9e56b868fe3b429597ea36f02ab8696e8e9a520ee7c59df0d109e73e42fd11ae7a9c36762ed043a9bb821be20aa15dc6228fd0c9d9f05d379aed5abacdb0ab78f30601eec8c5c690640fd81c6e26ef5e75d185ab92d52cc55dfff083197f131761e765ae58797b07b6fd9b128972c9aa591ea0f5900bed3dcd26ac5d8a9b03b68c781c4bfc4e28b067094bcedbf525a55b580aaacb055a2fdc74e2d6726a9f4763a9d910330b012f01d7196bfaec4080279f85f08173b29b123e35ce35efc541f437c4d3bef47c4e36a8c1fc6c080f117cd82b43e238b027fb17944b43e455c33c92586180d360a76735da5646811ba50153046771edb5179d6c39e48532f938935617c00a8923cc91e69413ae20a52fce7fae8a6c38673191e3ce67b74dedd0d5b5b22712c3c157089337dff1a310195031d41ee433919eaf28b47d765ee3a0c263984934503f56456a79724212e1b4286189d43c9ff6990f8c9aee2b58212a6aabc890027919d6f55551434d35475fdf3373c4bdc8473ada68c66c2b134c6cf11d14c13921331533bdde35a5e05feed2883dd1c7c5d758686cf365a2032465a8d566dedf0d45818f50570a8a00142efb0e4a3d5fc26f101a6514d526f241fabbc684a8e7866e295f5017100345c7fd5e5314956aca30b1f40ee13e2448fd2db04705a6b6536f786b66f8f5eb87a4f809a258f2075799b36d60b92c72ab39d93f747451ba7c79d5ea72289dda07345a8bcadf122bc3b23aceb05e0f3ee0867d7d6a4309787b31cbecbff4dcc7f6f8ddcbae4279b10d6c45902c1ac88222dd6c1337492dae1a587f355c7614c88e0b7bb54896a323235f9878ad24c4d322c3255b3ff320468545932b3a357afcf0ba408034883475857c204b86da31ef714be326f606306344f207898a959cc28d10ae1582358d2b9438f67e50b0c33a623fa4fae4d3c8aaee1178371a70c9d84115ca74902d2464954e0fb28f5e0ffe066e065363cd80e3111de212bba874d3dc261a19dc0c353109b725071563e80c8e43dbc7f945c345c9b1dd654d0f1de0d2f94ca9cb77a782695a73dc56007b89ea0aae4148618412213ec8781b87749fe8659d991be6a4aaec15edbef593455169779e5f998391190aac2622c25f249a723c06e3a21e9444d9600a4ce41a7c13f5d378544311d844c2a7eb79c9c4cfcfdbaf77576347d69c33046b73746dfb464eca8876aebce17424e592da7b95db6c4543234216b6ddf35c80281955a1f970c6fe78f10046a9165e018fc823349c6fa1c99ac6d463df7d74936e101b420a395ecf4de46360121bacabdc937f7df25cbaa8062dfab913a529eca0ebbd4e419f125674ecfa035378c0fd57ae4d1adcbfa4e0901b2d68e07c6daa8b1bdcee291f5f0ba2ce352db44fcae10eb17a0b3b6c17db9a25031871d2266042f17f00259ab2ad1c5faf56c5463900a35708f33a911d0536ac2625d5c7ba11b09f49a469071cf606108cf2de243f55595ea992987c1e1399e0e8225b617f96c60663dd5d587023420b65c188df44268867335e475120e62c3fd065fd0a6b47e5a59f70d890096c9af68c1f38d6be0ecfcbee65dd87a5006b4f5c770633ef16ba96fbe971041b48c55cfd7be4359c4dcd178bb92062500497f5bbb4cd3f500caec1af197cde9b510ba5dd07100af6ff105e6c5ad212e8cde535b6a03b62148e5f02c4bd7428064fc6a4123471e7e4ecba32cc22a5ec80cc235f3c0cd800f7edaa97b24e8b03ec58e8a90750f93da4b1c02b19b57637b9d77c9142fccb5bb678115096e994f54de81086345b20e820f0d79524f4f960f4263f2d57d00ccfe93999644cc36e7daa8bd5235e51c5fdd7d03908b0e8867f4b01ed1afc3ed712d6587ec294cb13b6ef4f6df55159537babe10a3a0dc122d3da3e934ebbee31fb05dd6e7a5e8d83b3516ea443229feaa196c67de0333c2be0e7c45711f3396ade7cfdd636d64b377b2a5cf2e87faf5a8eaa9aa029ba31d90df3dbaf8fdd57b12228068c2570ed6858eee750c5db6fab03cbead9b691d83087f5148744402c6a7ae00ffc2448430efe0e0820a4086887a2d789914e21198567c416b1c926abc4bd95e834ab0bfea1912218fb3f2009853f505bf0a4317f45c00563b56a3e5e9107ac759fbd420d35c5372296144a803e528939ad8929a6706bdf778721dbe5d760f0de06bb250c6af4ef1f70f75d865f4bf8005b1391f2a60f60633c0001fdee8c7b0c7be84fc26a8f4548771c0909c14ac8090cc3b55adec3b8860afb0d2ca54efcf49f7f0ff5899e003755ac8da986f466e8b29d757b5392219b6ab90ace5922ca33e98ce84bcdc578e6b89f3dae7da1b63bd03b57dbeb1aa61d6b3f84b009e094e7903415137e21fe1aabaae7d7e09803c25de12a780bb2768586f07d4d788b3ded934681a3498f9981e7229ed23a1da4e76d6c45b59d0a1a1eedc65731c4f10fb466ba199392b2597f3a722c822469a26326f3bfd4acd83b6c67b93b84e60692337f7178ffc5975be610adcf5014e420b7e327ea99ce805c7f3d0c38867edc3a6d98f7af51318a97c6dcbbd2e3afe05f78c6008e737cfe29d481cb8f35a381dd07ef645b7060068c2bc36973a420401161ec1940948aa6b6f84bf712558d168820e068f59ef9fd7bda78d67cb01ce7993b6af47d39d5db8bb35a0764b7e1448d5f6f8ab2f05cf3dadfbe6938c153f08c9797017fa7f177135909f2c1290cb4f0812f3081eecd21538bea30f69cd9ae3793064ba488d9d41e499eae8af1c5861be1867a8cd30759544b4a5e96c3fe6cc7200345bace1db871f7274b93f39be8bd61713836d1a05edae78bb17d4b4b355e71f2874fe62038043aaad7e1d75a8c3ea6b5ada4e67317eee910ba46af33fdf287e7ef8d9852c477d6e01dd9afd833b21b270de36e4396daf435de5189e20011f2bc86182dc1086383705b01e0ec1dd351f8be60cbb97cf3f8bb1742047c319677883b09281af6214aa66e6b01f5da3c215f08793ecc315bb4789174127cafe7a7a485b3b2568f921f049c02b8b165fa0e2446ac3c3fbc0274f8f64112fde0109b6307dd152b07e94550fd84f42c7fb7e86b7f33ffeae4d8fd27f489f62ec94e7642758464a90af84b97a4fca4a568a05518edf4309edbb58867b9a4e40325e72101834af6b81b1a4c1456d9b65b64413d7c9450f36daed467325d15b1bb973151d1a88d331332ca3086954b2c472bebcc163dcc2370af45fb46481af018dd9aa815cbce88f70d5eddcb77a3791045264632f73617717e74c51e7af4be4cc09ee3a93485e21ef39e8bf5b14d36adbf5a9390b32fdf1fdcf4ac0d35742f77574a5bc7c471f4d271a207166f6dd9c6c671ebb2cf9b2f8fe3e533a55706c7b4ff3a87c65b33cf0fa85e298b37b4652a8529442ad382fd07ef1c6d36d1de8979138ac757b4f6b4c12dcf73afb9edd2a5bab032eee2a4482ac9a2769cdbca5aafa3a1b96bc9d9912d868331ade3fbbcf3c7f4c03e179a633f1a9ff2b3a223eb9021d042712f302c710b4a1b07beb9b10e8ef5c63488ed3daffb977dd73dc3acbe10d028c13a0b8e6af604396379bec60c71f1be8807b71b85929542a2edc7d1e009a558ac0ee5cc1c4a436ce9dbea4424580bba14e10b17e72f884459b0e0c48e763a3c0615a4996884806c71b40359bf2fa354366a2622bbe277be49e604b4acce1ba5f65c011a785473382f9416af4711c30544f43faf63aebb2909b65b4a75b61b1bf4c50f2ad5f856d1e04ec1881e7119f73d50d5b8d8dc09009d045835e1c39c83a9ede370c2e3190e1e68844663211f3235aee848c1be73d870582bdabeaaf7f1a0756941269affc78ac3891db7ccaebf3626d4436f24be12c271b37b25a59e65f70f7eb38ef07b9eb8576dae8b6341e8d2d99c37658de196550f2f6ceb515cf9fbe1464c79bf93f0da2d551e3ee606478f28209e1d7b6d6a3799a775f2be4704759eded3d75c44d240c7ab6ca6055d7343e91c3d0fd1a787a95f3e1a0ea4d10dde67b58cc1cbc9f9513962fcb9d18157e1442e3ebd410aeec13ba43d10d442a0b3923aeabb0799b8f58e977afc0b657f0dae3b24a741c9f45dfa4dc1bc28fc288b9cb0a3e1577cda7b794c6a5efc85672f46b31dd2c9c08f201f26b9f7020328f1db649426b4fb7a5ddb95b60ee65e4c06f994e0335480b7c17e26dedcb722cfaad12dcc7cf633fc9006a97248585264d08f60617da6ce28f9f5c774edeaaf15cc78971d87763af354a12d918df6d7caae8923b020ea01aedf44a526e849a1169ea66414d7fb8b9d6e16e284775b0ab64c8553fee5fee862534de196643b34ba34d8a82b31887cdf2d4821b5d92299f373d20ab488a530285a614380d1a957cce91792fced37f920d4bd4efdedb191a9c14817bd1e91cc06c89edd75294614228b39c26f69a4003ec18cadb706b544a6ed4eb7b1946647a6b41df6cab183183fdd67b3e5be50f25d553b9b1e938c768f1bc202f0df26101b65343d20f6ea5dc09593831c928947876980c640de7fb8690a8231ea820036a7787b56f555282ac1b7726e9f4c72db66e86d7d682e4637b5de658c13d8b72cc63094236eba07cae9ed26b0e956a007b120ec174d00b1345f94da66615a57b891ef6a5cc4cd1dd5e170b02e8b34621566369e154542a50108b9a0c53bae9047648ea20a21707582e57bbe0655f79349cd8a7bf1b483315401db99a4dfe7bbe1afb230e3d39f266cd63ba3dea5897ce43de0512a4ad6ecc20263edc9f032389ea0ec1d667e6d73f3c781dee7ade96fca261b14a1005e021a882684010d7fd8d507f4d8ea8f25f009c253ded65a186a6f76b4180d7d5a760244e6d73c33190e172936f60c588ee2e74ea2b000793e8f51986e47caaf43423334ecc99a137521d903ca45f51a221ef618bfd001e2e1748b9486b31d34fc7c1bc090be8b50afa813a811d3f3cee145dd8301dc2edae8ebec0c4cad2271118882fc50557bad6c5f5a0a635278a9c3635cb3ebe2c4551be67e9c59a5715d1b6b1534239c3b5d4dd5d92e39cb66bc69e137530d5be9339cbb98cd5d4338e52a04f90e705287d2b7201013a5c80638f35c1dadfb4db09e059a935e0f41cc5e898110684102a0dd68681333e9dd30da4329cf02738ab54547d9ca34b207aba61c10f6caf5bb8c570f2670a038705c23ebc1d9692d17f8bdf22db891c47cd61a26e06a6db11bf26ef43af71921a9f9bb5951cabef8b57a9e913d73c6f9fd46865131d2798b96769a1653f0fa2ce77152131a772ac75b9dc4a0da2a1d36cca69e788efc494ff7d54cef0d6fe1ced2e5fa69d4b80820cdf64c1e3f1a5191d0551fe62e4d9f07770e981d11802e02db7f9ba15727e86480b30050a78ada2b71fe0f14eda8ca17184218b9eeffd636629a06e70e6093d47cef5913ba76710dfb726ad5b73733326f4ca5df382d47abefcf587c08f81db5f525051ab818bf4f038d32aa36042a4aeb5ddd69dc2e30c33c525e3e6c4e8132220d203b15dcbf768c8695f2c4e98f024f0541859861ea2d3a848d2e37967391bc7914c9e5509970bf6fa440c151b23b3c694edafd501f4fdbf20b95eaa5eabc634f5abebbccbd83b8053a09482f49b5fe672f70db1d717b60d9c47ffa350aed7d98a6a55d63d7247dda3a4da31ea957d0561c91946bee8849f67cf36e1c626adab01bd0d8d25cdff13932e8d11c2be8654ec468b13daf34ae85176cc85296d0afe8db78e872a47d899bac4b054f7291a3cab0779e18438e37c004bccc8a34076302b6ef4889222190ff6a14cbd65349867a145f11e78dbe04750c76938c150503531a89551ff1de9fc061dd6ac7f617283f1171d6e75fa7ff0fb4d86cc19dc44bda8c901a29ca7b9faf6551caad01dfa1de5b7bba5117cb1e3bc4b3caf146ba495fd5533c2b716440e0e97a611b2d4664bc913dd1a8552b6ef215fd9fce04512e1174dff526401a0b0f4a69712ea9890934506d16d6966d420178abcd9f99373054efaaa7ce67bbaa46ee1d2a86e5e5c7318eb37194c3d827f50a3953d184b5ec79ece7ce347ca750cd3b235a38ec10bb313b306b8db470323d410e9c483ceba6ddc4f8b056a00c0864c3a7254f35d3463e5bdc1f229adf0f4913051c62edcaae361a341ac15fb1a48c74677beb8cf887df8b1d783fe191f63b677d42bdb42e8c3cfefe03b1ef7a87658a7deed6aac2b75197f1b0bdc530f7f78d501d27d1c770d9ea4ec04208b71279bc52e0eee70e907a7f189cdb33210b095569cadd468245f7a867fcaae30f19cf027e65626ec5638abafa1990e839df1f74e3a50e1addcd691d9b612afab1f35a95c56fe051891b27f63a33225b951672f06570a6f801d924523bba870fa4b35ef4a6cf3e9a4a91c02ed4bce76a6a5799e30966ba12c5e77504dd236cbbbc6dc4d0505390c23b8ca072f127589734fef745486acdcc3ebf65ffdf778ac76d01c5f45131186c2ac0e54b0cfe619f9fc8e5ec4a0d9a0c3e1a0ed9e6eecf76508cc3f721aa6167a54e98932868bde00b854028c01f852cb8d17804a8f4f96ba0054797946e6b2168e2565374186ee990a27a72c7634cb4b064c5386a4c480aa7e63fbcabf526dd95d0b94fe58f3c50cef11932f084500eab34cec34768b7eceea6459032bf2b68660a59a8c5b8ae628994fda80f87d04b296ce78c93ede7441c5aef9632003215aa03da1a462a61cd0a344f92efbd69ddf252ff1fdb36d05d2089fbb4584bc7693c05b4788589b3f0e9a3af62b2d41a54e639254b1d1c77f5aef7282b722aa35744fe45d1a6d56bff5c99eca8fc299e91202cb870a44ea097cfd8678fce2752caea9469e23fb86b085ee2088fadf27e8b2dfa2ad5b15817cdebe5bbb3ea1544e59e02f2e93dfaa2d46e138f879991e88740c6abccfd6dddfe019f80ef701a8dc26458153cd1c4b2cd30084f5d295bed775a2ea7df609cdb1fc546e27391a7b339494ebf613f21d9f6e90e09112dd0eed1f179030938f8cf0b0d281d9542566f397cb64191752a814e4fd8eeaee68eb76c2c72be6802a004bb44c73d4d15b0164c8776ffbe54c86aaf97b755b65ed4600a11a74aeb73a0beae9f3613ae3cb8f3f7656647f706161f0887e5ed36391bfd079c5db4a046d93a545545a7de6277ec86eb5865ea0739e5a9e58306d018ee353e70f248f6362152fb1cd6a79bfacf2d55f823586fc3e9dd53d883264fb5ec92af779a76e67abe6d05473d55c35c6c614d3bd897cb6d2655e710915d5aecd9d872880f86cf5835fbf8ac21161887a992c8da8ea1716a39e06709a745476cd92325b347393eb0e7b2689cb4586fbb03f71984d224aa4d93956d931945699e6e95c27668b721fc714c6a3ecd58e9d7090556b36e923ef42acb973523e00d192444b1f5e17cc264ba6dfd2e96e61dce9722158e8a8b64b41db5c6528ba623c8576672386a9f4240b900125e7faae20a9d1374646867ae06f973a24ed3f84c83b1f99888911ef287bf55155904d9a7a0a4ff595922473c3d494733dd4ed6089d75e8e9fe31237605204db1804123d623bb371d176ab95c28a2b2a054151cc52e98906980f42707b778007dfcdd3b8a6affeb3d6a43e26809011130ce92036161e4495f60e1167fbd12ff8989c10481263de1f5f043789d2f5a8d6cd4bf10a9eecd12cd637baf908bbc303b2ed8bf9e7c2dfc9e00b16f39a35e3fbc799b74c5e6df3b28e290dcbcbf48e15082f343b5a04db682e913cd26d89885ca7d101c1d8f3281cfaf8e5cf6c8d205ec6447ecfab04268e23b604032a0a75c5520ac393e9f63cff2ed84e5fc95e571be1e24c7820508bc7abea772e583b817f79e54f4b7909f321dfbccd6580bf472be5d958fd1233a93f867b6976071eca4261b18bb42ac8770d3cc275be99a29f2668887a1429a1c15a6a65be216cfaea00879b7b3c7a0f684498ffcf4813f35bb5686a7c770c8f845ea9cfae8d2b5f2c81dda329c73bd0efb0dcc617a925852b1da00d456a6fe685c6a3c344626287f2235027f4d824ecf91766893e7763562d4b7045baae2c9de2ca74f6c8acf299c9a9b4ff244c3a66652e9841358ae38077f3ec59d470b16e1751afd76095c7d20e2884a7d03a7acf24c81c514bd64f33d1f30243bc9e89ebc484e8f63f5acf62399fb010c278623416c7eca52575f1bdbe85274dfea9e437d3da15cb8eb96754ab43cbc9ba820a47e411c999d489ab8372b38310145459605e8817528ab87b920d6defd7ab98fae98df0f87533aadd52e715bd2e1be457fbeb6ce1dad1344b4ff541937687ad28bdfc6fe77dcab711c9e41477c8415c582f9fde86ba6abe3370381a8c9d38b0aa0b60665555736a57ffc18273d99a7cc813e31554efd6df5f2e9c084bfa278962a34740d717c050740b9ca5f692a80a17e63b99211436d00b7ebcdc83be6a3eccbd7a11d14626561faa2609556a6e50ec430d8b381bad7726b75d043354899b03a4c3e001e59cb690fa8cc419cccf26276cbc2d2b18d15d2d3cc7c043d60a167d2b34decc5c3306595047a8e9655dc628bb1216baaa739f4b127c5fb90c59bdaec1cdcd0592b65c5c15dd15dc7877b7565970394683e8217d047facc76680d24264181f6b6b7c04b7e89d0777986e250abff74e48d54d70a5d84933c9e5bac588a98ed14b55ac6590abab531bee49d24a6556dbed8c36f7365938da9bca2bbd63bc718cc37cc5557e801d17e4aaafd82a5d7a2485423a5c9b68d70f7edc6d43515b5f02e61cb22256459523345bdbc4f62c632d9da7a6e5bbce059e99d45d66a046e6bc788fa617f221d75a8adb22c1f172c63718f3e056ef793865ff25e291d05ae31c9f901a5e7df4ab692c00232107f6747b18fffca945ed8f34aa017ce98f0bdac10bc9cbbd0d9cf951d498d8b44c1d754ecc753cc82f28b9b3f0b809a80b41e29cbb9e39b314a42acea0b1d7b7654a71e8da343692b8705db9cf8433650b43eb0b1fbce17004d18ece261aa42f0d45fad6ad5da3f1bad8b538b5a7792e0cc5ab76a7fa23612b4114f146674527a827d5c293cf72635f0af7648c38d07d0e3515e8df1a8d978be7ca8a4ba57cc497ad2d1d28b04046b3212cd9ce8814061dab420045a921bc5890ac9e1f716884c5bda89db252bcaa699067899b76a263699c5cde4d9fa525767f58a23c940490e04211bec2b6ce3241f379f7bb4537b95065c194554cf5d19aa7429ae2d97435c53257458c409270b7e935a8da8bd953c9fd08abfa645e4f9e0a967182d783a766099e11066894288b3d6734a1a63972032fcd2eb1894b509b9787a0a2ecda3339effd4ce4c2bf3c54382d314adbc50f730bda6209a557a82068664e5e17cce4bf412e8125571c014f0dfd76fbbbe929e52e53a76479bbd5a9de29e8df3d6ff700d68811c3aaf7f558a6f42bca91e1f7a5925bb38b0882a5e83fe6dea4b773922dec2032feb08e78d88f18864ea97c9858f2764a36eefad931d14a17bad615ed83a1407a1aefd319fc8fb0413d1a6397b745a3a321f6d4c7630c0287f1308531f7a16be3978c2e48edad8734e347e6e6809c3ece8358a740dde480437236e59ab9a363bdc3ac30a838a22f1fc01df398fd7473c2265e685c5052452e6582451b2e0708c52f961d007a658840c38abc8085dd1db6aae15284922178e8b501f02b971983f8149cc51dcac2cb0465056248eff38b4802e83ba79358723770b700be847b111a7b3e1956eb7fa87bc8e4f949dd0fb28b5ce536cc4591b2b9b2fac8b1ebc1e40fa157f93f4da5f308725de2c312e7cc7b0803cd341586691a74e252cd977a85464a7ec6e8e9268b34fbdbcdaa506d249bcfcc5df4142a1dae069839bb5dfa8961db098aea5676134fcf699a6d3e1634439530b99c321007f2f7f512e3c320d21c74aca5b9543cd07de952b888e0482e0485624e551fc33bbf590a40425c20c22260b6e74f0bed77c66bbe0902692873c1d3313e9811a4e884cb19b4c79e46ec0c603728c5646f6b77fa8b73cfb0d74e989b16cab1f6da5a84092f6daf18c9acf104b2da9b976587341f08803737fdca6090a44be587169f94740b0906f4cc31e00fd29281810fac6f7cdfb7ef177fa522c2b11fb4a32f9f10ed89f28d8bec258c7e9c54490c28bb781faf466fb488bdb9841c070c427a825a92da0efd777776b975c19de558a534fa05b21112537a8f5a60cb5f589ea49ebf822fc530130afa566857b81b47d067bd349193d170668ca3335bf6c6b1367b110600324a4866b63cbf376f26fc4325d2f230e12b555330d418e9e6432563caee2dc880642f72053ff0961b3f127ea4c42c407c5b4e6051c6969d5daac85c3d811f9d8ecabfbef3469353dfe00301fc7e4c845b03f52baf56f246f7aebf0b95f07ea3e0ee8d37243e00950dc1981aaee6f356b5b78b0f6bfbfd7364c7e874d9b299ab0eb304e28df82af74d63737f901306d800d60e90be7aaca556ea270509dff9f96d433b06a136b651fad23c7a67e5e047832dee9fd0a9e8383feadc3646060a218c06879ed30d999d3deb35364ab4995392e8166e3ab8359d641fa71e9c09531c8dc2cf92b559b61b40c4f4cf1d7dd5279596c480431b0d909be8f8aa5108b14330e9f73c65bd1dd4f0ea9ef9c68cb9c95c492b3e3eec400660e741d58878b57ad84e5231aab945bb598b9377c7f71db60da28be1a9cf642c52ec7c3c33a572465f1fd6c5e4728e03e8db9f3cc8936c1e4ddfbee8eaa3aef03c8789f212324654eed1b11ef8363a2a2549dd8f0cb2b46f5895cca9ffeac56b75f26e5158faa68f623c8fb5b0a1666f1b7db1e859af3243aef87febc0e1ac3a55a7e43a8fefc762f1a5ae8d54bd9ee1951ee53a0270af6fd2a3bde0e5d5fbbc6ff279a901110d313f9f3189f2890b39c9d70a7b785d71365290eff884b89e8c043ec14a2437d5a7974a95355b72e09bfc2206395114c4a65ddaeaf03eb44a40e45515b5f14ba67dbe48da6c9fd79dd962bff086cf8334fd568a94d86e5187827310191b15856ef6f3cd95094ee2a063706f7a015cf76392f145ed16cebb845b2a77875175b7db091eecf1b332ce98f1752a4e25b05e57090e0ae1d28fbfd3d50148705d515629e480adeb39e4fb8af1a88a111cd7f6852e07db13d62df257f94fabfb561ebb7f62ee247217e2e3c0bbb91109a5e2ba4ce48f19fb5c639e1f147d178116a1095eb51a0022ca0ba7861ffd6aa02da6d457b822589022a1ea56c0b330a26681e710910669e34c7d1c50b7c99c4b23a2bf85a2421789470cbc265385d94fc8814096ed93530ac37fa88606830db287f30f9c7f6b41818c797e22acb8195c3fdb1e44a47d2b49c53269001616b00d696893f521f8a22ed45870d990957eb98b5983b904b5d3fecd87a353f9384d312fbbfead7d549e27d8084d0d8d1f44e9b44697da57800d1e9d681432381bf52163866f47da7c12da9b6f5b36ab98278c8df56cbb8ed73a5612e00dd468a1e94da7ba6461d535d10335e99e56c9c6edb285b01697daa0320e9eeae7ab83963647c1d3568badbc6fab43ccd1ea9c07ab838144faf3f0c55e11c5eef94bb4a736e4c6873fafa3205ab1eeb54f6b3782c0bcebf7f7a54bac1c4189f49aa413b5504e1ab0ffbb1b596f7bce7e1bf718172fc03b12d386a6900fa702f1475f25c8b167e5677eeed39eaf88302e3660640708c6516e357771438a6e5a7f6bb092d308fa9724f42e372b126472a193173c35778220028bec91da33d555c0106c67bf1cac6eb6532d0ef610bc7efd3b9cbd6ccd3b5db4f63a5ca0ec4430cd02d21c94eb15986457ce2cf0cd5885e42127cd391fccf8e1ce4d72113e55e93776a1cc799191d06d997e8088d72fa7ef855652302ed9d90aac087004dd5165baed08432687edf76d9c63109d3bf5fea7069be92e1982f3c05165735dc6de7ebb7457ab8e9862ad900e399f317b54b8e864846b3c30490e408a5b48aa238e88920ace4e90c98b926e1917b96cccb85e3ed28bf672578d95676bb1a4a01628d68237280ef86caacff789379422da4433b585231d27633bcff095dca8bf67e91c5a33cffd6b0328d5f66bc9821d15fe2f59e8b7ca8692540831531fa58687c82e02984441e45326709c82c9f152e43441051a72858de6178885d7e6e155cb4ee19f65afa3ccc7b3548c4b8fa4415aaa6d7372ba86b440d9357d797f895fc42b5480c2672a21759ee19a05713e254afb3d42ab4f4d3e1b15980acde77de9c83256122d32eb563a7b30bdb615b2f4cdf69671eef7f310f261355a4c6276f743afbbdbca82c986976bde62d84b7944e6da333338842d9f41fc8a6e2cc6267f7ea30f553515d40d83871cd73ff1397d180e93f301b3036ddd55f9839dc14f8db212885ccbf3ebc1e0c48ed46451c8cd4e7934a15ff124dc721d2cb60d3ac88efd0c89235d6f481888ecff7bccf78d125af26f9b3e83b6df857905734fbe13843e525a55fb6d9f4ef7a0a67a0f719b700dedd67ffb6fe3773715f5d925966a3e9dcdfc2457be97c800dcc33eeec4ec23edbcd65ae52548839988e128aebffc1be46113b4f5eb3568c72d4086111b93d0865c6697e3ad5152f13bba7d5d37e51a845f4bffbc9e2c03bfe32d4353b334e1db90d58c3bf9d9ef151e360658f6ef4102bb102d1f6ee887a4f82c6e8fb37dfed775a507fdbccd7cd065a18f56f27f99759ae1017cbd6325960cf63fda859b724fc2da1a9f6f1d6b22b265739a9d2aeddddbd3cd9f45aaf3ecd2a797c13e84fc26dc0cf9263506af01c1611d6f64081643a6e17c336e6fc1a2450ba0e41b1b79f9c325c68e93acbf003caa77c59e8696b90a5a486764583f5fb8c4a40b477ed26665a3d9a0206a678ac1f81dc3891651dbd2fa3a72224a5e9bc6f9ca4c96aef02e1324106d28584b9fcc4b7fe4d6cf809cee5858b3e9447529bee80e8e4de34aeac0c38c671f7789be0bc3c89b00d49e568f5d5ccd8c7e6b01d2d1cb9303b2e2f1bff6d24f27a5589aad0a0b75d17516a4a8ff75c767fd09bb5657f641af682979e8c6ca894d12963d93e9ca5cb8ffd3b889424333e48d3798f56be7b83fd0f8fd405ede949efbd7158f7e4afd890b9194a99dc4772951681ed528f6e946c86e7018f4bdfdad369def46ec01bf9edab18c91b2985ca68eaa7c6a7cf61e00780ae564f13233b3f36d3711f73b24118e7416a458f6e63a035a9b5793101f365d8fd436799846357132e22db58cb889b19bdd41bedb46c6c578858a9f4f7dcd11debcb8c3853f2c904752dd46fe01ed294140e31f1dd994c96b4a57cb190e323553c3e5bb3d82660aa245cb223b950b470996a20b5f9811285014fb7f1ee0424e5042904fa1bbc245fbf36668d834dd13fb09b71fa3f707b040feea3a86e42215b7b8638143224147ee85e013b0e7bbe99c37c6bdcd25e85c9db72ad46924dbfb22d4bf367959ef9185104fcd9f4b0e2f2ea66502a10b8d4836e01ff06ebde39a67c7b9405739b1da5ce9e0d319bae59dda87adedb006b5eb219e83e4ac095e2d756ae54bab8b2f6e98c73fa2d392dc9eef330ecf9ff7ae7e733348481cb9111eebdcdc081a32a485b8b88d520cf7d34cd2a0906f792f0979e1da3faa747588093c1bf867d1614e1d8902057851f2ad5fb9ce91a768b4f0ae4a126ea22cd33e5c1e679e2df5e2e52280ae8c2b3a9c312533de793c34fcf735d7c577c5fbca8bc8d02cd9fe206f495269e5d4be35388d70c6941227cb31626f3a80b2abb27de90fdc45b55108050b3259e4e3051a77d9c83697423f35d6db7f6c3d682d52c7bd11a8f8f2f50b6c97c736df3b3382228cd25fb1c4d62e8e0bf9c0d764f17dc9450bdbf5e6186a3275ffaffc4cd9f9c08207a98a78df3e86fbde13899969f8e41bea3666f486b6846c4ac381b665c03bff79873cafd1c94f4bc938ed135cf87268aecf1baa326613274b255227618482e6336a4f14638417a44c1b7449f1b147fbfbbbd8c7f66a93cb5d178853ed81e3c5aa7efac3cba0d475e516a24ed2485270ee04267d1eb21fb6a7e8b3ea2e11d116eb3b2734556c853ffb17831c0fb34d3baa6bec2ccd53117ad408f038ee5c0b11957ec2bd6bc5f680fe1c14e4a637fbad796a05c3c21f2902909dd7a0c43cc5b213116e84b1b7d7feb57ffd99b2fb2f29ecb04fa6f5af69f4bbde0666e3b25cbec15fcddc2afc7205e54acd676e53b81b7d511dacefc8350e6b52d3cdafa2ff19185da51afa4738d770d351c66a9e86fe4d3dddd0bd93356667c2d278e35d2c35161c7053193f31309aa4c2e31126bc75a448a1a0b458472846aef8c6d2a9195488ff5bc4b4a5a4ee52c40ac24c278082b9344a0903693e71c75687fe9b5e1354b8f84c4148022dc07e22ef15f8704291e994c0748fbcd57f0968fa4e494568d579ae184266ac18b2dd09a3c2bc77d0c812ea7635e2628644167eed1592c975dcaf2d2bc3f29bae6740482960fa292fa92829241dde29632b234df78018fb9d55df72430c284c2a9186203650d546d0e60d293fafae18ed47f88bfadac048e42596933e03146ee0b488629c4c9566659c8d53b66bd1252e1aa036bfdc8a912327ec60521f4babd74d97d55958b1e3b667423c7113844b7a512d3541802c1d217aacb23a206ee22563295582f49f081dbd1e50f1c2ebf616128cdeb3fd8d78df5455605561f911b8ed252231cd6a2092f0cf68ebaec93c8493be9bc89e98898d1a0cf8827eacd17790bfa736a1a98e72ef75513174f75fded16d38a58bd5bdec489bf43f397bae1d15f722645bb708fa156be7a513b5f6de478e16da152acebd3d87625287d32672cf2862b3833c6ede90e6b456d30463aabe549bfaddc6c634111c0a4c3ac27fe2d54e808b4557c08283da6eb9e07db5e49c19c777aa2a4388509057e1e35367612261e847ca59c9fdd0413566e99b278404beeb1559a1adc1d6caedd9be15c6054d4027f9213729498e7ded5937061fb799568e99ce2099d8aab46faad505ffe48516b2fa1d7eea7257a3b157d945b4dd99032b56d2258404ae7aa74c12c620f91739f5240f363015eccae83d02f4c568028d6e37f1eef638cbd3121749c7658edc4164dfefcdcafe7e697501f47b34106beab1c58f512c29cc3da73e0445a1e4a323f9f9d97d05113bcca6842de33849dd3a1d6a5e1e436d5631bfb569d9afd745e6b756106baa65e19537a3405bbb8b14c7432fca35703701c8b1001a4463d18adbd77f7f47f9b6c6b0e4815b88f7522038e220851e893f34512a591bdf0f08d7a47c9570de5b233adc548a0f642947aa86fff2236e3c515e841a664b01ba84b63d410535e55308ad1b4cf6d684e0f40467f7d76766cf084294b43155a73ef2e158e8dfeb78611104e36293e89ce016958ed18c44a288db4e1df954be09efa45c770f0fdb17d8673cdcaa86e5e48b165561576a74bc2196ed2f71439ed834557df8c8150e78ac323eac0cfb92e7b5f58501f6444e071221eb5992fc232c1a2ab7890713b6a81794bd01ce0f02482cbe39e640a9e090b01d3c57f8dd0efe96d7dbda5db809a4ec2e7f4bcee561d4fb449c759bdfaabe2a3ee111cf4ecfad8e099471d8451d09922383960013c99208cfee07f3e31d8d7bbdeba41d5181c2ea2545067b9f7df79958ad367890003dca2909b7807b9d5121ca356b2f4609ee03d8562b68979d290836ef1d4695a7dcefb00ff23bdbeae9f1a279fe07e20f2452e673338c224f35131d83f3125be1a34e107518fe6a8ff2812655755559f54bb5653ad4ee0923937ddfe1bf9d0ab0fff2d93832dec1ad30eeb8ffaec00fcf82d6ba0532b9f4cac004e799b2770227b9d46d397381c1fe71a13fd272ce2485de4a82ec62020d20287bf202b7da32fa74752234cbd443a718724c50352db7adebdde5467391006d1eba0886173e3216bd33b23c0df6616941744fd9de7d5fd2f88135f35757c1b15f35178a3ee650a1866da874e3cfe37e1b774fd16776e892850a6d0a89a0be38cc6bf8cbcdef5235c10eb3034f2702edaec22bab67ed583f8f21fa30bdc1130e335b2134f103708fb141f4915e8dd400555f49a17ff9b33606c9963a2fd67fb51b1802c35f1cb0c8cc2032004f78af71bb935b58d383325f708a747b12492a97db745b3110360c4ed7ec53ee4a532db102a1e8f077bbbf8c80f51db0396ba134414258e11d70f6cfe44ffc3d2b3137bbdb08608bc1adde06e5772a13cc4ddb56a5de9d37fca7ad5dab55fba43bfaa22edf9d66f3be39ec1f6cefcefd33f96d4d8cb9a0f2607e046ffda0d4da792ab1910519d4df66a912c7deda7d73dfd5950f0591ab6b38c38852ade7e49d80aefc7b89a9d09e788a4554a6165283b1e13a8a71a4598540a02d2ee5c2b6bafbc9c02a6541905b0ed4c3856174b8c59a852d9f675a8850ce500421c8ea51fd00253a3dd58078d59bf7f90e1f3d62659e7531799f57c138b5bc45875a8d6fd8cba0dd35c2f342ce91c2dd52a57f7e6820ed14c40684809c3d06b497018fe7dee53dc4ccfc4c510be92be86edbdbea056812852f4bf613aa3dc6a0a4ef9ad8932b3de25dbc1d57814bdbd2d01502382bde8f1b6bdadcc9d4faf72f4eca9280a0525cdd631535fc4114a48f30dd8e93377bba3482ee7ce013e6c969a86418a8d33fb63a597bcc5f5fed7ab4cab87e974d497ef0e7407d6043edc865a4dc3f2a08bb14883d513ad55d87cb70ef070cc4ff2f182c61a908a3e240c7a841dbc1432907b9ad9975e58e01810bc4f286567456fea9b06ee93b6da088b934c1d064cc7dc23309cc5e3869824756552bead2af21580b1680b89697e756468ca57a7f1c378e495dbda27232860610b7e17c1dabd58fa9ac6e671e40637411082133f849576a4520b739c79190f554d72573846ce814153ff9a654ca4b37c3d705667240162038db8882de66156d66b71a7d7192064cec337f9c34df68029fb86b9cec7999bbee61654a2413c53f30092ee55c1c4756c0dea1b45048fa0d733aa3b1b5bd2d5f8ff295eed425aeb44008715d4b00cb77ff1b022e7b4d31406f96bf9a05206b649ea80b5bea99fafe56beabe5e04180a31b4d63acfb4f5b3424c2ff42641347f4440fce808fe9993f11d8ae8aab955b5c60fe02392e6f791cb82016b8bade53068e337d023fe18e0d8032c9a85e6430445328394c2b750a1a6595e13edfd88e5de21615c5aa5f3906cce4132d4a343a0d0a7a24246c4b86e05798b8e947134d216d38f56dbf748bde1ee8c2bc82531d5698059e2e4eeb7f2071f72ed589133403475eeae27fc41ffbb00f9e76dc0f4862b77653eeacea66ba14104dd4ce9ab0d3f76158b9dcc0dc8b100607b675da7a0ab14bc32e518a010b7e2fbd0d7d9f16d2a4f77a02a4429237d48706182c56d8abc3d7d6da3ba412f576c3b6a4e399570dc0e6757d71232d8e3bfd539a8dd763eb3d2c73d3c8cb574a32ee1b17409e9a11730e18edc9cddfb1e008a27dc227543b5906ae58b3881cd5e1ff073e6fd343d4cfd1aec9636568005640651078fb6ca697e400f9c58a00e51f1d95c5b52f063b66676ecb394bfa9b84b40d8ae854129736f9747b7f0677943681c175dbcd71ded0baba95a767f7b90ea1f4db1bbc8edf1f36fe46000d719641fadf4ce145a305d5490a37a6a3101b23e05c38ca003b1bd9a239a1dc18f4f3e35bed45fcacefe1298b7f89eaf1e039ccdacefcf96142ec8d60b7e0415cc926da3a80db0ee9a6c08ddfbd84b3d508cf16f812c6d55b7ee21bcdba48c8d29ac7125e73ac302e50b3442498a43305c1b4484564aeb6810cc8319ee68d8e22e97f0f2848d6e27ebb63820f924a62e08dedd1f170648e9af2a920b928b4bdac10bde3413e79bbe066dc1b1ccaf870127034d586fe74d351f4cf0983a941b8cb2bb1f308b047a95a36c861e7c6dd1caa4720251f6c3926b6bd50ed1b3698da81a345d0c71b5256c399c589cba77cb4414402e8f4e95258f2f52ee8edfb65fc5013fedb528cf98435bc602efa3ddfd9f5c26107d458a6b7a51aa93bbe104a809daef966e12dc36dc0adf97e2ec4972d0faf03a87b8a4a6634bac8cb5b688070343f1c875b4e062a6219f851bd9332f5d06220985180c962ece0855faf7e027a97b689b47bb2fb8c099028a36fdb49267730795cab37b32705ba72b9bce14c009fad03db320a9c9bbe052611795d25f4886c52385ddbb691ef2fa10623de2ebf51b12da270beffc8d492dd43a9a4f8137952cbf4158ac75591a0632364c4038dfc8e714ce65daa4fbdf2a301f75f6932c7976a39b6714ace2e2ddd1bfe68f11cb2993ee0a182486d8d0c31b3053fbeae47d1c5ac684d9d47e07549f225897721989963cde9bab7ea0fcf1be72b3e72fb6aa2eb767dff58790572815dead1ef672aaf409e158d01d7f6de92d29935e2f907800900a24d6d8064f08e122bd93dce60d53330dbda0cbec5e219a53dc8fc11fa0895da92d82d4c8e1453720b782886eca0c26055f3e981b2d02a1b901755e436ccf1683e25e77c1a378274d2c6047359465a5894a27a15d0a58350a977ef2d04e2da03b3079129de3729fc7e94bc096752fe66d759714cd42b29f86a37ef98b459abdcbb157eb3083021ed4577b9962acb7e3af402b995209bceb85fd4c9e4aeae09092cbb3d3e1fd447c1d1de438f7b69e9cdaac9698ca2b9bc89e47d157442b353f5dadb1d1dbada1a0edd9fe282eb1cc1ba4206c1ebdc29d0d4f3ca277fda96a02d6d1812bf3daa914ba86cd958a7786a3d40dd1521130387571d70886bafeda5d85739ec4104e0f1b47c57ea6ddc682d49a8813289bfa72b8bc3cf11cc90df1c155e09a9fd063f226e01507207444743a6f0a4ee76e2fae51bd7eb29428b3c4a5697b8a7fb20de42b50a2e4fb3060b9046e7f893c84f22dddbb774b8c918e04754855aea63ed98d9a947a88643480fb395970ee95229653283c7e183d112f96466a5c04a2d94673b2af4b08799b686cda7424e785df310ce307cd0d4a77c11b455dd1667c440ef0c24eaeb6e71169fabf2903ced17f790b2bf9a6b38c6e69cb0c2e0554b20722cda1dff3a791819fd62fda2b45b9b2be7085d2921fb967a02ae0811865a3a6d99a4c2f353fe587f930e33e7dd8f4ad614a35107d6211c03d845c5d838960baa9aebb954d93bdc8e1be0455987215c29ac21dbf8edad4b30bb40ce0014b3885f8292d7cd670d157c257a877873ba689f96889eb4e2449d648000b3e81c1b149cdce19421c4ec191e185a0d49c33073dbe4b8d3f3252f5a8c9b78a62563e8e34dc83af4ed02f4abbc947f1d8a4c16aa1116ebc75fdcbdba0123a4263f9bcf5aa03627f1baa20b4f5535275447513902926a467f65de886d15c53214609d35e8c16db3cf6bab162074ee2990229a0472b4f32cc3169d49b33c47eaa1e5d11fe63ec2b1a5b0701a777f5a443f3e27e430e9f2da0c6bffef14a409b55859bcd50a99a99f844df7798bb47aa9e407772cc2d060e3ad9bc6f750cd5a311ca5a995a64a457dd484e077ccf1e34e367a1bf264abf72680fd97ca0e2f6f88203998abde0c8c5ea18647c0fe9dfe9164620ed189fc013f0c2fa829fd72b076a5bc3dd3f8f70bf7365ffc29e82835ff47c35dfa273f7701fb25ada464bdd99510599bf6945f89a43dbf752829b0db4a7814dfdb98132690c85939eac78f0c03bedc2c1cf0406bb5ea2dc5e4ea3decf2d4faf2d3a8e61734a394633d72b2cd9c60a03f4da248438de5d4d771abe89e43d5a454970f0b5ccdf6cf5a9a20732a0e2dfa366e0ebefbfff7391bfc51286ce1620f43fc134e2074ad485ec8946f9d69494cc77d171205fb0d9eb182f093abbeff8988f89032801444369869e23008bd586422c0e2df4ea50754134ab99a681c16a371ac1928b746a5c8f29e284ffd4381226332a78c66f8d55a1054fde68710094304225962348dd1e1d8337303395ad2337f1baf6e2f19328384fea942ae907341e345cf4c05c3103851f32919c61ec0c5661fbd575b08a270b99639aacc56f56773218f2d72b54039eda683b5329c02a3051a6c5880498610e9daa1b0053bf890468be75331e19edcefa5f459d20ba2ba726a6f964c36966c3b693cb58d18a178e3f05e1ccd8462a14bfbfe777e3256955ee9fb27e1fc9b5ba1aefac15baa5e1ca495894e0dd04a694081c4e6b2ab598833c5b18f3fcebc6064ddbd505063214cec3402c77bac365135394f7bdfb5aa93a6de2fec6c32e5135a961d2ab554a3629d1cc67e6f3af2a22b1ad343d37bac23dda6957cf205c181c86daca4e8b4fbfdacacaf126cd5b8a1dad59a9f83b4c34424952944a4cd98bf9d511b20aff01166cea78556ea1a8324f21684035298ec159e83befd73dab75cd1b1e323af4172a6ee5ec368a5e0d05438231b0401c66421a20f84a76e87843e7caa2655f7a963d5e24ad0c6dad07bdab2102d2a50becc1058b0c24613c6bf92450fa03d1df642b95eca2057be307aa2d52094c0f4ba90bcc829573b79920d61ca2482ae0ef8598045983bb06f5bbad79346795a13f1a19a3c2dd9691ec955d872c56cc4cdab26b4fda620b02ad90db20c28f0937f84b07d68f90f513e067c3f4518e096514cab82051b98ea37351a7a4e3e1c3c9b11cf2c31f6d33ebd993a62f9710257387882114a01b63bbecb3ce7816159a0f5b89193b6cfbe098c3d4387eb314a866a067826b5c5483c71ad6a3b4bf86f70ece06c1bdf9bef08039b62273a5acabf209fbfa9bf12a89fc97be90eb0ce33abd4768f348845fcb323db35aa3027860586b8a1e780907ca6cb2aaccb727ef9cd4a4d02b88f25d366e422d17c81c889d0685a9720e261e7e23032a68093eaac0635d9976053799b022d8389b06ac0bbf4f76e4ec808639d55c19b1506e5578309e717f5293fa47f58b5325df34a9038dd9199e5092cb14ed58edcdbddc344ecb37878679c8850e3a05587a92d80b3a5eddd68861063101681d17f72f09bd91d3707b9cc2f83e26fe742bb7aab1c5f47951cf276c6c2301d54c5334e936298173b752f65fa693ce7807179af41d818cdba55d5d44b1e0cf3ce7e4a87615e7e11646aec1039a0385d99c25abf2cdb504330973f1a9e6997f9f2dd1101fa82737dbc0aedfc52d3392e84eb6dae629141629631019a52434be27e1e2fcdaba7ef7af9f920bca0a397690d0979ee0767f639ef6f3d1fab93d76ac27ebb732589e1e67040252d01e2dcab13c8ab626b7baaecd81933475a018a8f77b02f01d59d5064e8e8f3c5dd0fbddc82b883b67d1a95d05930a35578fabb62dec48af0992e5e54535a3e969cffa4218b26af216f715a4707af07102275610e687c623c77f62babdb9990dd1a5e37ba8308c1460ec34a8b6151d6e640a921cdb4d8c129c80f28d775d1331d57f9b82243a2b362467a6f8091a8590bf89a0b424b4a53821c3453ee6a0fe7de1acebd2889ae94e7663afafc2517d76fe1d5fcf08cc5706020959fd1ef64453621d451681f75b2ed0f1a12478d6f29284d4e69c681f989c3ccac85615cb3b1461fa93b0bb3879f9aaa4646e13576bcdb3d94fd52771de11a4cd52ec4a3ea539d8e618330f0ca63afd6969241d19885ba5cbccb039fb1842b053e293546c0210f7ba57a3f5a9f0df9e513f494e1e46ee83ee545548b64b2f6281eaab3f4a764dd23945e54542b35073d7c82db52fcbdb073e17d46ce1a0a7d2d4a94bc79d748605d4cbe96f21f25899288d07918fea96e6730e205abb97a3ceff2d516e7507776edfe6ee66f245fe8c0958ec84bcf25077ae270a8a65c72ee8a1e0de2e2a31a25cb16123dfd176412124c7306a889b7a531cdec32e44a2f14f30e22187a306c12086095069008226360742cf275c674abc5894efa3d5995152a9fb4abee24fe3f05bcc2c93e5bcac232848b04b2f7ce0c6b1fd49f623ed53e8d15874e3bc872c9d3ad1c954cc810c410d5be6f23ec965dc584853418cd8522bb05c3c08ac528c3c2f668bb43070dc28c311981c15be819c1b4b342c6d4ad50d73b38ffb4af45cbead9efdc033edce9751f1e61e2ffbf6511d91cb746ec6d65bc741275ad1343d39c8007135b3922024301ecfac4cb8c1bc54cbfd08194951e43fe4dd3f40b5f976331482baa101f7622a9ec8bc6f4ece842443a422a288157c1f99aa1ea8a18e5be7c3e21c4aa9500ef420256db84e0593e375f4417457f8aac2144929f941b11774b2042e12fb26b163e4c4312e53c7ec2c97bfecdf5665cf0e2fdebb896c2b33fa66d19c11ad11bd27bdcddbeee78a056d344335fdcbc55f1b3b3b494996ee408ee5804e03c05875ddf0c8c87eabd8635dbf06b44ddbe403c3fb5b2524e1ea431c4c75cd6b4caafd7289ee555db64af7bff547902c1e19269f2a289419425ec9602075693ba0f0ad238660c32aba01a68d0823ba5abb794f4ca7d083597bd6deb0916367270a8f942777c0e68bc80d88d98c149897963f36cd59bd179384b294a1fb427f8130218413e08d0014850639da1ae8b9b845369875b4ce1e83ff95e703fb77a4843bc6164bd14a23a1077b17cda5edd6099bc32a7ae14f8ada755fee74d01bbb3562e5edb57d2e5cc74b571eca8caf00d89ab05caeaf4c15a2a253e8f166cd8b6704eb0e88c73e2ba4ac82957ed214dfd78ee607edecbde0f7db33ac84eb21975311b53711dd77b470c863ef5f7c4a40b043c813d3584ab7f634d8ba21ed00b2b3d9533f7e322e8a7574378c57279913c1e36b1d4128d77329ab9b1abae3cc453a1a470169f7a7819aecd63dfb5ab22d244aee4d7f93380050477078ca14486ac141aa6265e212b612a8d6e66954a0c5daed2a887f5f060a64914204503cd6e03fb2e86dacbc493cdb70318f58e232232facbb997b4377c0728e775c061b4fd86729d1622bcf3b7881c7f3464b145f3d406a8f10614595d0ef130921a65adbb635b311f990e5a046a7d8cd3d7e0b433e28baa730c64234caa5a9740a0bc5ec30ae6a4b37d7dcd088c8dceeb73fd98b0ac3723038ffa3b958373363a5f11992c8c7cff99b94899dd24206f0d98b2a7728899f3aad8c3b4d3e27c94a99fc643057e1444210729af60b55ccd20826d9fff465284b2781858faa46fa2baf310eee46539efeb860ef38d4c0df6a2332d60be0a7172aa0e15677c1377fb1c1c1c2224496c8c082e94dff2389a52d1405989ad0b9c53d7b987b22165c2bdc789891362f4569e9897c890dedfb2e4cda2009b660c7dc7ec3e9bcf51b59abcb75993235e6221105b0650ee1d994406a3f59daeb7d15a25e9205f04e0ccd97b4dc3e1d162779efbe092ee22086a9088072f26df23d4402c0b4861b8b5a5cdb69d2bb515d4c93a12f357b6e40d83d94960b2ba747aea3ac45b8f3576cfa203f33d8cd3c8293deb33d349eaf1a7794b52981367d92c975cdc13d8e0574fa2d82119a8946b627b71a0e99886da1c3fb6b798c36784fbe53adb62c8b8d955b342343088e69558716fc9da80a8163d879090c210196650ac1915059fae796e5630d7284347cc84a02f39724fc532b1a8b4bbe539ee03ebcacaabc570c7e52a96b1903fc9d58b71e15bd589edaf566866d22b2af2f5318831adcf1dcdda35a5c801fa6541d793e2912608b241b5817439d016e439a487dd06e592e5ebd4767683141ce104d3d4f9fc9f6e319890263ea7bd70ea55fd91758920cebd6f0297b0dd3c5e20c25529c43eede54de73d5d8c88797d88fa86c3a6bebb0e5cb39891abd690fac5ab77e992ef9aab133ba0c2f5cfa0abc9bb080b3f5d52134334ad0dc3f4b11294efc62dbd99b3a14c5016197749ae7a5e394ba5f56c6dc1a79d3f806720028bb9568f16f7dc228e8f71c5cd70c09d10a2b17958946cf6905a433440ad12cc6b46ad89854cbc326a78b9400065bfc5830a57fdcdaf808286d4ac35d8a9e324aa77b72418bd235f1f471a5c2e8c401e87c66de8d878f90ff537e15518a193ea704785b544b4a5630b50a35372583d327981753bd4167100970a3752d24b4466480b4f0ca6bd26797107a90ff812b8402e670053e1b085d61ba3ca0deee59989ee0b4de2f65b4df75d41586de623959638d386a6389e29584e17fbe85d7079b8fd6fcfde769470b3902e9e2c7a955c5fc01cd915bff5ed95a86086241e84191c7a611d788b2d8b5ec000020aa85b5cf6fffd13111d29c84d125b1902ed706ddb0a58c8a96da1daab4c3aaf9d25844475f6b1c211336008dbbb0ed4d7c0286ee3dd9a1d1a8a4a6ea8f2c82a0547db02e5b3e2c3779e1c913a101bc87765c3b65b3466c9137881974917f0c2495ab38a4718a4bf140d58d47ec12594e0125d40d10f3cb17d4b5bc566ee6c30512cd90b8d1c910d5c79131410b22a9908a7aa9cbc1e547373586ae3c2daceb4851acadfb0e0e570371a31f53e5c1af9cb28fd31da00a2fc88b476cd33713c16a3554288e08a0dceac91e43defa701f57c7ff706986758b29cf86b06dc6ada7ff7761fbd0b219756737494e426ee4ef8881f871639ee6025280f2412c31afe2e87ae70075d14b6d782e20e58f422003ac362ba751d7919d047d4bba7a3eefcfe23abbd17abd2bf86969efd22d05f5d0c29bc057da9b29b88bcb99d60624239ea4afd83cb2e87fa2d6d44dd3b2143759d7445f04e106ab48441719916892af344696c2b5564f0749d31eba30d7e8bec4c33d70843c3f13a950f3b4a37b73d7206281849f83f14a2fd19c60f5b493df7b83133fd1d9e909ff9ef5483ccfe6cfa40bfc13cf80668d95c299c34318425ea23ec950b5ba9f127de5f50950c187e8894958505247e6bb8b79f1bbb96c39a076682b3244debfac39ae2d88cc5d32aebd9e2d8c9ffc56926931a243b4658b716f31e5b6811c688234128c1efc06f120165a95e8cb58da558d2e1fe268cae4a21b4eb9b19afcd93e276c2c5eb7746302de6511b7f63278d782f7a03126a2d86c26459ff2db4629054259f2ea275a4fe158e90d84bbab69183da3aeaad486133204b9be0aff49031448a1a6f789330da58a966e5c470ba673e9ea3bd644ed2d74eea7ad0cb27018f3f94dad3fa519fda7236ccd7ff1f1564d624c9fdcfbc769743c7ab20656777432f969ee787677301008898253840c6235828ad62eac1a05e7fba505b3e61d27d3495f79f9b851d9b7233017e690aea3974542ca9407fb34218b2254dfc2b760b34fbc243935a8887a3ba26fb5be4634b1ecc87378a3d5f7c309f49e478f0031b0fb8459e875ed7f1bdc246429c4e413418982aa50339b5995fa5b99668dc6db4bd4a374d634dee15dea62ae0c406c353b94b742baa0ce1a3d5ee5add454f10146e8ecf0dfabd7628a30895726f77832db87fd5741352629bd81245795ce3a71f3af33310c2f342ca1aebbeb6cf2dceb9a0117a3a4e627ac1c84c4c7a3c2770c211361f6e2c1a956dbfdc995e25f22736bcbd594b3446fc7a7a95621c6aeae1bd8e0eed2d7385eed72a7eb7869c3aa142643b56a45a1d4b09fb100b22a73ef0e50c4faa3fac67205702199b5a640fb0a56747df08c4e06da970c873df91a0217317ec08bee8c5349c9eeb9f46c802546707a435087ba75aca98543fcfbb1d03121be4798e6f6f84bf71e8d882ba58570f7d638c343448e1b6fb290455bb6efdf4356f3131028fea84b71e23b30b1e25de053bb816b623baea5acbf91f2805293eff3e7c0fbea94da59d1625659d7ae797338961b5795b6f753f76d5736220e9b5da00b8e8278ae6f131403447701c70e7cbeb19572bb56f04117ae6ba6b31f3b87e8a29e9283fcc88a4ec445fe673da441633be0be572c20136d9b7fdf700ce0db4acf3db6e88d24cb404ca319f68bb89c16e963bbb31f82b5000099e697359f7abf3eba9266feaf56506ff7cc87f5ad98b79716091ec2a7ef1cb28e4afc5775439fd36192606fc55fd9953aab4be1bebaf7bc7b3bde454bf3b33ee9b07945a040daa23478daccad2479be1bbc7acdff030b78963d9c29299e6b7eeca3a684aafc69f102e6a803ba591d0dcea99865838aabe729f6def6770e1c5652e569c6e62f3daf5b4f8044d3af0223dd793f3ecdcf036bbe35fcafedf36f671f6c73b2da8e70bfab0797b332b1f6fbdc88f02803692dfb50dfd9aabbff8fee4ea8dfbcc881e95acac83c32061a9e17eefe4028d1b62a3ee2746d6e1dc44805d3bcee7cbd41cc073557a71c0577bd82e9697aa332bab2085048c09639a8c92291c752d2262fc3abef14122a30d370cb7e24da03d893eec79925797c830653b430b305e0f798418d26e49db6d761d9c1d0b1829f4873429171ae9d6501855d6e10ec66fac96a50cbe2c81994782d2eec3c54ab6902d7bdb886b03e4246554eb2020d99c747d52f8c03351fe9dd7b9aa5fb21744781fcf3cfae7cb9e5320de4bc20c795d08f10866909e12191b62bfb89355528a4350189be80470f3336ebf3ed35a9e56f3b58176ec0fb46b61867665569fbfb45c47d74f14a68951cc13b57097f968992d60e3ce87af4048274fa6cee22ef5b692d6263d9768f519f3e10f5324f9a421cfaad87df00aa34965a0844827fda7c394ff3e531db75fc126134814ac4eed0bed89473400ea3316836f1d4621cc177fc6ef457cb3a9f0148a528548b72dd404ae0ae006dab2768e44633b28cff875e23ea9be2a3eacd9a8d851f7543ee8366013c842fec568796409ee84c7535a010225f0024217f2f783a7a03af4f5dee6a9b8f881d6dcc5bde93987b6338e926700770e4e3e192b70f49beb30be28a9a5f87b74f906088ab1e7614946fbf92589f9a403391d3db28fe4fd07d57ffb1720226575ae61ff93caa1dfd8397ebe19dad2cb03eef173206a98ff7e14d281632b1e0e08b279fd2bfc91521bcfe4a00272c15b9a926947d278df62c9597fcfc7512ae1e03daa9a8d528f76628327eb31094050adf1a49d4df7e27041a1a9cd0786e6b0a0ad1cdbb203ea49f24029ee3d3069f9c8c41cc68bc18a8c17c724e91e4205949631c536a6d70a44d241fcf925d76b06cb777efbb8819739e5024393aa40d41708ae7b225ec85a47a332279ea66bf9a09360d6b62d56c1facaebc1446b29fb1e339055978ab65df076482d86e1158aaf0e02cf7eaec6b847119a3b105d484628502ab2d4c0eedba0682b58b3afc41b8f61565aa82d4b058f3141a47efd7747ce1362d9f5ae01ac99d7ecddbbe58794f813f42bb22a13cfede5284c627faa1f0f81ebbb307db9cf4f905f587b0db57cc43cabdef0cf1bc56a5003cf15cabb467be33d5b6fc22fd237b01d81238a43c231af8e53ce06bbca1323ef87549c832f2ed5f17943df0d70e19719a64a89d77728e72b58d09aa55333a8b2b368f05acf0042a74c20d19566c4f9aae19eb3123e3fd7b0b8dc465cdf037806ed00cf0fef2fff4760208f51dc130750bd03463ce855b41f7f5d412e399e81b218700eabaf73a03d7c3cd1be9597612b70107ba220b55954b5d47b73f83c5f2e5d9ff55aa63c08d4035046962c14baf52763eed6a62aba3c9300a2c4c531667a9fb751bd74c4b8b87007838fcd24480a002aa6a72e81d729865a1a9e361720032772066a0af697b8902cbfdea16c996e0378df2f508cd0acbb04959dd83a6f0aa1bcb90fc49caaa2033191182b8f2d6ace10194f4a768e62166f5392c2f18ebf7d86646dd6ff243608b6ace02da991919145ab173ce121d07adc743d3caf48165a3f0de32d629098943344424ab9a2c65e1041a2146209641a3855a84ace49fa750ad3ad21df0114fe3a6c52d26d01be8e145928912a4e56577325543286a66cfcd9aec87bcac3a1c8a5ba7ffc84a44b39c8c6b504c6a78c4f716c11373282bff02c9b65f77ce3e2884b212cea7f081ceaff8f2825c0f9aa42d893298ec62ad02a24975a408f98951ede625cd6952857bfb7a6fa80dd92876d7acbec6f8469bf44fb5640ed2fa9c61a3cd2c2b013174f146e67daa3fea47c901d3648745941ac55e5a7141e6c603566cb23ccc8342462a583c8aee4a64d448ed615d6c55d0ad011f7f347822aac6d7e8ddccca20decb0c09c019351f81dc09d9439cfc4b51b5e3ed65c9253d800b2e3a9b6350298f9c4c9b8d6e8a9d2ce2344a14c39722e316645d09fe1b8e7dcefe17031821d7445fcade86e76450263192d66fd4e2d0a5c0b062979e821092531bf276680f2ed07428e8f3a076c5c8eb2860b3d9d75593abe897f6da7088764ec5060a92772d220a91a4cba5f2cd303e26a467f7c9153bb2730c50581a17d6cc681f06bacd0e010e59919892a5f301e5e3b70904fa41509b35d9c12e8f4df3905fbb5a7839bbbf9048a3396c3420ba896c1b025a97817c26fcd6992bada6767ff264976d562dc6f8f4acc79cad39812358cea4a7904964e4d0da05508a382dbe57b2b323f5254c3b31f4c83e801f09cb9fafc89769981375e881cea2cd8d22a8bb6a907b38fd00982bd54e716eeb7894c155354e958284b94e23ee7d857ed038eb81d008a4e2fb5262fc018c70579b7f8fed271bec28cee9dde7ebc1c52e087af11406eaed42d83a5717691b0172c0b7aefa54dee84c24ab5abb999bbe3789e4042e16c04c7704c2fed0cbc7fd424c91d713cfc8e64717d534186747a59c960c3f0342ace59ce89c06f890eaa441873762aa890c867bbe34f411c40afc95241e7747be41dadaa3e41f92c2d42ffdd6788ad3f16e4cf6d0368634e3564f98e7d44095c17a81cd33ac220a525b0a8192aac422291aa631040a9a6c335cb89718b3c8e90c4355a40dcbb0dce1151d07d8ea5df4fbfbc53a91fb626217cfa2d41c5ced8811e401ebb0d74b24281456c7318e97a5759336b88b5eaac6cfe49cb22d7b7fa0c86d5d2efbf091bad702821b236f5448e84e0335e2bfb7abe4dea22064d30008db404da8ab7bfb90e7b9ac2f416cf8e173c4100d1e6e0a4c56dc04e0626ed79ba3abee1ae48f3b34b8a895f98bdb1b31c2b2fbfe0abf40b09b7b4403f205571f77af5273f7166d12eec238225434721587ec040870effdda7acdc42f573e87882788c88794d148f78a8537f9955b18add9670a3aea603b85bdba1e1ba6060252375778d968acafc20ab57632bf97d8d9ad2c9553213a78a81deb46505486d2871acf125aab43c23255c3487ec355d901e97c6ec0a2d67457d74297aaaa0c4fe8ec1af94d5eabe7c1543cfc661a5235450f9396c8986ce87b0cfc3baa0318a60ecdfad4a3643a0df8318095979139756b205d1f6d7237ec0eb59145d2efe9c74143501d265b03fcbae8a97eb537fcae3ffc951e009ee50646a2cd4a1324a86a42c373a3c6bad33c08e514e4dc441794be0ed28d84bbe6e92eedd0d750e71feee8db2f40c63ec8f00bbf1ebfdfd0ddce743332cfaf7bdecb66e86a1f1f9f230ab8e93498ab60478d0e6c4328bf91b1b80d473d97144c952a45a2c372803d18210efbe4da92370ddc606ea8a8994fc1e95f3688f677c9d33cc8188699733bb71457aa13bad4eed96da933028db301fee6ab0497c24266eaa92f84d844deac129f86430e79bd458e646ae0bc0163c07e608fec94b2c23be61e58b04155d6449fba447af619aa6c239a45d988ddce956284a3c991cbe3573eaff42b9915acbbf32b8e48541255a6f31b961cb009dbed1481235b06d6529537211f3a09de5685033994ff3700ba519004eaa48bbad5de724acbd91a3dd31fc73e6da9ee46d6f677dd9680e4818448e5cf77f8663f1d7c5dacf9a8138564b4a141b81f640743099a179ab102b85edc7de3600dd7cc261e75123f0898146d81a95b2373faae96bb5f141f97eb5f6144d755483eb145f91d6205007f95d3fa0ccf7f10c8ef1c907fc4f3f7b350e8eebb13cf5bab134db34a47357ceb416ede275622589bf12b28dca6cb522368d773330b78a8f67849026eb5f86c80ecb625d7aa2ebd9d9d33571f4eb150f7f059b08cc45bed8e6cbccfe1316c7c09752006d370cdce2e0aa2783c591f9c64cd9c9435dabc604995e2e86d23dba4375c06a9e065a3fe1276c94234e1ca569abcbd29dad505ab596544129b79cfe1ac4c5e06370a8c84780bcf3ec3cf31b41d5dd813d39751c8b8e88417f670ecd1f12ca2770b07f607f298f51e37bf5ee26cf431c92e51444a58fb7b0d93186c2f2e09f34a52ff790551d3de39dd6081bdc5db9aa65a8628da162e34608cec288c1cf667da41afb597af46041355cbd1cdef3aba0934a5b6c85c68255dc7e343edfa581c8530e09f4a73bd17844554333d9a91424338a7cfff127f8d2bddd4df4637f98398427cb79ea8031ae399442bf3ab6e88a82f95336fa4ef3f4742b598e9fc1c1786003e9481abdffe819d6242260437b04443723239b3a8bdfae2f1c34b5f96ab39babe8c55bbfde40781a953aca6cc39892bc982215bce7a951d2e6f4595b9d925cf8cf26f0223b786b32c3b09f4b18af625af2bcf7085ea05b69fb115d900412fc264cbee728c77d9a57f8a90244a3e28fc38d0eeee7e9a4980e52b2172bde8f607208a2be344187ce13dd451912ac239d703499de7d257641dd12f977047fafad6f53ed98d7b38d180fd348d20b6d964c8787f7f8690f9196431e2d87748e9b265b485379e219e16989785a2fc4fbfe5ac166ef66cda1fde7c6261cd974ca34cdc7c1048578c3a9792ed3f7688c32cd0970f994710b2ab9f27073ec8ad83170131e0c9529d2c81411d1c36050a54e42000c8b4f7c538c38fe73bcf7bd3525597639343d060e9a90598ba13455fdef2a6bbe719939ccabf240f6734003cac96fc60ceece5ac7b9cd308d37f692d945cf1c1e45aa11b5056ffcf1516bb2ebd348c637b9ef9ee80dffff0ebeb25951c4870c50dd69cfe50fc72f0141269face101ff9c3cc6d92142e81be8fce0ca858cbd790468bdd2bcc4f759dd5bb506546efd99cd6384737e01d1b1c0387e218dd84c94995d7e78eea77476f0aad9c54cb965f0a325c214622c8151b5bc0fc58c1892c1ca29639fc1c1747247aad3b698b5270ca385e7651732a2079a41e9bacbd4c74f92cb8d763f277997021f7a87abef1f93f8d557ea71d513222b6e00c1be4527f3c4618fa68d6536cb8bffa0306db5c0975a73b9a492aac263a0a64ca4a6c0c0cbf3e3e6eb4ebbf5ce0658becc4e774f56eb6adb28b811776fabe828cc6075333749a7a7ef0b6ec4e1cba7a2242e53d81e9ad5f10110d9dc02ae2e2bcd6463d6a26491f57616f608d1125c7798f3598b4983f64854cb4d3926b8a5789ea4736ee3e82fb268fca15f31c68fd7da1d9e7c8060cc737b3cc55ec69974d85cef378320412e8389b422be16b831fbbddf1807d2f9dfebb623990ceb61ff24414aa10075af3835dddb608b0b01da4745c716bfc3f1411dcf0895726363f0b799e0a4307ff3e507ed597a3601d8c2cb7f486c700ba6c299d6470a60a6d39f236fb336b5ebad4d4501f45b71dc5ec50e5d4e139ea58a1c7d12d800cc000b18a6d990d22a65632e98625b020ad62dbbaf2758e92b65f8cc7f966a5cf65edbe06df3fcfff4118f925c5cfc53b8d79f9fa8ad69e8bdefade6de54a31750ac8ee086f3bb67fa61a0a4de47c0368ef8384104a061ecae8db220a948423685e7607afbab6c16b4926cc2aca249c5be1b506f11d29c54d5c6bcab34f0c1620e85733f090d34e9b489ac1e07042f7392ca5f99af968d41cb631bfe6dff9669ce6904917be61d710d412b817154cceb168626d8610bf9e4f339c96fc1979b4d1f6ec2d3e2dedcd6881d6e1d08f998c76216e711ab64a0534ba291dc3a49350a05b759e88dd306b0dc76496cd93b8be3961beea5cce0459be6b88438f9932528627f6c5f402db9fb9386d2804fbc4c3f2f0eb7c539774d4b134ff4d8396484d60df538e0dfb14125cf13a0cecf206e1ba570b2c53c5da4f6406c6459f141f6ea102d26840a3306057fe6870304b1c2fbf5274a3c03f9da4b08a75e244c695b5c10d11e1dee15f8d696c563076740b86634aaa4fa90e64456a7da40b600d20e9c0b0339ef829ca7a6a6df08c2bc1a970507a275785d415cf255b78f9534d6dfac0f04ba5d571d394f25caf98e5458c3d669e5fb9237b67e4599e76eaad90660723b2ec6c2a1debb2eeb36b11cc8a6d4d9ef7563ed8252dff49618280ec2c6f6ff4862ad3124edeae3e3d8c5a08d94b74e175356bba42e05f9e28d68c5376eb86c3cf4e4197e8692c6cc08834f23adf4c42ed606214997d877196c1addca4361dff5a879c014d8f82ea7186464a6bbf87eb31643a624cfd0eca55fec3306e7d3b3ca61aa0a417eaa27c84010b8127bcc889f169d33bf9f17af41998a39a73e051d5e4f563e9aca2bea58110b1a98aa03ebaa8c10a9d7657826afc289dc68237c233b7de4a60c8f96ed2c6c07c7b069030578d14f820c3f65a92ac2cb172b9709b11772ac6a0d48a2b0450399c2ef330e78ce0cd90209710d262cc1724f2e064c26d6067fc414d5d566387909706f3fc336d4889fca5da4599979db3b6aa16d575a84c2d96ff8785471fec7fc16194504d4b0a1a11a3dfabc7da5f304f311cbcffef90dc0750fb16f6b87c0d422de4ced0add14988fc3e4868dbbd4b3f40978f0cf313287ca5891c334409d7f3f5a8f5e48f8f4bb9967a5b2b3eb0626e2df3d56e4e93406d9f4b2cf0229f17910b927dd414e0c8696a740d264bff56c449da8ae6ad80c058f9ab172d9563374395b13e80bbe34b74945efca8261d26f5893d7e462dd98d6ce1c68702239b5cedd61befa708f267d99865a6dfa6d0f0f9a7f4b246e533800229cb0c53940b21210d37a2ef4b2c986fd463db64b6ae60e705d326126d8db3044b5a808014bb4d6ad77cee71223540ea50a52b090cfbadbe045e79edcefeb32b909d043e341b4b84d360cb608b6d21a693a88a812a383449bb33211fd97d25fb467c427e75cb1471371c2748df64a581f7835f10208bca161bad5e3f21d122fd39f8d3c1fa85a17beb085a86e2de42d07c8771d3de907d4ca5df317e0854c21424d4a5ce986dab18e8caf035b8895653d891dd2b4fcb9a5f541858c13909eaf8b7ca895ed805a0018b72576c8075c0dd80c7b51bf5fb9bd2c1ea33174653abb68f328ff09d3ac84b1449c88780e92c320205f5a89207c67071abbe5ef29f9e033c06505cb05ff0d08ff6a81e85cbfb4ba8da092eb0100c5f471897f1d8dc070ebfb2a4700cd04d1c4fb96828f32f98184e66f85cbad900da8a5347db3007984401a1f4b18feab4e8281915db8df9ac74cd05406986fb93ef011a6c3bd2cf14b1cc57ee02e381bdf410c52038a133cdef1956a9fb33e6053af04321562fb9cd05a9ef11418dd8ca02e405544e2f741d564dc2c3a95bd3a5947b78e67a67809fe8f7797c848c4e6d013c922b204c7a5f21ab86a2974f806e62f6c7fb18a0395780cca1a5a922f9f0d6f0cb5cffe28056711b91a57661bd891cd6469d083ba5ded2f9ce61a5ab352a0528d4c85360e306cdcf756f75924af6872dc3dc27bf681f2fa2b605dc56a8a50b116e9eb94dd2c07c87d28f7608e18c456e3ecba50d2a74b175ce1b4b517e52be579870420d0bfe5d57dfa232ddcd28fecd65d46d8ff110b8b7783a32629fb1609900ce050432c5fc38004d52995daadfbf2d6b7a83fec354aa4c473d4ee397df7e58e16ad99e992d33c1cfd45a2cbf125efa1a3b42cc2fcf1143b543286e08dc5d1519cd92e34911a8a0c18a08d5bc73f8cb4c1c90268d2f18c42a5c4628d28725de1aaa5197a3dfb7585d0bcdab1b0f3e47a1822effcd4c8232999e473c0acb3cfc9c2cc5c24181d9dbe08c394a39c6fc8e914ab6fb64d8c47fe3bc3e5d600a366ce915c100442aa32ae8d0a8f4e8a07d7755856855dc8acc156c5f9156cbb354ea7957a66384c270c7a2f838bae5b1be949a6bb17523a7ed884ea7a04107d31f53d28fe5ce48f73362c4cd2ec58e35ff4342f77784cd0f6391dadb4e65aaa84da333d12200642dc9487983157e3606315b3930b8ee0908eac4eb86a14d233acfad615a025a362bbbe8ad5ef013091c7442990f969e1221de116ff1e2222a9a2335525ce17b6c50e866076f0fa82cfa6bdf59b83244065f5046b4f927bfba23f4f32ad12ca91873aca31ae0cb0ab6b06e39545d206622470584c8bdb32e8305b89b31afd3210b9dcbef1fa58586a02d9e8e7e51adb148b6abb222feb495b878bd3c4edf6e10cd16f5ce12d98cb614ebd2ba72cd8ef6fea78cc61d25642ff94b4f32ef2a61484d042bb35bcf28952d5e4d899684ca74868b1f282c5668b8b0081ba393afc535910b8aebe3eb9bcc333f75d2a43477392ffaf08e47d6fbf25f5439e04e6465c963a93519150564071e29f85987b142c23641dab491f0d6d7587f30ae35d8e52a41735cf25aef4e06eabe637d135e04529c4a731a8e8d72cabf75c223574723f92bf382149311de7eb8de4064bae4f1340050349426417abf22f8abfad5a7902d0e1124c926ec11f1427307567d3ea071084231e3376dfc63e0b2bebb1d82402560c786e89a82428f462700edf5a8f54d5763a004277a8ac471af69c92340e5b0a71a29cd65cc5225821a2c25c63b8f537083a6f9aa51ccc39aa9e249eed1d28d51ab3b1a7de02ddeecdb64415546ef79ba11f1cb822bf5e0728558edcf4c6224890589fa8355d358308fc4000afdd220ae97d96ed5b0f6482fe9cfd241970883b294986c4526ebc9d3614b7155945622d9128bb19ca4fc0e0a0e5bb9fc6588364f69fe516e037fcdd7e09c3321164cca0987bb728105a45f77fbe69190290dd2b4dd55518f409b99294fdc1521e4eb73130a8bbca31f21bbb18fac15ee5e832b91151dab42e23ec6c945d66602945c1da099f76df48f723f2540d0cc3cbdb77270247af9f862254518ce4768e72d70195404173e0193f64bd6a0e2c8636b7b451fd97b596ca10173d272258e2e388fa0adf6b35829cb52d7732cac53dec65795337c72bdc16fa435f6f44d500a230dcfa83ae0f8063e04834cbc43b12df8bddb7f090575a99ce8ade6449deec189f56bf40233fab99eae347c9209c6236abd412dec9f6fdad806fc5e6e4edb10aadb6e312fd138ebcc2cd35cd4ead61d09b2d19ea52c252b1de25821f079369dd7da8e2e02d12a8ea2899d4bf9db3bb82859ba123039f7c4c52da7032a600b990fd27c06ca537eab502e79e66853a57bf69c818ec7ae1a209e52ac9f62aeab99b10caa936240e6adb584bc2661b31eb096409409adaf734e822d3c9bf27444cdfeacb270b94279d9ebdb1a854763adb123aeeee73865eb76fb5f831c3fc877db7b43d091cf1b800c634cb2ead84447fe8179061803e120c80206dea0becf142dfdb42c0632081ce6e239ee307dab8b25aa3038b7813e87feb6c8a33f2d80f612ceee9936b0e17fac4bcb8f57f3764815e0d9ffeb0595380f5b611484fc76c46fc318666bde8f2c951cf9c009251b34b14bb6b0458bcf02dbf647046f04a3b8373324ca66d5a89bf4c1da2ecdf1101bf945d7f2260fa18afe0374909f0969efaf2e2fa870b8e39a4a93009e12f110dd1d94c9624ef70009cd82bc0a081286be6bd6661808c201b0ba79748f4a524a8d5c761e7c53c660426143735c755875b5f78af8a4bccd818e4eb350ba07bd3cf0047902f6c54ec72f31c1a91a176fd496423f2331a53b0b25f18f5b1cc0d32ed38d8aec257a6d42f9c18122c27ca70f4153b9d9c83167eca479551259be32dd0afe8cf155bb878954907fe29a6e3ac46596c0e311ca4a73ff5a5932a27e8a9804a0b6ff985a60417f30aa901096b66088c8118d0287dd4b178b32e83a21e4cba7e05b451a6718464f26b25d135dd10efb0c0cbca6d78d390e677c4a23326b1a7f508fb7380c998be657a784a8812df91a670b2402ae45ff9107d20110866c626fea20f9be145e07771a90dd2077dd4b9ae24b353c8dc584d738a28f2edf6c8bf6eb57e4a347710478cc8a5d3fd6462466d6f0a8416ba2e68eb9c6f7263b3e1b07fcb679ed64835d790134ca78b9d9877b45cf8dd5740bd3ee7daeb29e06d6f89f4577f0ede3fdaf18192bdce9350188326af457484e85ac90bac3439993350868421a8354d7e769602003f9fb4757aa824bc9a4d32a4925c3664d3d64a872c10251fc1be7f1595276dd40e9303f7bb670f25ce8143e116977b9874ab982ed2cf2569deb6868add5550548dab4fd51794387f1eb1ece4cdb6b8cccbb0c4a9c189884564762dcebada478df545c27e524de059bd534ca9fd1268053347b2a5306330fa06328b4a441572994e2e98b85488b6bdc8b646487458db8a1aa27423c5bcabd055d691ce3ee0dee3627619bdc78e36d0951f5273d4e5e022fd8f9fe0522e1365ef19b16d1f3f51587d9f01fefbe96981c0f10f5cc09b9571dcdcbadda7e922d1ce8d9473c85bf0474ca0b01c455c0d92bd01af3143e014ec43edd8582805cea0cdddef64033a2ded24c3a10d6a025fbeec33e8c0a670f3742f02519f62a8e884755a9291d550f32405d12401a8c51b1c3904129553b60c78add82d090fc4876e5932bc9c2f007b4aac16b8d0d13a68acd0b85afa2f3c50e2472cbfc5b896f556b043e7a88a9392dda8280b7708454416f0cb66a0dc20697892ae4a1b94077e1bcf226a3ee3f9b7d0b4552ef6e3d2020751b4e580c7fb47c4ed80b079185d194d0f036410bbdf9b597f4661c14c847ab912f758b35dff883dd25926d9162fc8354c2ab02f6c9e8de4ebcb891870203d6f83d2c7f7df13ddbf9a462fd9dfae57a1ce5bdbbb178775eac92553142c331d188bd5f3378c836d3542afe73f5a904ebbbe77457636126ebbaaea55ed5289f6ba40a0ffa781faa0e31a3ddf768a0ebb781d6076b1426918e13fe5f4ededdcb0ed8c48dc94f36d06039919edc07ee23e3d1365c78b5e3da6cda4c817b6d68d6190c72138bbb8c5746713875d788900a22abad2f05f9bc64b9b4e0f3d14cc50848264e844237cf3a65e03026d9c52173a7c5752344c4e277479b6a899bfa2d4adec1c8d9fa178037e63303efd3fb72a0fb221c44bacbf3dbcab0e17ff2d74d98391ae97f355864482ab386c471cf39a9938eb3a5b45075683cb6b429be1f476f827310459f855aeabf3352167dfc2eade88d73587b7dd22e26b6420a00162bdb1a873ba91c1a8a886b89e8a76ea5f63e24b964b78ab00572d0617c33e90880912d4c1d761d1402c4446befe0b10ee4db35fbb12ff010651d794f71e1f516478ae1abbe2d0eb541313a6f04784c3ad71b521f7daaeae4fd4c64a37ea13fdcac0f2456552a120dcd6f20d0e6b1b866fa87dca0b83e4dc83d760032392cc4daacf0556e1cba3cc300d83473fc0dc50c292d2211af29f48c3f3beb975ff85c6f8a2dd40a66649410fe16951ad319770d169cbfd70b1147b9ef75757e9163830b95aa8554bab77289c7cffa627eb8ae2295e11040bfa1117ae21356f5a0672b66a0caa0fb5a3095ef7f39a4d7b062343cf0fed5b105ca5770ccb55297c833bdfe127911467b628acb95a0904ebcda42afff3d106045f2e5c6da62e47d3b25547de854c59d3286cce9946066eb36f20c453fdddad7fc344e8e2fbd2f5242e99588c6d1e788f2e424c0c5f80988cafbc621c3b86d2d0c794f51deb8fc0293651585a20119da4981e92821c32519e720cf961bfa5ea28bef0c5e170fdad5e676364729f5f5c12c3b132c7186cacd244362572b0daadb87a577c1552c3cb48ab32221a49ce08fba63756e28d0f7755ffe77c372c719e6d8e083538637c4bdf58492016cd975907060159c1181497933da171dec868088b3f6c3c3724618a5c02bb72a37cbd85a9111ff073e34b83579fb9b333edd6369fd71c3b894b62d18d12afff317716ba0cbaf0e8f983d6509800b7d1713310f38310e0f89a92cecef1faee59271b9939f91526a651a609929dbe985ebd6220bf23c1210b5698cb4bce50e0d3a1703b5c9666d90c0392d4de8be03c2d67d4bc9e29fafb49ccfcb2080da7980d7dfb3a08ddc26fcfe855b4e50fc4922666bf7bd7a8b4d0557f6f1e787df76788d85ac6c8cf46f6e7141825bf7ebe1247980731440b5d462787c8b8228134af96735052818b150124d1cadaeec3ea0d416bb1e7f3450bba3b736aa8b62d0e1ddcd47cb6dc4eb81f56923580b3e4de2409f3c3d69d4f71872f5a4046ac8977f35e447215d95f5fb9d052ce432ee89b3e68c4ebee1e796e205182183473e30e11e28542f0ef06e115681a011ef13290db69b5ade9b47f16e45b9cba40d493bdf755b2ec9162dc7fc6bae3065b8acf9bc6fb735f9b55e5ed7df742b17d7129c3b48dc641ad43817e4121ee15eaf24e41e39170d85b34caaf12054f4f9585fb61ecd079c096ecdbc18d867173ff6e287876f562cb17d3f0840227f432bf16345478d228576f968ce378ab474318e77a9e532524581f41568a3fb92bfcb28b5ad319e45bfd5c151bea2697e24e33873713824a975ce266e706c71cd195266d6d5321ab4b9c68a1c863fe8154fba3f5736a75518ff3b073cf34061d30d8ac8106a337e7390626c7b63d531a52c1c82f556aa375e3e9164aed70da7cbe682008d699a6149f7d492ccd25a2732fc9919b9d0e9e37b894f55b777e51a1a906f0fe531d8e82ef2362fb838ea8ce77269b07e9dff3d78d124aafd9b0741d5c7f785c71bf40189ab8db29a065ebb233516424bfeaf1448cc8f0b8c46fc4024a77fa235623296a883db4272c0159457a19ebb2e2e5007f793959fcf92537ea5b5fe44fbe8dac9f111723d8f467d16f4fbc4489bf1970c3b59fd2ca07a174754e3579f3a84e527b0e7c14a7a7bcadfcf8f97dac05aed7af8fecb8bfcc731d0c0dbd9187ad1bf1128a74de383b668b001724dd560957610aa47685ca3e0314c7605cffefcb5b3ba3f78c30121973835447fd7e8ae4a9c4916ee1169bcfbe9bf3576e502127eb93a9e671c52e9b225a35874b963eca5537012ce6336bec22ed6ab32a4ae38428c32e60503752cfeed5fe12b0c996981253edda7b8140ff05bd7e134ef77b4277a0e0a6a6cfddfba336920156503472f124b9af4cdee1ce78ff32d2a9ea32d63e5ef189fc10907833bc350bd3f5a89fdc6f667a7335ce14b46146852af4f01291f79676a0d9cbe4d48e23967dae62eaff3a26f34fcdddfdb5dda4d47a26e64a7f48aec3f9e62a3c670cb77516fea21c65e522856a91df42b3f833ddc3b6cbf7781f45234c34a7db136ba088da38b96aa36d83d14cf8a45ee30718643330deb3ce25b9316ea10b30f436ff92d0d4868e4dcc7703d3fb5ace6708f8bfe18cb2c5f6ff03acb850a9de05fc865736bf3e2582ee67a7d3ba39197653d80c736bdf5c2f2f761cb09469e3869913f19613b5116219db94ba50caa125eb09766ff0ca729c05e1cdf9479cf3fc26496f1be148413d7aad4b0792a7e77e1e83be86a33f699f15199bddafeb2498042a1a6d96548b24a1952da668085890672c036e62407b4a5c7656ee1009fc3e779fb050dda9b91d9afa91285b96a7153b3fb47a1afdd246d23aa04d233c04f9c0ff8ae08b84274a78bfecf513b26f59d43ae45ab2982f95df7e0b17f9a229c6cecc425cad1542373cd70194bbe02a691428fa5c2d4e290880aa04a108ea96ed1dcb0c368c328946ec6d51a50426b13d9395ed57395dba619de1430a5013cecd3a634b7742a078c5b21db904b223e5159a5796884ad2482de06531f33b0f9d2167df806de4c1883aabf46f440fb1e7900ce081ae1724242ab1f860bf8b39f3885d01a773ead932756bd0cbe5914eb8d9de3a34f153aaee1cb81bbb5e4ac40e1b719b10fc036ceca83b89c035cce592c18cad8a690f349f27bf4befafb9174c2a42e5618b2e0d995857dda92cb4422a007aaa860050472055370df381d48bd281db4ff4faa3f129782fee76f9afd81d98331ef764a79b94af7c1f9cf99c40a30184f223ba9e5525bf5f472ccf9baa276f2b3d8f33b0e3fffe19dc24f7aefd817a2616858bc408f01d25c27509d50146947f207c07845e9dad96066603ed184a3c896d56718622e7e4dab200e4908d5d615ffad3c93631bb3e524eaa7a869241e66841815be04841165a0b359dd7da0288f07a90905c06ceb0cdf0cf0b92302fb052d7905cbe6f49a9b7e69ca878e20e22786a1ee37d681d81ce2eeb482676fc2b6f07e8d1afc821cffb064f7ab75b27f2e23c9d4bc2e9eb0ad54b5eca0b76440bf9086b21e049a8697df88b3b5b90e3622eb741fba87f082ebdb48f52b0a548c055618514706ab9c12405e88e81fdff108df25aaed866b986dedc8fcece4baa8f545909a8a116e9a297502dba45f2271c16c1712f936ea825305c44fc3c61e13af4ee70ecd4ffd4cfc300384126aa58236f236a106c683ae6c8c29256210033bcf53c6b0afe239b013b6b0ec8f95c2bd251aeacf93b78e66abfbd783665f0f9ae928ec1436cdae5c4b12a022a41ef2f1d781efecdf2a3201d79eb911c7be701677dcd0e7decb84be943722a329f8c23c1871a4e9aaad9b7678098be55f779621428c6cf0b2591af3bc4752e2e4cd8056c6986fcac6475b5b55e6416e79cb9225d48caa0aebd452a67d2f3b5cf1f909d7ce6473942b2854685bcc5e843b4cf1f92c0e89a142a7bbe7356c7446fb79a37a8024d1b9d890a31ecc84c8bc7e48190117cbd23cc432f3468251bb8c5f28c25a0a7f89dc14cbcb67ddccc6b927625eca55db554432667df233ae71eb1207033efcc5de6005a922f15f558d26573d01305b2c0b3c26f0930ea073ed0c12518534d23e382b9b1e72f2adf830fdb0e39446170b7ceda02902a71047331744a414f04bfd8ecaccea1b8fa09b0258f8d303113a1e093f9e3f3d226c205f58f1fdc66e8ac88bee6ff438e493ea4a8a4f383d79b3b379d975f793ea828d93aef83d146e4c4d009b7aa7f1f38e830b779228a2f0a2fc48c2a7775e2dcecea06b8f7f01e8fd14bf43a26d32c96d73a64c47c9d72c7624684207391a61022710d86026dfd62bc63a91dc59058f6edc985eab111625261a4be62f6f83d907a05816bc031d981dd2b332a8453f0ada368c032d6039d5ce3846e3ebadb0ecbbf4916a4db5de27ffb29d98c6ae191ceb95e673566333ea776912fe487e458abae877533116c62c53be66c32bbaa0cca0989f57aa32844c6fddd65c583ce10e4f14014118e537b4faffb1408563076a2f60b53c7d7b27d184702f57eaa4e90ef779efa56e10f1868b81b3d68e65ccd99b84b8efde714abdf73c8e1e9eb2cce6dc0391f42c6b7af9912ab5eed947c2d2805023be21a00d7b2f9ca8c44bea21a33e75b5eb46d8c7ab4676571a7546a3cb71dc2d1c6f153b9b459bff631187f81dbac55798b6c06156d5e6457390a3c8fa9dc84e83881be6e5c0b3b0865d2ad1871621847bc67f5373bf7e179e28efb93b86bdadb05981fbf693414253385cf9f67bb798b7322a8c149969852090560e8c03c99dd6e3f3a169f1fd8713dd7e20b6f4d905b5713c7a15079e51ac2f1407d369df43a650b5234e18888458ac1c5f093af404fae7ad02196944b0be02151b712063e4eea89c176bc92b4e472fe95840b2f8166213e4e1dbb9682e890f7eb5a7ed942b7579ed4b2660b9004f2cf7aa820ad3b5a0b7e532cdbbdc25a6082f12627aa1955afabb5bb39212ee25cf63c7cefdbc1cdd97c436b69f6ed491b60b79cba39b161b6ee238ee8e28e45226664bd068cb3beb8665ed308c032caf122f753c4763b96dc12df1098839ba3a4e20d8e41f0e09db4be94650217c6c59f511359bbc688bca40d9d5f43fb55bb04c73e6aa58ff33c4d5edd816af9eddd98a93f478a74fc19ca238bc196be6b6d833e1345ce507c387668848bdd7a9640e9234e9ab59b7424abe979900a59c37f8bdb46460c459179abe248edba3cc2bf5a3e093965f50d60d82885b30b9c95e9a44d74a248e914b6976bbdb56e9c21e39f4a9d7cbd90bdb0f32b90ff8f9fde7ade47f3c4d5c5bff50f73957edf0854b4fcfc37b07153b9b56a2c086a877e96182ae9875b9ab135b1e2c3f44ca7fd744d0232940cdf0686ffc8ec418217393e012d228e402718c8c2ef3eb3bccc70fd54ccec14f9b0d88a46abfeb83318097655c0f3760198d67a4edaec79f7022e3b678d5a2d50b5cfd31a9c010fa85b1f93fe8f2e6416d39d538f20ac17d30d3684b36ea5c8285a4b0cc955d1d38e86a6f9f8883819a58810357bd6b09c24dfb365ac8be397aee3776840cb8ed5645f98d40afef7d0e10375d851da50cd1f7d0209cc0970bb1e4914c371a61231490a5fa6532fa84a0c10550006d5d6278e1de38af4541cd0fc64bb382009098c5cfcdaafe3dfe8e1a4ded9bc066a687bf4d87dd90cfa07ce3c202f31b9b0510d0c6edfea6a592a038e5e1f32033672f53ad9ae612bd07c20487ab726276ef6126801f1b31f15ac1007ef7ef59f937bbdd7a2e8af741fc7380cbe617cabfd8508f4380f7813ee3c87ac8a1ae24ae9bb23272489fd7f1c3f0891bb494840595e3b809cd973ddf4fbc6be974cd0534a2f25e1fc0e80c6d1c88779f7523c7563be51c530eac914da18fb9779e0afe178d4cd96835a25dc308538ac45b8d6dba886f77d91d29f49a00cbb0c1654d3bc6f093666525da17e111626b7ee538a81465b034e6c0280d68dee3fc4abc563c9a1c13df26c13262a009c88dc0d07c7b67765d37ea659474815255b0184b6dc82e10490c9e652b50b9a92fc77402e147c7962590b3acf7506a4fa92c35f97435599adeef66d90fd9303ac2f3b8da38a486543faa7a632ea54c5bec4726387ec28a47d74dfc56f77038fcaad99a73924fe565782017698de5f12c4a453fafdb58e4f3df2c9950870d067d7286f35aae7e6f41a3109ae93fea5befdbf402c6a47ada6cfa7ea677503186204c37c6e939dfccdbab6cdd89e10adc17aa4ddd4f11f938b3eb4b4295e58b06f930b7063cc426a43ff8f453051d15f920c2b395bbd5545086a64982a35b09f3b92feba1d52e9e9f4b2710b88745995d3698cd3e29d3e2a8b316b8c71c7afffec210180c2a807b97fddfb8880270d1fe6df3d4341b292369b13be4c4b3de1c7dd87bc9f79d3aa25eb80a632d742e20da44a8c203ad4829fb3742217c9845fb348eb74673f18461f15881827ff158396d7a52fa2c815dd3edd111ce2b9c2d261a73db7e1da3ca11dbe09f8ff4adc6a13db4b57e984a74e4e34d66f9b6ee74b5704646c96a68500baeffe335a614d4c137c23ffe819dd6a3535caeb37061796dd9f0c1fa51c35935148201e95ea9446e20862c77175b16714f60427616b1df6c80b7d704751282e01de802e67126844d0f9fd4e9808ca42c4bb336f69298e28850780a265cc5aa6a1374ba52e7ec4cd16dae151ebe8e2983ae928e0c27512dbaf296f2909485c103e405cdac9d2944bb4aa15534e6c1c294dab7559e19adf0154dc881c01f1b7f46d45a7a050e8fca66138dd50b8fe44fb7a0e3734634a8f7cc88f7102925508d7edfa03d7302bf9e88aa4d6a9fb6b57110f2abeddfce67e619c32ecf65bd1939489144c6827220c922aa7d5f20f662cdcb3156128baaa17879ce8119d205b807d7b922d7ee0a2d53e796b391d6db590b8aa278ed8314d14b23a141d8ad70215f75a3bfb0e8cb7146e19ff63d9cebaf106f80e0f2f95675fe5295ee8ce2168331b91a1882743ad41bd42490ceee3202170e926e1394aabe5bd51361e3d12aa4dde2d1415af3fe1f1ada89b43074f1945626347bcfc49c2a99bac1d3f7ee05db62ba4da8a607481ade6194c06b1342e4cc6f86272d5f2ec59955879f7f979e080e04df506a12d4110b5203b73837d0ee158979941d664424a3908962265519522a2feb67bf7214cebe8b56053484104a0c76aec37a7874bd9b9ded7d4a8799ccae32540ce20561468f9c2757a9674eb6f0b403aab29be9dd7c6f7cbec0fdebe8f10ced2ef208fe3ee67bd05a550fe5585d5419ab7afe34dc6e401a2dbd99551eb37ff610d93a2020251c7d9057058e74a2f03e9d8b5b22b3eccaa655ac34eae93bafbfeb5c75d6b848b857210bdf421fa35d1598f333d8bcfa0b1dac16a0083188a9c57dc595fb0876382b8fdb75a024dd5bb6297b4e85b5f514086afe0e8f5219d57956651e6b681b375a043921f37a4c6cbb0ed028b65d576427378a2b469ca63dab5736e0e8531fc9d30cce69f60d47fe7238f6828529adc7be610c2c77454f9f0626c405876922e98f7afddda8788146eaf464f7f6070f30dda54eb6459305b3e8a909420efab40f0a391717eec4c4d79b0455eb3dac957bef7262c8717f64ba9b4760daca0f615b02aa9947ab88f15262587ae101dd572f7bfe7a366dde6c255fe656940f002c26a89bfb57c5281b00b6f2f1c6a4c66233a0e76a0a71af8057e3ca490f7fe5eed8d86141a163d7c75bcd9694feb57367c962b88a7023cc120a0338383ffc6b2f57cabf38acbb5f2991a63b7d076e095c63c253fdae1c117accc0dd32b41ae59a7f43530484a64734f614c4d44ca2c1cd1f4582d4883a3780d1c3309237b925ce598a911c535f90a113021096102cf8c5fedb98cb0e18c6e2a634f384aab15597a69ad498f27a5cb89ad1322240382c99f41df5a6606d325c94a66b6126fe8d12d112e6c1579bac18bd2bb1472ff3dd2ed996f1a9245fdbc4573832955f5580ddfc14cf0d0413b4e7b5d6dd064a4644e1b19af9b3cbde224e1b07782ca83b6c372a68f30293e1f931fc4a4e2501d5343d365c1840615492a53de4f4522fbd1e34db2d61ce82e557440ce1513557a9ba60b46ca86ed056df852b09b7f02f3667210b1dc2184a341aaeafbbed52073a0659ee54461b3642a6c9489d83da33b54357e6f41817e83da114460f29a98050810decc3d76784664c84a3e2359bd29c402bae8a874ac1180591e6d2862612b99bea90eb4f85ee885c1806b04dd16c2bc3123da52523b3dc309d3c971dfb79bada0a3a0e1cff56ee512bba05b9f6ac72e1ad2cdd356cd99cffbb8fba80cd28562d79873a3c06d52aab30d7aea1c930560778b936a65540fe49ca6ca76859c4de1223f4cff16c374dfbf2470c8db4ef3a70859e5864d2288facba62e0536ba24428c7e928e1dde212709a2d5be4dc6d641cf9f739c42a5df4b4a626b9d3ce887fd28e45333c3fb31b019773a3891d0ef3d516c7bc0986f5ee6a2be9d54ad092aa1178f46c2ba90919c9241585e78df4b4006a89ad16ebfa438af6fb90fa2e4ad0261bc1c946e75e26cf6a5dfeaea56b28d42075aaf4ba46887e12656d9436679f7ea4e674a6823b175888f13476ecfd3f5472e80144e4470224b9c3f87f2820b671a814903ee27616f2ab34420b403efbf41688b1c51d88186fc021ae9da5eb56163e7fe0b366358bb927ca22f7af43e6a316326d0c8f34f3ef81636daff145e93dc4faf04514a2d50da8d7ec9557c7eae06a690967e11dfe06be235db963859b3c9d5e0c133612c3aaabeb0196c17f7d6e3a663855304820665700d033b8ce654c386d6021e80bf77f0a3b9958eb11ca5397c919e9ab7703c4b9942e27ef7ed7f0d32d31d9f695930fd4eb6efa430c7ec8716ae449e161e6a599d421351065c1bd5aef6a1a57c7d38b1f7ccc603c388605f0fa7a4991c88d3cff98cd1cf5d2f0bd9fbf4a3af0177c7a0a37277b4335cc19923ed47d3b25237009ef66de60b44a8bada3ad5219cf67a7a415fac72479d060abf71685f25772fa2b64c1db73beb4dab7f0dca21bf83b51061953a226c910e3c439a06febcbb93eb906b8c2d07c9b6efa481c8ab326391de34aad06a6608f4e9b866e626bde4d2a21f5678744f325e983602aae61f234654d45c32c50410b0ffc7b8878418d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee717f1ad9b233888bf7439a039f75d40f1ebe2b0fc907e9d200a06e872f7cad88577a9266b43fbef8f8ab902538aaf43e253b7bdee9040e7cbb7f0ff90eb4cea5libLLVM.so.19.1libLLVMTableGen.so.19.1libLTO.so.19.1libRemarks.so.19.1rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootllvm19-19.1.7-bp156.4.2.src.rpmcmake(LLVM)cmake(LLVM-)libLTO.sollvm-devel-providerllvm19-develllvm19-devel(x86-32)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigld-linux.so.2ld-linux.so.2(GLIBC_2.3)libLLVM19libLTO19libc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.1)libc.so.6(GLIBC_2.1.2)libc.so.6(GLIBC_2.1.3)libc.so.6(GLIBC_2.15)libc.so.6(GLIBC_2.2)libc.so.6(GLIBC_2.2.4)libc.so.6(GLIBC_2.3)libc.so.6(GLIBC_2.3.4)libc.so.6(GLIBC_2.32)libc.so.6(GLIBC_2.33)libc.so.6(GLIBC_2.34)libc.so.6(GLIBC_2.36)libc.so.6(GLIBC_2.4)libgcc_s.so.1libgcc_s.so.1(GCC_3.0)libgcc_s.so.1(GCC_3.3)libm.so.6libm.so.6(GLIBC_2.0)libomp19-devellibstdc++-devellibstdc++.so.6libstdc++.so.6(CXXABI_1.3)libstdc++.so.6(CXXABI_1.3.11)libstdc++.so.6(CXXABI_1.3.5)libstdc++.so.6(CXXABI_1.3.9)libstdc++.so.6(GLIBCXX_3.4)libstdc++.so.6(GLIBCXX_3.4.11)libstdc++.so.6(GLIBCXX_3.4.14)libstdc++.so.6(GLIBCXX_3.4.15)libstdc++.so.6(GLIBCXX_3.4.18)libstdc++.so.6(GLIBCXX_3.4.20)libstdc++.so.6(GLIBCXX_3.4.21)libtoolllvm19llvm19-goldllvm19-polly-develpkgconfigrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)19.1.719.1.719.1.73.0.4-14.6.0-14.0-15.2-1cmake(LLVM)libLTO.sollvm-devel-providerllvm5llvm719.1.719.1.74.14.3ggd gQg<}g8@g+Z@g&@g|g6f5ff@fyfą@fHfLf:f! @f@e@eO@eZee@ehy@eX@eGe1@e!H@e @d@d{+@dddWdBzd>@d7d.@dd m@d @c™@cctcgcZrc< @c,N@c*c@c6@cAcc@b@bbL@b@b@bbm$be;bI@bI@b$@bb b D@b[@aa@aNa@aW@a(@a(@aXIaE````y|@`)__@__S_@__@__"@_*@_ @^^y@^x^h^c^=Q@^;^9\^8 @^1s^.^^^@^!@^,]]@]@]N@]]{@]]c@]K@]b@]b@]]2@]V]3@]@]]@]\ \O\\\M\@\u*@\iL\=@\Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Michal Suchanek Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Michael Gorse Aaron Puchert Fabian Vogt Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert William Brown Aaron Puchert Aaron Puchert Aaron Puchert Dirk Müller Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Andreas Schwab Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Dirk Müller Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Andreas Schwab John Paul Adrian Glaubitz Aaron Puchert Alberto Planas Dominguez Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Guillaume GARDET Callum Farmer Andreas Schwab Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Ismail Dönmez Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Richard Biener Richard Biener Richard Biener Andreas Schwab Aaron Puchert Richard Biener Aaron Puchert Andreas Schwab Jaime Caamaño Ruiz Andreas Schwab Andreas Schwab Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Fabian Vogt Aaron Puchert Stefan Brüns Aaron Puchert Aaron Puchert Lubos Lunak Aaron Puchert Aaron Puchert Aaron Puchert Guillaume GARDET Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška aaronpuchert@alice-dsl.netAdrian Schröter msrb@suse.comaaronpuchert@alice-dsl.netmsrb@suse.comJohn Paul Adrian Glaubitz msrb@suse.commsrb@suse.comDirk Mueller Todd R John Paul Adrian Glaubitz msrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.coml.lunak@centrum.czmsrb@suse.commsrb@suse.comtchvatal@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.comnormand@linux.vnet.ibm.comdmueller@suse.commsrb@suse.commsrb@suse.comfcrozat@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commeissner@suse.comschwab@suse.dedmueller@suse.comjimmy@boombatower.comidonmez@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.comafaerber@suse.deidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comjslaby@suse.comidonmez@suse.comtoddrme2178@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comtchvatal@suse.comtoddrme2178@gmail.comtchvatal@suse.comnormand@linux.vnet.ibm.comschwab@suse.deronisbr@gmail.comidonmez@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.commimi.vx@gmail.comidonmez@suse.comidonmez@suse.comidonmez@suse.comro@suse.deidonmez@suse.comidonmez@suse.comidonmez@suse.comrguenther@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.com- Update to version 19.1.7. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 19.1.6. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 19.1.5. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 19.1.4. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Apply clang-shlib-symbol-versioning.patch to add symbol versions to libclang-cpp.so similar to libLLVM.so. This is required when multiple versions of the library are loaded into the same process. (boo#1219405, boo#1221183, boo#1233220)- Enable lldb on s390x and ppc64le (bsc#1232906).- Update to version 19.1.3. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-suse-implicit-gnu.patch - Patch llvm-fix-build-failure-on-ppc64le.patch landed upstream.- Update llvm19.keyring from upstream.- Update to version 19.1.2. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 19.1.1. * This release contains bug-fixes for the LLVM 19.1.0 release. This release is API and ABI compatible with 19.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 19.1.0. * For details, see the release notes: - https://releases.llvm.org/19.1.0/docs/ReleaseNotes.html - https://releases.llvm.org/19.1.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/19.1.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/19.1.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/19.1.0/tools/lld/docs/ReleaseNotes.html * New LLVM tool: reduce-chunk-list to help find bugs using debug counters. See the Programmer's Manual for usage. * New Clang tools: clang-installapi for Apple-related package management, clang-nvlink-wrapper as a wrapper around `nvlink`. - No longer include OpenMP offload libraries. - Rebase patches: * clang-fix-openmp-test.patch * libcxx-test-library-path.patch * llvm-do-not-install-static-libraries.patch * llvm_build_tablegen_component_as_shared_library.patch - Remove obsolete patches: * lld-default-sha1.patch because upstream switched to sha1. * llvm-remove-clang-only-flags.patch because warning flags are no longer autodetected. * openmp-dont-run-gpu-arch.patch because we're excluding the offload project for now. - Add llvm-fix-build-failure-on-ppc64le.patch to fix ppc64le build. - Require Python 3.11 on Leap because we need Python >= 3.8 now.- Enable zstd compression support again.- Split off clang shared runtime libraries into libclang_rtX, so that they can be used by other packages without requiring the entire compiler tool chain. This is still not ergonomical: the libraries don't sit in %{_libdir}, so an RPATH or setting LD_LIBRARY_PATH is required, and they don't have an SO version, so zypper won't know which version to is needed. (boo#1225784)- Add minor version to Python shebangs. (boo#1212476) - Remove shebang and executable bit where not needed.- Update to version 18.1.8. * Fix a regression from the 18.1.6 release, which could result in compiler crashes in the PPCMergeStringPool pass when compiling for PowerPC targets. * Fixes clang-format regressions (since 18.1.1) on breaking before a stream insertion operator (<<) when both operands are string literals. * Fixes a clang-format regression (since 17.0.6) on formatting goto labels in macro definitions. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 18.1.6. * Fixes issues where LLVM is either generating the incorrect thunk for a function with aligned parameters or didn't correctly pass through the return value when StructRet was used. * `-Xclang -target-feature -Xclang +unaligned-scalar-mem` can be used to enable unaligned scalar memory accesses for CPUs that do not support unaligned vector accesses. `-mno-strict-align` will enable unaligned scalar and vector memory accesses. * Don't replace an aliasee with an alias that has weak linkage. This avoids incorrect linkage that can lead to using the wrong symbols during linking time. * Fixes build failures when compiling AVX512 code using `-march=native` on machines without AVX512. The problem was introduced in LLVM 18.1.5. * Fixes crash in AArch64 backend when having `true` or `false` as operand for `fcmp` instruction on IR level. * Fixes compiler crash when user specifies `-mno-evex512` with AVX512 features but no AVX512VL. * Fixes a bug that tries to do VBROADCAST_LOAD for `f16` without AVX2. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 18.1.5. * This release contains bug-fixes for the LLVM 18.1.0 release. This release is API and ABI compatible with 18.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 18.1.4. * Fixes an issue with Arm64EC code generation where calls to some intrinsics implemented in compiler-rt used the wrong name mangling, eventually resulting in unresolved symbol errors during linking. * Fixed an incorrect poison-generating flag preservation in `InstSimplify`. It will fix a miscompilation on RISCV, which turns the incorrect `or disjoint` into an `add`. * Save/restore routines for RV32E/RV64E are added to compiler-rt. * Fix regressions introduced in LLVM 18.1.3 in MIPS atomicrmw min/max codegen. - Include module files for libc++ in libc++-devel. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 18.1.3. * Fixes ThreadSanitizer failures for glibc's LoongArch and certain RISC-V ports when fstat is used. * `transform.structured.convert_to_loops` now properly deletes its target op. * Fix a `llvm.usub.with.overflow.i128` wrong code generation regression that was introduced with LLVM 18.1.0. * MemorySanitizer on Linux can now run even when maximum-entropy address-space layout randomization is configured globally (as is becoming increasingly common). MemorySanitizer can automatically re-exec ASLR-off for the process if needed, instead of aborting. * Fixed a Clang 18.x regression which increased binary size and stack usage with `-ftrivial-auto-var-init`. - Set directories for configuration files: /etc/clang for system- wide configuration and ~/.config/clang for users. For details see https://clang.llvm.org/docs/UsersManual.html#configuration-files. - Use old conflicts/provides for python3-clang on Leap.- Update to version 18.1.2. * This release contains bug-fixes for the LLVM 18.1.0 release. This release is API and ABI compatible with 18.1.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Prefer ld.bfd for now to get THP-compatible section layout.- Update to version 18.1.1. * For details, see the release notes: - https://releases.llvm.org/18.1.0/docs/ReleaseNotes.html - https://releases.llvm.org/18.1.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/18.1.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/18.1.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/18.1.0/tools/lld/docs/ReleaseNotes.html * New LLVM tool: llvm-readtapi, LLVM TAPI file reader and transformer. * Removed LLVM tools: llvm-tapi-diff, llvm-remark-size-diff. * New LLDB tool: lldb-dap debug adapter. * Removed LLDB tool: lldb-vscode. - Rename libomp-devel symbolic name to libomp-devel-provider. We want to introduce a metapackage named libomp-devel. - Rebase patches: * assume-opensuse.patch * link-clang-tools-extra-shared.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-fix-find-gcc5-install.patch * llvm-normally-versioned-libllvm.patch * llvm-suse-implicit-gnu.patch - Add patches to fix tests: * clang-fix-modules-test-riscv.patch * clang-fix-openmp-test-non-x86.patch * clang-fix-openmp-test.patch * llvm-fix-cov-test-i586.patch - Restructure version macros in specfile for new versioning scheme. - Fix packaging of ld.lld as ld alternative. - Disable LLDB Python bindings on SLE/Leap. They now require Swig 4 which isn't available there.- Explicitly define PYTHON3_EXECUTABLE, since python 3.11 is being pulled in by cmake in SLE-15-SP6.- Fix PowerPC triples: use powerpc[64[le]] instead of ppc[64[le]]. - Require 8 GB memory for 64-bit architectures to prevent OOM. - Use %patch -P N instead of deprecated %patchN.- Use %_target_* for determining the compiler host triple (boo#1218701)- Update to version 17.0.6. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Use major version only instead of full (patch-level) version for versioned executables: we don't support parallel installation of multiple versions of the same LLVM major version. (boo#1217450) Also drop the clang-X.Y symlink that was introduced for boo#1012260, because Y is always 0. - Manage clang-cpp with update-alternatives like other binaries.- Update to version 17.0.5. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Also test clang-tools-extra (at least most parts) and lld. - Adapt test in lld-default-sha1.patch. - Don't disable testing if qemu_user_space_build has been set to 0.- Update to version 17.0.4. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Include libomptarget.devicertl.a in libomp*-devel, which is required for (GPU) offloading.- Update to version 17.0.3. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Disable zstd support for now regardless of whether libzstd-devel is installed. (boo#1216121) - Limit number of LTO threads on 32-bit architectures to prevent out-of-memory during linking.- Update to version 17.0.2. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 17.0.1. * For details, see the release notes: - https://releases.llvm.org/17.0.1/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/lld/docs/ReleaseNotes.html - Rebase patches: * libcxx-test-library-path.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch * llvm-remove-clang-only-flags.patch * opt-viewer-Find-style-css-in-usr-share.patch - Simplify check-no-llvm-exegesis.patch by removing test directory. - Drop patches that have landed upstream: * openmp-drop-rpath.patch - Add openmp-dont-run-gpu-arch.patch: the binaries are not available in our build, and neither are the toolchains they test for (NV CUDA and AMD HSA).- Update to version 16.0.6. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Make python3-clang noarch again and fix conflicts/provides to point to %python3_sitelib instead of %python3_sitearch.- Update to version 16.0.5. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch - Enable ThinLTO on riscv64.- Update to version 16.0.4. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch- Update to version 16.0.3. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 16.0.2. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase check-no-llvm-exegesis.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Relax requirements for clang-tools to allow installation of older versions of libclang13 with the -devel package. (boo#1210176) - Enable ThinLTO for ARM 6/7/8 again. (boo#1178070)- bsc#1210383 - Add aarch64 to lldb platforms- Update to version 16.0.1. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 16.0.0. * For details, see the release notes: - https://releases.llvm.org/16.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfo-analyzer: Print a logical representation of low-level debug information. - llvm-remarkutil: Remark file utilities. * The test tool split-file is no longer installed. * New Clang tools: - amdgpu-arch and nvptx-arch: Tools used to detect locally available GPUs by the Clang OpenMP driver. - clang-include-cleaner: Standalone tool to determine which headers are used, using existing functionality in clangd. - clang-tblgen: Table Generation for Clang. * Removed Clang tools: clang-{nvlink,offload}-wrapper. - Rebase patches: * assume-opensuse.patch * check-no-llvm-exegesis.patch * link-clang-shared.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-suse-implicit-gnu.patch * llvm-workaround-superfluous-branches.patch * openmp-drop-rpath.patch - Drop patches that have landed upstream: * clang-test-xfail-gnuless-triple.patch * CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch * libcxxabi-fix-armv7-test.patch * llvm-armv7-fix-vector-compare-with-zero-lowering.patch * llvm-link-atomic.patch - Remove llvm-better-detect-64bit-atomics-support.patch that should not be required anymore. - Add PGP signatures and keyring for source verification.- Add llvm-suse-implicit-gnu.patch to recognize -suse-linux as implicitly GNU. Without this we would get library calls for fused-multiply-add even if it's available in hardware. - Add openmp-drop-rpath.patch: backport revert of adding RUNPATH to openmp executables. (boo#1206837)- update constraints to exclude workers with very slow CPU- Update to version 15.0.7. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Build stage 2 with -fno-plt on x86_64: since building with - Wl,-z,now the PLT stubs are basically dead code, so eliminating the indirection reduces the number of branches and improves code locality for the quite frequent cross-DSO calls. - Add llvm-workaround-superfluous-branches.patch: hints LLVM to eliminate branches until gh#llvm/llvm-project#28804 is solved.- Update to version 15.0.6. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.5. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Remove obsolete lldb-swig-4.1.0-build-fix.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.4. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.3. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Add llvm-armv7-fix-vector-compare-with-zero-lowering.patch: Fix lowering of non-canonical vector comparison with zero on armv7, preventing a crash (boo#1204267, gh#llvm/llvm-project#58514). - Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.2. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.1. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Always drop -gnu from triple for consistency. Patch a test that was looking for -linux- in clang-test-xfail-gnuless-triple.patch.- Use correct LLVM_HOST_TRIPLE for riscv64- Update to version 15.0.0. * For details, see the release notes: - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod: Provides debug info to remote hosts. - llvm-dwarfutil: Can copy and manipulate debug info. - llvm-remark-size-diff: Compute diff between remark files. * New Clang tools: - clang-offload-packager: Bundle multiple objects into single fat binaries including offload code. - clang-pseudo: Approximate heuristic parser for C++. - Rebase patches: * check-no-llvm-exegesis.patch * link-clang-tools-extra-shared.patch * lld-default-sha1.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Drop patches that have landed upstream: * clang-repl-private-deps.patch * llvm-glibc-2-36.patch * llvm-scev-fix-isImpliedViaMerge.patch - Drop llvm-lifetime-for-rust.patch: this is now solved via attributes and LLVM doesn't need a hardcoded list of allocation functions anymore. - Add llvm-link-atomic.patch to fix build on ppc. - Add libcxx-test-library-path.patch to fix libc++ tests failing without RUNPATH on libc++.so. - Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l. - Thanks to Andreas Schwab for most of the rebasing!- Make sure we keep -DNDEBUG. At some point %{optflags} must have lost it, perhaps because CMake usually adds it on top. So when overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF, because that's the default anyway and hasn't helped here. - Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation caused by mixing up values of the current and previous iteration. (See gh#llvm/llvm-project#56242.)- Add llvm-lifetime-for-rust.patch to have Rust memory management functions considered as lifetime markers. This should aid dead store elimination to dynamically allocated memory in Rust code.- Don't declare python3-clang as noarch: Python packages are installed into %{_libdir}.- Use black RPM macro magic to deduplicate binary lists. This should have no effect on the generated RPM but shaves ~400 lines off the specfile and hopefully makes future maintenance easier.- Add WebAssembly support for all architectures.- Add llvm-glibc-2-36.patch in order to address boo#1202215.- Update to version 14.0.6. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.5. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.4. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Don't use gold for linking anymore: on s390x we use ld.bfd with LLVMgold.so, on ppc64 we disable ThinLTO for now. - Using ld.bfd on s390x exposed an issue with the existing llvm_build_tablegen_component_as_shared_library.patch: linking llvm-tblgen with libLLVM.so means we also have to link libraries used for that (like LLVMTableGenGlobalISel) with libLLVM.so. - Rewrite summary and description for llvm-gold to point out that it can also be used with ld.bfd, recommend with binutils. - Prefer RPM macros over shell scripting, so that we can better inspect the build script with substitutions in place. - More memory for stage 1 build jobs due to recent OOMs. - Add %_libclang_sonum RPM macro to llvm-devel, since that might now diverge from %_llvm_sonum. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.3. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Use ThinLTO with lld on i586.- Update to version 14.0.1. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch - Don't override default linker flags. (We were losing -Wl,-z,now.)- Update to version 14.0.0. * For details, see the release notes: - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod-find: Tool to fetch debuginfod artifacts. - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker. * New Clang tools: - clang-linker-wrapper: A wrapper utility over the host linker. - clang-nvlink-wrapper: A wrapper tool over nvlink program. - Add clang-repl-private-deps.patch to make link dependencies of clang-repl private, otherwise CMake can't install. - Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to fix build on PowerPC (32-bit). - Drop llvm-exegesis-link-dylib.patch, instead we don't build llvm-exegesis anymore and add check-no-llvm-exegesis.patch to disable the corresponding tests. - Rebase patches: * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Drop patches that have landed upstream: * llvm-update-extract-section-script.patch- Split up Clang libraries: libclang.so is no longer so-versioned alongside LLVM but will stay at libclang.so.13 for now. So we put it into a separate package from libclang-cpp.so. Since we can't have multiple LLVM versions generate the same package, we prefix it for the non-default LLVM with a mechanism inspired by the GCC packaging. - Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer to libclang only by soname, because the installed library might be newer than the one originally build with the package. - Use the same mechanism to for libc++ and package Clang scripts only for the default version. This means we'll no longer have to touch the package when a new major version comes out. - Make sure we properly clean up the clang scripts if we're not packaging them. - Let python3-clang use libclang.so.XX, which means we can always build it and makes it depend on libclang instead of clang-devel. - Fix some rpmlint issues: we don't need explicit library dependencies that are detected automatically, and we add proper library dependencies to the *-devel packages. - Merge llvm-LTO-devel into llvm-devel. That's where the header files already are, and they are hard to separate. - Let llvm-polly-devel depend on llvm-devel. - Remove libLTO and *-devel packages from baselibs, they don't seem to be needed. We mostly need libLLVM and maybe libclang-cpp. - Consistently set host triple as *-suse-linux-gnu*. - Only suggest documentation packages.- Fix armv6hl cpu architecture typo.- Let clang-devel accept a newer version of clang-tools: we don't keep multiple versions of the latter.- AND instead of OR in License tag after sr#954337.- More conflicts for addition to Leap: clang-tools conflicts with llvm9 because that doesn't have the move of hmaptool yet, and llvm13-devel with llvm{5,7} as they used to have FileCheck.1.gz.- Add SUSE_Backports_policy-SLE_conflict to rpmlintrc, we're deliberately conflicting with SLE here to offer a newer version than what SUSE wants to support. (https://code.opensuse.org/leap/features/issue/55)- Update to version 13.0.1. * This release contains bug-fixes for the LLVM 13.0.0 release. This release is API and ABI compatible with 13.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * llvm-fix-building-with-GCC-12.patch - Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH for building and testing to simulate behavior of actual package.- Update constraints for riscv64- Add support for experimental targets and enable the M68k backend - Add patch to fix testsuite after enabling the M68k backend + llvm-update-extract-section-script.patch- BuildRequires: python-rpm-macros to fix Leap 15.3 build. - More memory for GCC compile jobs.- Add FileCheck into the devel package, as is required for testing Rust (boo#1192629)- Let clang recommend gcc and glibc-devel as we need both for building executables. No hard requirement because Clang can be used as a frontend only. (boo#1191587) - Set minimal CMake version required.- Backport llvm-fix-building-with-GCC-12.patch in order to fix building with GCC 12.- Update to version 13.0.0. * For details, see the release notes: - https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-otool: Mach-O object file displaying tool. - llvm-sim: LLVM IR Similarity Visualizer. - llvm-tapi-diff: Diff tool for tbd files. - llvm-windres: Tool to manipulate Windows resources. * llvm-elfabi was removed. * New Clang tools: - clang-repl, an interactive interpreter for C/C++. - intercept-build, analyze-build: the former intercepts build commands to build a compilation database, the latter runs the static analyzer over all translation units. - scan-build-py: Python reimplementation of scan-build. - Rebase patches: * link-clang-shared.patch * llvm-do-not-install-static-libraries.patch * llvm-exegesis-link-dylib.patch - Drop patches that have landed upstream: * tablegen-test-link-static.patch - Run tests on more architectures, disable those that seem to hang. Don't run libcxx tests at all anymore because they take so long. - Relax constraints so that we can build on more machines.- Set CMAKE_LINKER to workaround CMake wanting to use lld just because we're using clang as compiler. Fixes build on aarch64. (https://bugs.llvm.org/show_bug.cgi?id=51115)- Update to version 12.0.1. * This release contains bug-fixes for the LLVM 12.0.0 release. This release is API and ABI compatible with 12.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * clangd-cmake-non-standard-layout.patch * compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch * lld-no-version-on-undefined-weak-lazy-symbols.patch- Add compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch: Fix build with linux-glibc-devel 5.13.- Set memory limits for DWZ to 4x.- Update to version 12.0.0. * For details, see the release notes: - https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/lld/docs/ReleaseNotes.html - Rebase patches: * assume-opensuse.patch * lldb-cmake.patch * llvm-better-detect-64bit-atomics-support.patch * llvm-do-not-install-static-libraries.patch * llvm_build_tablegen_component_as_shared_library.patch - Drop patches that have landed upstream: * Fix-missing-include.patch - Always use ld.bfd for stage 1, use lld for stage 2 where we use ThinLTO and where it's supported, gold where lld doesn't work, and ld.bfd where we don't use ThinLTO. (boo#1181621) - Add lld-no-version-on-undefined-weak-lazy-symbols.patch to fix a bug in lld that made libLLVM.so contain a corrupt symbol version. - Add clangd-cmake-non-standard-layout.patch to fix build in our non-monorepo layout.- Don't use gold and ThinLTO on ppc64le because of boo#1181621. - Fix-missing-include.patch: fix build with GCC 11. (boo#1181875) - CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch: Fix target component lookup. (boo#1180748)- Update to version 11.0.1. * This release contains bug-fixes for the LLVM 11.0.0 release. This release is API and ABI compatible with 11.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete compiler-rt-dont-compile-assembly-files-as-c.patch. - Make documentation tarballs more reproducible.- Increase required RAM for aarch64- Move BFD plugins to %{_libdir}- polly-pthread.patch: Remove, std::call_once no longer needs libpthread- Add compiler-rt-dont-compile-assembly-files-as-c.patch to fix build failure with newer CMake versions.- Let CMake files in {llvm,clang}X-devel refer to the versioned binaries that come with the package instead of the symlink managed by update-alternatives. (boo#1178513)- Disable ThinLTO on aarch64 because of hangs. (boo#1178070) - Enable ThinLTO on ppc64 and ppc64le, the internal error is gone.- Update to version 11.0.0. * For details, see the release notes: - https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-gsymutil, llvm-ml. * clang-import-test was removed. - Drop obsolete patches: * clang-ignore-stack-clash-protector.patch * fix-atomics-test.patch * restore-llvm10-abi.patch - Rebase patches: * clang-resourcedirs.patch * default-to-i586.patch * link-clang-shared.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Add llvm-exegesis-link-dylib.patch: link llvm-exegesis with libLLVM.so, the advanced functionality is not available anyway. - Remove -fstack-clash-protection on architectures where it isn't actually supported, because that prevents feature detection. - Make sure we also build AttributeReference for the documentation. This requires building via CMake. Also shorten the paths.- Add ld.lld as an alternative for ld. (boo#1174656)- Update to version 10.0.1. * This release contains bug-fixes for the LLVM 10.0.0 release. This release is API and ABI compatible with 10.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Replace ValueLattice-Add-new-state-for-undef-constants.patch, which landed upstream in a modified version, by restore-llvm10-abi.patch that resets the ABI to our 10.0.0. - Rewrite lld-default-sha1.patch to be version-independent. - Set flags consistently, so that we don't lose -DNDEBUG on 32-bit architectures. Also we don't need the opt flags twice. This leads to a significant reduction in binary sizes on 32-bit arches. - Make it easier to package release candidates. - Enable most tests on 32-bit ARM, but not for libcxx. - Add fix-atomics-test.patch for architectures where native atomics are not available. - Lower build constraints for riscv64 a bit to allow building on more workers. - Allow more compile jobs in stage 2.- Factor out computation of the number of jobs into a macro. - Choose mem_per_compile_job dependent on build stage, let stage 1 on x86_64 use more memory. - More generous memory allocation on riscv64.- Add lld-default-sha1.patch to make lld generate SHA1 build-ids by default, otherwise our tools cannot process the debuginfo.- Update to version 10.0.0. * For details, see the release notes: - https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-ifs, llvm-install-name-tool, llvm-reduce. * New Clang tools: clang-move, clang-offload-wrapper, pp-trace. * lldb-mi moved to a separate project and is no longer available. - Dropped obsolete patches: * clang-fix-powerpc-triplet.patch * clang-riscv64-rv64gc.diff * compiler-rt-move-fdp.patch * compiler-rt-sanitizer-ipc-perm.patch * D60657-riscv-pcrel_lo.diff * gwp-asan-lto.patch * libcxx-tests-linux-distribution.patch * link-lldb-shared.patch * llvm-riscv64-fix-cffi.diff * openmp-export-fini.patch * riscv-eh-frame-fixup.patch * riscv64-suse-linux.patch - Rebased patches: * assume-opensuse.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch * lto-disable-cache.patch * polly-pthread.patch * tests-use-python3.patch - Add tablegen-test-link-static.patch: fix TableGenTests. - Add ValueLattice-Add-new-state-for-undef-constants.patch: fix miscompilation on ppc64/s390x that was leading to test crashes. - Enable ThinLTO on aarch64. - Disable ThinLTO on ppc64le due to internal error in gold. - Delete object files and static libraries from build tree in %install already, because debuginfo extraction happens after that. If we do it after %check, we run out of disk space. - Run tests "manually", because we've already removed many targets. - Don't build unit tests, because some of them are now statically linked, which is very expensive with LTO. Also unit tests are probably not very interesting on the distribution level, we don't expect them to perform different than in upstream. The relevant upstream change for this is https://reviews.llvm.org/D54439. - Drop %if for openSUSE 13.2.- Remove conflicts of clang-tools with {clang,llvm}{7,8}: the relevant binaries have been removed from those packages. This allows having clang-tools together with older versions of llvm. For a smooth installation we add OrderWithRequires dependencies. - Fix typos in (still inactive) !%{with clang_scripts} part.- Require clang-tools for clangX-devel.- Move all clang-related scripts (including those originally in clangX-checker), hmaptool and clang-doc into a common unversioned subpackage clang-tools, like python3-clang. The scripts reference the unversioned executables, so allowing multiple versions via update-alternatives would be misleading. The clang-doc executable will come with assets in Clang 10, so we have to take it out of update-alternatives as well. This should be the proper solution to boo#1161873. - Include run-find-all-symbols script in clang-tools. - Remove metadata for clangX-include-fixer subpackage that never had any files and thus wasn't released as rpm. There are so many clang binaries that packaging them separately doesn't scale. - Fix lldb version string, adapt lldb-cmake.patch (boo#1165517). - Remove unneccesary libtool dependency. - Don't let clang depend on libc++, we link it with libstdc++. - Recommend gold plugin if clang and gold are installed.- Add vim-plugin-llvm Conflicts to clang subpackage which now contains files formerly in llvmN-vim-plugins, conflicting with packages from older llvm releases.- Add back emacs-llvm Provides and Conflicts to clang subpackage originally in llvm-emacs-plugins to properly conflict with llvm-emacs-plugins from older llvm releases.- Add clang5-devel to clang9-doc conflicts.- Add compiler-rt-sanitizer-ipc-perm.patch: Fix sanitizer-common build with glibc 2.31.- Move clang-{format,include-fixer,rename}.{el,py} files from llvm-*-plugins to clang package. (boo#1161873) - Drop the now empty llvm-emacs-plugins package.- Add polly and lld build conditionals, remove excessive Requires to clang from docs. Fix conditional for libc++ use. [jsc#SLE-7400, jsc#SLE-7614, jsc#SLE-7452, jsc#SLE-8920, jsc#SLE-7390, jsc#SLE-7587]- Undo spec-cleaner changes that we don't want. * Reintroduce blank lines in configuration. * Use packageand syntax that works for older versions of RPM. * Don't use %{_bindir} on left-hand side of sed replacements.- riscv-eh-frame-fixup.patch: Remove changesets that alter the libLLVM ABI- Add upstream patch to export compiler-rt FuzzedDataProvider header, required by Envoy 1.12.2: * compiler-rt-move-fdp.patch- riscv-eh-frame-fixup.patch: Fix handling of .eh_frame on RISC-V - polly-pthread.patch: Add missing -lpthread- Enable support for riscv64 - clang-riscv64-rv64gc.diff, riscv64-suse-linux.patch, llvm-riscv64-fix-cffi.diff, D60657-riscv-pcrel_lo.diff: Backports from master- Update to version 9.0.1. * This release contains bug-fixes for the LLVM 9.0.0 release. This release is API and ABI compatible with 9.0.0. - Drop patches that have landed upstream: * dont-install-example-analyzer-plugins.patch * fix-module-test.patch * llvm-add-missing-include.patch - Drop set-revision.patch, don't provide revision number in clang. The upstream repository has moved from Subversion to git, so the revision number is just a hash, which limits its usefulness. - Rebase llvm-do-not-install-static-libraries.patch.- Modify libcxx-tests-linux-distribution.patch to remove dependency on python-distro again: we don't have expected failures.- Add llvm-add-missing-include.patch in order to fix boo#1158367.- Add gwp-asan-lto.patch: Make sure there are no LLVM IR files in static libraries that we package. - Add libcxx-tests-linux-distribution.patch (boo#1158293): Replace platform.linux_distribution by distro.linux_distribution. - Make documentation packages noarch.- Add openmp-export-fini.patch: Export termination function for libomp.so, solves boo#1155108. - Remove flaky test case in libcxx.- Fix typo, BOLL -> BOOL- Let new {llvm,clang}*-doc packages "Conflict" with older devel packages, which they were split from. - Let doc packages conflict with older versions of themselves.- (Build)Require only python3-base instead of full python3 package, the additional modules are not required. Helps shortening the build dependency chain. - Remove python3-* requires from lldb9 subpackage, and add it to the bindings/pretty-printer subpackage (python3-lldb9). - Add python3-base Requires to python3-clang subpackage- Add dont-install-example-analyzer-plugins.patch: Remove example analyzer plugins from install targets instead of deleting them. - Add fix-module-test.patch: fix test instead of deleting it. - Don't build static libc++ (with ThinLTO that's not useful anyway). - Don't build libc++experimental. - Don't package libc++abi.so with libc++-devel, it's already contained in the (required) libc++abi-devel. - Be more specific about files in libc++-devel.- Update to version 9.0.0. * For details, see the release notes: - https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html - Change License to "Apache-2.0 WITH LLVM-exception OR NCSA". (https://llvm.org/foundation/relicensing/) - Allow building with ThinLTO and enable it on some architectures. - Disable LTO cache in lto-disable-cache.patch. - Unset MALLOC_CHECK_ for compilation to mitigate lock contention. - No debug info for ppc like for the other 32-bit targets. - Clean up _constraints: same constraints for 32-bit targets. - Don't use BUILD_SHARED_LIBS for Clang anymore, since the newly available libclang-cpp.so should expose the full C++ API. - Link tools with libclang-cpp.so by using CLANG_LINK_CLANG_DYLIB, similar to LLVM_BUILD_LLVM_DYLIB for libLLVM.so. - Remove obsolete n_clang_allow_BUILD_SHARED_LIBRARY.patch. - Add link-clang-shared.patch to link more clang targets with libclang-cpp.so, especially libclang.so. - Add link-clang-tools-extra-shared.patch, link-lldb-shared.patch: link targets in clang-tools-extra and lldb with libclang-cpp.so. - Simplify llvm-do-not-install-static-libraries.patch, also handle Clang, for which we now get static libraries. - Package documentation for llvm and clang separately, recommend them for the main package: they are not required for development, but actually useful for working with the non-devel packages. - Recommend editor plugins not just for llvm-devel. - Recommend libstdc++ for Clang again. - Move diagtool from llvm to clang subpackage. - Properly distinguish between %{_relver} and %{version}. - Drop aarch64-disable-memorytest.patch and reactivate test. - Rebase clang-resourcedirs.patch. - Rebase llvm-normally-versioned-libllvm.patch. - Rebase llvm-remove-clang-only-flags.patch. - Rebase llvm_build_tablegen_component_as_shared_library.patch. - Rebase set-revision.patch. - Increase disk space for build.- Make lldb recommend python3-lldb (it contains pretty printers).- Use python3 shebangs everywhere (boo#1146533). - Drop obsolete opt-viewer-Do-not-require-python-2.patch.- Remove unneccesary dependencies: * groff, bison and flex don't seem to be used. * jsoncpp is no longer used since r338461. * Move some BuildRequires to subpackages. * Don't recommend scan-{build,view} in clang (boo#1145444). * Devel packages are only required in other devel packages, when their headers are included in the installed headers. - Add versions to Provides/Conflicts except for files. - Remove unused (since r268685) CMake flags LLVM_ENABLE_TIMESTAMPS. - Fix installation of opt-viewer files when python3-clang is no longer built.- Update to version 8.0.1. * This release contains bug-fixes for the LLVM 8.0.0 release. This release is API and ABI compatible with 8.0.0. - Don't run LLVM tests on ppc at all because of sporadic hangs.- Increase RAM for armv6/7 to avoid OOM and be scheduled on fast worker- Use the documented LLVM_ENABLE_RTTI to enable RTTI instead of LLVM_REQUIRES_RTTI, which "is an internal flag that individual targets can use to force RTTI". (boo#1139584) - Drop obsolete llvm-build-tests-with-rtti.patch.- Exclude riscv64 for now since it fails to build.- Change some groups: * put libraries in System/Libraries, * devel packages in Development/Libraries, * clang in Development/Languages/C and C++, * the gold plugin in Development/Tools/Building. - Add some URLs, use https:// when possible. - Remove unneeded devel dependencies. - Only suggest a C++ standard library for clang. It's also a C compiler and needs no C++ library when only used as such. - Fix Supplements for editor plugins. - Fix some rpmlint issues: * Reword summary and description for Polly. * Fix /usr/bin/env shebangs. * Remove executable bit where not needed. * Move bash completion to /usr. * Remove hard dependency of libclang8 to libstdc++-devel. - Make rpm macros work properly. - Remove sources from documentation. - Run %fdupes on the right directories. - Enable tests for libcxx. - Reduce memory requirements for compile jobs depending on arch.- Avoid relocation overflow on ppc by not building GPU backends. - Update baselibs.conf.- Disable LTO (boo#1133254).- Fix packaging on ppc: the sanitizers aren't available there, so the directories /usr/lib/clang/*/{lib,share} are missing. - Package LLVMgold even when we don't use gold for linking. It's promised in /usr/lib/cmake/llvm/LLVMExports.cmake. - Unignore test failures on PowerPC64 architectures. The failures in ppc are unrelated to AMDGPU, so we remove that remark. - Fix dependencies: the gold plugin shouldn't depend on llvm-devel. libc++abi-devel should depend on libc++abi. - Fix typo.- Enable libc++ on ARM (Needed for tensorflow)- Update to 8.0.0 * For details, see the release notes: https://llvm.org/releases/8.0.0/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/lld/docs/ReleaseNotes.html - Drop llvm-unittests-Don-t-install-TestPlugin.so.patch, llvm-drop-llvm-optional-clang-specific-optimization.patch, llvm-D51108.patch, llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Already included upstream - Add 0001-CMake-Add-install-targets-for-utilities-to-LLVM-expo.patch- Remove -fno-strict-aliasing, which upstream doesn't use any more since r245304 in 2015. (http://reviews.llvm.org/D12036) It's probably also not needed for modern versions of GCC. It was enabled in r105644 because of some bugs there. - Add a clang-%{_sonum} symlink, which is referenced by /usr/lib64/cmake/clang/ClangTargets.cmake (boo#1120098) - Package clang builtin headers with libclang. The library is basically unusable without the builtin headers. Currently consumers of libclang have to require clang as well, although only the headers are needed.- llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Fix crash in rustc (boo#1126907)- Allow use of Gold linker to be conditional - Disable Gold linker on ppc + LLVM currently doesn't build with Gold on ppc- Readd clang-7 and clang++-7 symlinks * Fixes uses of clang-devel (boo#1120098)- Update to llvm 7.0.1 * This release contains bug-fixes for the LLVM 7.0.0 release. This release is API and ABI compatible with 7.0.0.- enable gold unconditionally like with llvm6 and older - reenable openmp support again for aarch64 (like it was already in llvm6)- Use %license macro - Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Remove ppc from Exclude field in spec file - Allow use of Gold linker to be conditional - Disable Gold linker on ppc - Add patch to fix SUSE GNU triplet on ppc * clang-fix-powerpc-triplet.patch - Add patch from upstream to fix ABI issue on ppc * llvm-D51108.patch - Limit list of enabled targets on ppc * PowerPC;AMDGPU;BPF;NVPTX - Ignore testsuite failures on ppc- llvm-drop-llvm-optional-clang-specific-optimization.patch * Fix ABI incompatibility when libLLVM (built with clang) is linked to a program build with gcc. (boo#1119092)- opt-viewer-Find-style-css-in-usr-share.patch * Make sure opt-viewer installed in /usr/bin can find resources from /usr/share/opt-viewer. (boo#1112730)- llvm-unittests-Don-t-install-TestPlugin.so.patch * It is only used for testing and is causing failures when processing LLVMExports.cmake.- Update to llvm 7.0.0 * For details, see the release notes: https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html - Remove no longer needed patches: * llvm6-fix-gdb-index-crash.patch * lldb-fix-build-with-python-3.7.patch * lldb-add-pthread-dl-libs.patch * polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - Add tests-use-python3.patch * Prevents tests from failing because of missing python 2. - Add llvm-better-detect-64bit-atomics-support.patch * Fixes build on i586.- Updated llvm-remove-clang-only-flags.patch - Exclude also "-Werror=unguarded-availability-new" (bsc#1106000)- Update to llvm 6.0.1 * This release contains bug-fixes for the LLVM 6.0.0 release. It is API and ABI compatible with 6.0.0. - Remove no longer needed llvm6-fix-InstCombine.patch - Add lldb-fix-build-with-python-3.7.patch * Fix build with python 3.7- llvm6-fix-gdb-index-crash.patch * From upstream, fix lld --gdb-index crash.- Do not requires gcc6 for older sle versions. * llvm6 is not built on <= 12 SP3 and this was preventing build on 12 SP4.- llvm_build_tablegen_component_as_shared_library.patch * Build TableGen component as its own shared library because it is not included in the libLLVM library and is needed for ldc. (bsc#1086445)- Add patch llvm6-fix-InstCombine.patch to fix InstCombine init * Will be fixed in 6.0.1 release- Do not build stage1 with debug info. It was accidentally added with the use of %optflags. This should fix out of memory errors on 32bit architectures and speed up build everywhere else. (bsc#1092697)- llvm-build-tests-with-rtti.patch * Fixes build failure with gcc 8. (bnc#1087136)- Do not export Polly static libraries which we do not distribute. * Updated llvm-do-not-install-static-libraries.patch - Use external jsoncpp instead of the bundled one. * Added polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - llvm6-devel must require llvm6-polly-devel * Files in llvm6-devel reference Polly.- Update to llvm 6.0.0 * Added polly * Notable changes: - Retpoline Spectre variant 2 mitigation - GlobalISel by default for AArch64 at -O0 - improved scheduling on several x86 micro-architectures - Clang defaults to -std=gnu++14 instead of -std=gnu++98 - support for some upcoming C++2a features - improved optimizations, new compiler warnings, many bug fixes, and more. - Use alternatives for clang's bash autocomplete to prevent conflicts with other versions.- Remove liblldb5 and lldb5-devel from baselibs.conf. They are only build for x86_64, so no point having them in baselibs.conf.- Use %optflags, except for FORTIFY_SOURCE which is not compatible with compiler-rt. - Exclude static libraries differently. * Drop llvm-split-static-library-exports-into-their-own-export-file.diff * Drop clang-split-static-library-exports-into-their-own-export-file.diff * Update llvm-do-not-install-static-libraries.patch to not use EXCLUDE_FROM_ALL which is not available in cmake 3.5. - This fixes build on SLE12. - Do not force gcc6 on OpenSUSE - fixes build. - Reduce the amount of concurent link jobs by increasing their memory requirement - to reduce stalls in OBS.- Cleanup %ifarch conditions, remove targets unintentionally added to s390/s390x. (bnc#1078436)- Limit the amount of parallel link jobs, but no longer limit compile jobs. This should prevent running out of memory during linking while not longer slowing down compilation. - Remove build dependency on procps- Reduce disk size requirement to 30GB in _constraints. We no longer need that much since we stopped building static libraries.- n_clang_allow_BUILD_SHARED_LIBRARY.patch * Allow buildling clang with BUILD_SHARED_LIBRARY while the rest is built with LLVM_LINK_LLVM_DYLIB. (bnc#1065464) - Remove clang-devel-static.- Place gold plugin to the right directory. (bnc#1073210) * It must be in /usr/lib/bfd-plugins on all architectures. * Remove llvm5-gold from baselibs.conf - nothing needs a 32bit version of it and it would now conflict with the 64bit one. - Reduce _constraints requirements on 32bit architectures. * Since we had to disable debuginfo on them, they require much less.- ignore make check error for PowerPC as bypass https://bugs.llvm.org/show_bug.cgi?id=35871- disable debuginfo build for ARM as well- Delete intermediate files during build to reduce total disk usage (bnc#1074625)- Update to llvm 5.0.1 * This release contains bug-fixes for the LLVM 5.0.0 release. * This release is API and ABI compatible with 5.0.0. - llvm-do-not-install-static-libraries.patch * Updated.- Increase minimum memory and disk sizes required for building in _constraints.- Rename python3-lldb to python3-lldb5 so it can work with llvm meta package.- Rename python packages to follow naming conventions. - Remove unnecessary dependencies on python3. - Make opt-viewer not require python2. * opt-viewer-Do-not-require-python-2.patch- Switch to python3. - Fix %check tests when used with python3. * Define LANG=C.UTF-8 when running the tests. - Add explicit Provides/Conflicts to llvm5-devel, clang5-devel-static and lldb5-devel. * These are required to be validated by obs repo-checker.- Use LLVM_OPTIMIZED_TABLEGEN to speed up build. (bnc#1064786) - Fix files of lldb4 to work correctly with update-alternatives. - Remove Conflicts clang(LLDB) from lldb4-devel - it does not exist. It would be provided automatically, but no such cmake file is installed. - llvm-do-not-install-static-libraries.patch * Do not install static libraries instead of installing them and deleting after. * Reduces disk usage during build. (bnc#1064786) - Do not build unnecessary parts during stage1. * Speeds up build a bit. (bnc#1064786)- Updated baselibs.conf to reference version 5 packages. - Deleted rogue llvm5.spec.r29 file. - Deleted arm_suse_support.diff, llvm-add_a_LLVM_USE_LINKER.patch, libsanitizer.patch. - No longer used, applied already in the source.- llvm-normally-versioned-libllvm.patch * Change libLLVM naming scheme to match our naming guidelines. * The reasons for the original naming scheme are no longer valid, more details in the patch.- Disable all thread related tests in libcxx. Many of them use timeouts to detect failure. They can fail randomly if the machine is under heavy load (happens often in OBS).- Drop llvm5-devel-static. llvm5-devel contains shared library with the same content.- Increase disk space requirement in _constraints to 45GB. Otherwise the build gets stuck in random places. - Skip build of lldb5 python on distributions with swig < 3.0.11- Copy from llvm4. - Update to llvm 5.0.0.- Use LLVM_BUILD_LLVM_DYLIB instead of BUILD_SHARED_LIBS to build single libLLVM library. This is the recommended way. The old way was causing various issues. * llvm-split-static-library-exports-into-their-own-export-file.diff * clang-split-static-library-exports-into-their-own-export-file.diff (bnc#1049703) - Add lld, linker for Clang/LLVM (sr#517692) - Include clang++-MAJOR.MINOR symbolic link (bnc#1012260) - Remove unnecessary dependency on flex and bison. - Make sure all binaries are managed by update-alternatives - Add llvm-add_a_LLVM_USE_LINKER.patch and link using gold to prevent memory exhaustion on some build machines. - Reduce debuginfo on x86 architecture. LLVM libraries are so big that they exhaust all memory on 32 bit machine if linked with full debuginfo. - Speed up build by skipping parts that are not required in stage1. - Build lldb in-tree as one of the llvm tools.- clang-ignore-stack-clash-protector.patch: ignore -fstack-clash-protection for now.- xlocale.patch: don't use obsolete - libsanitizer.patch: fix use of undocumented types- build fixes for armv6 (skip testsuite as it requires 64bit, set the list of targets to include ARM and remove triplet hack)- Include provides and conflics in baselibs.conf for llvm4-devel, clang4-devel, llvm4-LTO-devel, and llvm4-gold.- Update to version 4.0.1 * Minor bugfixes- Use gcc6 only for SLE boo#1041469- Package libLLVMFuzzer- readd arm_suse_support.diff which was accidentally removed in the 4.0.0 update- Enable AMDGPU and NVPTX targets everywhere except for S/390. The AMDGPU target is needed for Mesa Clover (sr#485802).- Use gcc6 on SLE12- Package license & credits- Update to version 4.0.0 * See + http://releases.llvm.org/4.0.0/docs/ReleaseNotes.html and + http://releases.llvm.org/4.0.0/tools/clang/docs/ReleaseNotes.html + http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - Drop the following patches, fixed upstream: amdgpu_revert_r280589.patch arm_suse_support.diff clang-fix-substitutions-abi_tag.patch clang-incomplete-field-types.patch glibc-2.24-libcxx.patch llvm-install-CheckAtomic.patch revert-cmake-soname.patch- Enable BPF for all arches bsc#1026191- libc++ must depend on libc++abi- Stop using otherproviders() due to an rpm parser bug, use self-conflicts instead as suggested by mls.- Add amdgpu_revert_r280589.patch to fix an amdgpu regression bsc#1021577- Require LLVMgold and libLTO in llvm-devel, otherwise we get in CMake: The imported target "LLVMgold" references the file "/usr/lib64/LLVMgold.so" but this file does not exist. This happens when requiring llvm3_9-devel directly, not llvm-devel.- Update to version 3.9.1 * See: + http://llvm.org/releases/3.9.1/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/tools/extra/docs/ReleaseNotes.html- Update to version 3.9.0 * Clang now supports the G++ abi_tag attribute. * Clang will no longer pass --build-id by default to the linker. * Improved C++1z support in Clang. * Clang now has support for all OpenCL 2.0 features. * Added support for all non-offloading features from OpenMP 4.5, * The static analyzer now checks for incorrect usage of MPI APIs in C and C++. * LLVM no longer does inter-procedural analysis and optimization (except inlining) on functions with comdat linkage. * LLVM now supports the Intel CPUs Skylake Server with AVX512 (-march=skylake-avx512) and Knights Landing (-march=knl). * More at: + http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/ReleaseNotes.html * Fix the following patches: + arm_suse_support.diff + assume-opensuse.patch + clang-resourcedirs.patch + default-to-i586.patch + glibc-2.23-libcxx.patch + glibc-2.24-libcxx.patch + lldb-add-pthread-dl-libs.patch + lldb-cmake.patch + llvm-fix-find-gcc5-install.patch + llvm-remove-clang-only-flags.patch + revert-cmake-soname.patch + set-revision.patch * Remove upstream-included patch: + llvm-nonvoid-return.patch * Remove patch for removed files: + glibc-2.23-libcxx.patch - Backport upstream patches: * clang-fix-substitutions-abi_tag.patch * clang-incomplete-field-types.patch * llvm-install-CheckAtomic.patch - Add clang%{_sonum}-include-fixer subpackage and associated libfindAllSymbols%{_sonum} and libfindAllSymbols%{_sonum}-devel subpackages. - Add sanstats to llvm binary list.- Change update-alternatives to use %postun instead of %preun, which is now what Factory maintainers are requesting. - Use the minor version to set the update-alternatives priority so the most recent version of the LLVM, Clang, and LLDB are used by default. - Add LLVM rpm macros so downstream packages can have some idea how LLVM was built.- Rename libomp to make it possible to have multiple versions available.- Split the old llvm package into this version-specific package and a wrapper package. - Implement update-alternatives to allow parallel installation of many of the subpackages. - Rename subpackages that can be parallel-installed to a version-specific name based on the associated shared library's current .so number. - Various fixes to support the above changes.- Sort a bit with spec-cleaner - Remove the latest switch for now, things should be either coinstallable or not, we don't need to bother around with compilation like this- Update to llvm 3.8.1 * See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html - Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8) - Change versioning of liblldb3_8 to liblldb-3_8 and use a variable to control the name instead of hard-coding it. - Use bcond_with and bcond_without to enable/disable build options instead of hard-coding them. - Put buildrequires as requires in -devel packages to avoid linker errors when building packages against the -devel packages. - Add ffi support (disabled by default). - Add oprofile support (disabled by default). - Add valgrind support (disabled by default). - Link cmake files to the normal cmake file directory to allow autodetection of cmake interfaces. - Remove unused lldb components from main spec file. - Split llvm python bindings into own subpackage. - Split emacs plugin into own subpackage - Move additional vim plugins into vim plugins package - Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages - Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since they aren't architecture-specific. - Make packages besides llvm, llvm-clang, and the shared libraries conflict with other versions. This will be important when multiple LLVM versions are supported. - Various spec file cleanups - Rebase patches: * arm_suse_support.diff * assume-opensuse.patch * clang-resourcedirs.patch * default-to-i586.patch * glibc-2.23-libcxx.patch * glibc-2.24-libcxx.patch * lldb-add-pthread-dl-libs.patch * lldb-cmake.patch * llvm-fix-find-gcc5-install.patch * llvm-nonvoid-return.patch * llvm-remove-clang-only-flags.patch * revert-cmake-soname.patch * set-revision.patch- Start conversion to use cmake macros with now introduced compatibility for ninja - Reduce number of threads if we don't have enough memory - Add patch for the nonvoid returns: * llvm-nonvoid-return.patch- for ppc64le set memory to 4GB in _constraints file (failure in Factory:PowerPC)- glibc-2.24-libcxx.patch: fix libcxx testsuite for glibc 2.24- Build LLDB separated from LLVM. - Re-enable python bindings for the LLDB API.- Disable libcxx/lldb/openmp for SLE fate#319582- Update rpmlintrc to whitelist libLTO.so- Re-enable glibc-2.23 patch for Tumbleweed- fix arm_suse_support.diff for armv6hl - adjust compile flags for llvm on armv6hl (fixes Mesa build)- Update llvm-remove-clang-only-flags.patch to remove - Wcovered-switch-default flag for gcc compatibility.- Use gcc for stage1 bootstrap - Add back libstdc++-devel dependency for clang since libc++ is only available for x86-64 atm.- Comment out glibc-2.23-libcxx.patch until glibc 2.23 actually hits the Factory.- Update to llvm 3.8.0 * See http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html - Fold lldb build into llvm and disable python support - Drop clang-disable-ada-extension.patch, libcxxabi-exceptions.patch and cmake-host-triple.patch - Add revert-cmake-soname.patch to fix soname handling- Add glibc-2.23-libcxx.patch to fix test failures with glibc 2.23- Remove FFI support because its fragile- Enable OpenMP for x86, x86_64, ppc64 and ppc64le- Enable all targets on x86, x86_64- Update to version 3.7.0 * See http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html - Merge aarch64-suse-support.patch into arm_suse_support.diff - Refresh arm_suse_support.diff, llvm-fix-find-gcc5-install.patch - Remove llvm-fix-parsearmarch.patch, upstream.- fix build on s390x (one typo in ifarch and one change in filelist)- Update to version 3.6.1 * No changelog upstream- Add llvm-fix-parsearmarch.patch to fix parsing armv{6,7}hl archs.- Update to version 3.6.0 * See http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html - Add python-xml dependency for regression tests - Removed the following patches, fixed upstream: * arm-remove-xfails.diff * libcxx-libdir.patch * llvm-config-lib64.patch * llvm-fix-intrusiverefcntptr.patch- Add llvm-fix-intrusiverefcntptr.patch to fix build of LLVM tools with GCC 5. - Add llvm-fix-find-gcc5-install.patch to properly find installed GCC 5.- Add a gcc dependency for clang, this is heavyweight but we need libgcc_s which comes with the gcc package (bnc#893359)- Conditionalize libcxx{abi} build on build_libcxx variable - Turn libc++.so into an ldscript so it links to libc++abi automatically.- fix constraints for armv6l/armv7l (there is no 4GB RAM on 32bit)/sbin/ldconfig/sbin/ldconfigi04-ch2a 1739186602  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst19.1.719.1.719.1.719.1.7-bp156.4.219.1.7-bp156.4.2        !!""""""""""""""""""""!!!!!!!!!!!!########################################################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$%%%%&&&&&&&&'''''(((((((((((((((((((((((((('''''))))))))*****)))))))))))))))))))))))))))))))+++++++++++++))))),,,,,,,,,,))''''-./.0.1.2.33.444.55555555555555666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777789:::;;;;;<<<<=>>?????????????????????@@@@????????????????????????AAAAAAAA????????????????????????????????????????BBBBBCCCCCCBBBBBBDDDDDDDDBBEFFEEEGGEHHEEEIIEJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLMMMMMMNNNNNNNOPPPPOOOOOOOOOOOOOOOOOOOOOOQQQQQQQQQQQQRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSUVSSSSSSSSWSSSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSYYYYYYYYYYYZZZZ[[[[ZZZZZZZZZZZZ\\\\\\\\\\\\\\\\\\\\\]^^]_]``aaaaaaaaaaaaaaaaaabcbdefeegggggeheeiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiejjeekkkkkkkkkkkkkkkkkkkkkkkkkeeelllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllleemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmennnnnnoopqqqrrrrrrrrrrrrrrrrrsttttttttttttttttttttttttttttttttttttttuvwuxyzz{{FileCheckllvm-configllvmllvm-cAnalysis.hBitReader.hBitWriter.hComdat.hCore.hDataTypes.hDebugInfo.hDeprecated.hDisassembler.hDisassemblerTypes.hError.hErrorHandling.hExecutionEngine.hExternC.hIRReader.hLLJIT.hLLJITUtils.hLinker.hObject.hOrc.hOrcEE.hRemarks.hSupport.hTarget.hTargetMachine.hTransformsPassBuilder.hTypes.hblake3.hlto.hADTADL.hAPFixedPoint.hAPFloat.hAPInt.hAPSInt.hAddressRanges.hAllocatorList.hAny.hArrayRef.hBitVector.hBitfields.hBitmaskEnum.hBitset.hBreadthFirstIterator.hCachedHashString.hCoalescingBitVector.hCombinationGenerator.hConcurrentHashtable.hDAGDeltaAlgorithm.hDeltaAlgorithm.hDenseMap.hDenseMapInfo.hDenseMapInfoVariant.hDenseSet.hDepthFirstIterator.hDirectedGraph.hDynamicAPInt.hEnumeratedArray.hEpochTracker.hEquivalenceClasses.hFloatingPointMode.hFoldingSet.hFunctionExtras.hGenericConvergenceVerifier.hGenericCycleImpl.hGenericCycleInfo.hGenericSSAContext.hGenericUniformityImpl.hGenericUniformityInfo.hGraphTraits.hHashing.hImmutableList.hImmutableMap.hImmutableSet.hIndexedMap.hIntEqClasses.hIntervalMap.hIntervalTree.hIntrusiveRefCntPtr.hLazyAtomicPointer.hMapVector.hPackedVector.hPagedVector.hPointerEmbeddedInt.hPointerIntPair.hPointerSumType.hPointerUnion.hPostOrderIterator.hPriorityQueue.hPriorityWorklist.hSCCIterator.hSTLExtras.hSTLForwardCompat.hSTLFunctionalExtras.hScopeExit.hScopedHashTable.hSequence.hSetOperations.hSetVector.hSlowDynamicAPInt.hSmallBitVector.hSmallPtrSet.hSmallSet.hSmallString.hSmallVector.hSmallVectorExtras.hSparseBitVector.hSparseMultiSet.hSparseSet.hStableHashing.hStatistic.hStringExtras.hStringMap.hStringMapEntry.hStringRef.hStringSet.hStringSwitch.hTinyPtrVector.hTwine.hTypeSwitch.hUniformity.hUniqueVector.hbit.hedit_distance.hfallible_iterator.hidentity.hilist.hilist_base.hilist_iterator.hilist_node.hilist_node_base.hilist_node_options.hiterator.hiterator_range.hsimple_ilist.hAnalysisAliasAnalysis.hAliasAnalysisEvaluator.hAliasSetTracker.hAssumeBundleQueries.hAssumptionCache.hBasicAliasAnalysis.hBlockFrequencyInfo.hBlockFrequencyInfoImpl.hBranchProbabilityInfo.hCFG.hCFGPrinter.hCFGSCCPrinter.hCGSCCPassManager.hCallGraph.hCallGraphSCCPass.hCallPrinter.hCaptureTracking.hCmpInstAnalysis.hCodeMetrics.hConstantFolding.hConstraintSystem.hCostModel.hCycleAnalysis.hDDG.hDDGPrinter.hDOTGraphTraitsPass.hDelinearization.hDemandedBits.hDependenceAnalysis.hDependenceGraphBuilder.hDomConditionCache.hDomPrinter.hDomTreeUpdater.hDominanceFrontier.hDominanceFrontierImpl.hEHUtils.hFunctionPropertiesAnalysis.hGenericDomTreeUpdater.hGenericDomTreeUpdaterImpl.hGlobalsModRef.hGuardUtils.hHeatUtils.hIRSimilarityIdentifier.hIVDescriptors.hIVUsers.hIndirectCallPromotionAnalysis.hIndirectCallVisitor.hInlineAdvisor.hInlineCost.hInlineModelFeatureMaps.hInlineOrder.hInlineSizeEstimatorAnalysis.hInstCount.hInstSimplifyFolder.hInstructionPrecedenceTracking.hInstructionSimplify.hInteractiveModelRunner.hIteratedDominanceFrontier.hLazyBlockFrequencyInfo.hLazyBranchProbabilityInfo.hLazyCallGraph.hLazyValueInfo.hLint.hLoads.hLoopAccessAnalysis.hLoopAnalysisManager.hLoopCacheAnalysis.hLoopInfo.hLoopIterator.hLoopNestAnalysis.hLoopPass.hLoopUnrollAnalyzer.hMLInlineAdvisor.hMLModelRunner.hMemDerefPrinter.hMemoryBuiltins.hMemoryDependenceAnalysis.hMemoryLocation.hMemoryProfileInfo.hMemorySSA.hMemorySSAUpdater.hModelUnderTrainingRunner.hModuleDebugInfoPrinter.hModuleSummaryAnalysis.hMustExecute.hNoInferenceModelRunner.hObjCARCAliasAnalysis.hObjCARCAnalysisUtils.hObjCARCInstKind.hObjCARCUtil.hOptimizationRemarkEmitter.hOverflowInstAnalysis.hPHITransAddr.hPasses.hPhiValues.hPostDominators.hProfileSummaryInfo.hPtrUseVisitor.hRegionInfo.hRegionInfoImpl.hRegionIterator.hRegionPass.hRegionPrinter.hReleaseModeModelRunner.hReplayInlineAdvisor.hScalarEvolution.hScalarEvolutionAliasAnalysis.hScalarEvolutionDivision.hScalarEvolutionExpressions.hScalarEvolutionNormalization.hScalarFuncs.defScopedNoAliasAA.hSimplifyQuery.hSparsePropagation.hStackLifetime.hStackSafetyAnalysis.hStructuralHash.hSyntheticCountsUtils.hTargetFolder.hTargetLibraryInfo.defTargetLibraryInfo.hTargetTransformInfo.hTargetTransformInfoImpl.hTensorSpec.hTrace.hTypeBasedAliasAnalysis.hTypeMetadataUtils.hUniformityAnalysis.hUtilsImportedFunctionsInliningStatistics.hLocal.hTFUtils.hTrainingLogger.hValueLattice.hValueLatticeUtils.hValueTracking.hVecFuncs.defVectorUtils.hWithCache.hAsmParserLLLexer.hLLParser.hLLToken.hNumberedValues.hParser.hSlotMapping.hBinaryFormatAMDGPUMetadataVerifier.hCOFF.hDXContainer.hDXContainerConstants.defDwarf.defDwarf.hDynamicTags.defELF.hELFRelocsAArch64.defAMDGPU.defARC.defARM.defAVR.defBPF.defCSKY.defHexagon.defLanai.defLoongArch.defM68k.defMSP430.defMips.defPowerPC.defPowerPC64.defRISCV.defSparc.defSystemZ.defVE.defXtensa.defi386.defx86_64.defGOFF.hMachO.defMachO.hMagic.hMinidump.hMinidumpConstants.defMsgPack.defMsgPack.hMsgPackDocument.hMsgPackReader.hMsgPackWriter.hSwift.defSwift.hWasm.hWasmRelocs.defWasmTraits.hXCOFF.hBitcodeBitcodeAnalyzer.hBitcodeCommon.hBitcodeConvenience.hBitcodeReader.hBitcodeWriter.hBitcodeWriterPass.hLLVMBitCodes.hBitstreamBitCodeEnums.hBitCodes.hBitstreamReader.hBitstreamWriter.hCodeGenAccelTable.hAnalysis.hAntiDepBreaker.hAsmPrinter.hAsmPrinterHandler.hAssignmentTrackingAnalysis.hAtomicExpand.hAtomicExpandUtils.hBasicBlockSectionUtils.hBasicBlockSectionsProfileReader.hBasicTTIImpl.hByteProvider.hCFIFixup.hCSEConfigBase.hCalcSpillWeights.hCallBrPrepare.hCallingConvLower.hCodeGenCommonISel.hCodeGenPrepare.hCommandFlags.hComplexDeinterleavingPass.hCostTable.hDAGCombine.hDFAPacketizer.hDIE.hDIEValue.defDbgEntityHistoryCalculator.hDeadMachineInstructionElim.hDebugHandlerBase.hDetectDeadLanes.hDwarfEHPrepare.hDwarfStringPoolEntry.hEdgeBundles.hExecutionDomainFix.hExpandLargeDivRem.hExpandLargeFpConvert.hExpandMemCmp.hExpandReductions.hExpandVectorPredication.hFastISel.hFaultMaps.hFinalizeISel.hFunctionLoweringInfo.hGCMetadata.hGCMetadataPrinter.hGenVT.incGlobalISelCSEInfo.hCSEMIRBuilder.hCallLowering.hCombiner.hCombinerHelper.hCombinerInfo.hGIMatchTableExecutor.hGIMatchTableExecutorImpl.hGISelChangeObserver.hGISelKnownBits.hGISelWorkList.hGenericMachineInstrs.hIRTranslator.hInlineAsmLowering.hInstructionSelect.hInstructionSelector.hLegacyLegalizerInfo.hLegalizationArtifactCombiner.hLegalizer.hLegalizerHelper.hLegalizerInfo.hLoadStoreOpt.hLocalizer.hLostDebugLocObserver.hMIPatternMatch.hMachineIRBuilder.hRegBankSelect.hUtils.hGlobalMerge.hHardwareLoops.hISDOpcodes.hIndirectBrExpand.hIndirectThunks.hInterleavedAccess.hInterleavedLoadCombine.hIntrinsicLowering.hJMCInstrumenter.hLatencyPriorityQueue.hLazyMachineBlockFrequencyInfo.hLexicalScopes.hLinkAllAsmWriterComponents.hLinkAllCodegenComponents.hLiveDebugVariables.hLiveInterval.hLiveIntervalCalc.hLiveIntervalUnion.hLiveIntervals.hLivePhysRegs.hLiveRangeCalc.hLiveRangeEdit.hLiveRegMatrix.hLiveRegUnits.hLiveStacks.hLiveVariables.hLocalStackSlotAllocation.hLoopTraversal.hLowLevelTypeUtils.hLowerEmuTLS.hMBFIWrapper.hMIRFSDiscriminator.hMIRFormatter.hMIRParserMIParser.hMIRParser.hMIRPrinter.hMIRSampleProfile.hMIRYamlMapping.hMachORelocation.hMachineBasicBlock.hMachineBlockFrequencyInfo.hMachineBranchProbabilityInfo.hMachineCFGPrinter.hMachineCombinerPattern.hMachineConstantPool.hMachineConvergenceVerifier.hMachineCycleAnalysis.hMachineDomTreeUpdater.hMachineDominanceFrontier.hMachineDominators.hMachineFrameInfo.hMachineFunction.hMachineFunctionAnalysis.hMachineFunctionPass.hMachineInstr.hMachineInstrBuilder.hMachineInstrBundle.hMachineInstrBundleIterator.hMachineJumpTableInfo.hMachineLoopInfo.hMachineLoopUtils.hMachineMemOperand.hMachineModuleInfo.hMachineModuleInfoImpls.hMachineModuleSlotTracker.hMachineOperand.hMachineOptimizationRemarkEmitter.hMachineOutliner.hMachinePassManager.hMachinePassRegistry.hMachinePipeliner.hMachinePostDominators.hMachineRegionInfo.hMachineRegisterInfo.hMachineSSAContext.hMachineSSAUpdater.hMachineScheduler.hMachineSizeOpts.hMachineStableHash.hMachineTraceMetrics.hMachineUniformityAnalysis.hMachineVerifier.hMacroFusion.hModuloSchedule.hMultiHazardRecognizer.hNonRelocatableStringpool.hPBQPCostAllocator.hGraph.hMath.hReductionRules.hSolution.hPBQPRAConstraint.hPHIElimination.hPasses.hPreISelIntrinsicLowering.hPseudoSourceValue.hPseudoSourceValueManager.hRDFGraph.hRDFLiveness.hRDFRegisters.hReachingDefAnalysis.hRegAllocCommon.hRegAllocFast.hRegAllocPBQP.hRegAllocRegistry.hRegister.hRegisterBank.hRegisterBankInfo.hRegisterClassInfo.hRegisterPressure.hRegisterScavenging.hRegisterUsageInfo.hReplaceWithVeclib.hResourcePriorityQueue.hRuntimeLibcallUtil.hSDNodeProperties.tdSDPatternMatch.hSafeStack.hScheduleDAG.hScheduleDAGInstrs.hScheduleDAGMutation.hScheduleDFS.hScheduleHazardRecognizer.hSchedulerRegistry.hScoreboardHazardRecognizer.hSelectOptimize.hSelectionDAG.hSelectionDAGAddressAnalysis.hSelectionDAGISel.hSelectionDAGNodes.hSelectionDAGTargetInfo.hShadowStackGCLowering.hSjLjEHPrepare.hSlotIndexes.hSpiller.hStackMaps.hStackProtector.hSwiftErrorValueTracking.hSwitchLoweringUtils.hTailDuplicator.hTargetCallingConv.hTargetFrameLowering.hTargetInstrInfo.hTargetLowering.hTargetLoweringObjectFileImpl.hTargetOpcodes.hTargetPassConfig.hTargetRegisterInfo.hTargetSchedule.hTargetSubtargetInfo.hTileShapeInfo.hTwoAddressInstructionPass.hTypePromotion.hUnreachableBlockElim.hVLIWMachineScheduler.hValueTypes.hValueTypes.tdVirtRegMap.hWasmEHFuncInfo.hWasmEHPrepare.hWinEHFuncInfo.hWinEHPrepare.hWindowScheduler.hCodeGenDataOutlinedHashTree.hOutlinedHashTreeRecord.hCodeGenTypesLowLevelType.hMachineValueType.hConfigAsmParsers.defAsmPrinters.defDisassemblers.defTargetExegesis.defTargetMCAs.defTargets.defabi-breaking.hllvm-config.hDWARFLinkerAddressesMap.hClassicDWARFLinker.hDWARFLinkerCompileUnit.hDWARFLinkerDeclContext.hDWARFStreamer.hDWARFFile.hDWARFLinkerBase.hIndexedValuesMap.hParallelDWARFLinker.hStringPool.hUtils.hDWPDWP.hDWPError.hDWPStringPool.hDebugInfoBTFBTF.defBTF.hBTFContext.hBTFParser.hCodeViewAppendingTypeTableBuilder.hCVRecord.hCVSymbolVisitor.hCVTypeVisitor.hCodeView.hCodeViewError.hCodeViewRecordIO.hCodeViewRegisters.defCodeViewSymbols.defCodeViewTypes.defContinuationRecordBuilder.hDebugChecksumsSubsection.hDebugCrossExSubsection.hDebugCrossImpSubsection.hDebugFrameDataSubsection.hDebugInlineeLinesSubsection.hDebugLinesSubsection.hDebugStringTableSubsection.hDebugSubsection.hDebugSubsectionRecord.hDebugSubsectionVisitor.hDebugSymbolRVASubsection.hDebugSymbolsSubsection.hDebugUnknownSubsection.hEnumTables.hFormatters.hFunctionId.hGUID.hGlobalTypeTableBuilder.hLazyRandomTypeCollection.hLine.hMergingTypeTableBuilder.hRecordName.hRecordSerialization.hSimpleTypeSerializer.hStringsAndChecksums.hSymbolDeserializer.hSymbolDumpDelegate.hSymbolDumper.hSymbolRecord.hSymbolRecordHelpers.hSymbolRecordMapping.hSymbolSerializer.hSymbolVisitorCallbackPipeline.hSymbolVisitorCallbacks.hSymbolVisitorDelegate.hTypeCollection.hTypeDeserializer.hTypeDumpVisitor.hTypeHashing.hTypeIndex.hTypeIndexDiscovery.hTypeRecord.hTypeRecordHelpers.hTypeRecordMapping.hTypeStreamMerger.hTypeSymbolEmitter.hTypeTableCollection.hTypeVisitorCallbackPipeline.hTypeVisitorCallbacks.hDIContext.hDWARFDWARFAbbreviationDeclaration.hDWARFAcceleratorTable.hDWARFAddressRange.hDWARFAttribute.hDWARFCompileUnit.hDWARFContext.hDWARFDataExtractor.hDWARFDebugAbbrev.hDWARFDebugAddr.hDWARFDebugArangeSet.hDWARFDebugAranges.hDWARFDebugFrame.hDWARFDebugInfoEntry.hDWARFDebugLine.hDWARFDebugLoc.hDWARFDebugMacro.hDWARFDebugPubTable.hDWARFDebugRangeList.hDWARFDebugRnglists.hDWARFDie.hDWARFExpression.hDWARFFormValue.hDWARFGdbIndex.hDWARFListTable.hDWARFLocationExpression.hDWARFObject.hDWARFRelocMap.hDWARFSection.hDWARFTypePrinter.hDWARFTypeUnit.hDWARFUnit.hDWARFUnitIndex.hDWARFVerifier.hGSYMDwarfTransformer.hExtractRanges.hFileEntry.hFileWriter.hFunctionInfo.hGsymCreator.hGsymReader.hHeader.hInlineInfo.hLineEntry.hLineTable.hLookupResult.hObjectFileTransformer.hOutputAggregator.hStringTable.hLogicalViewCoreLVCompare.hLVElement.hLVLine.hLVLocation.hLVObject.hLVOptions.hLVRange.hLVReader.hLVScope.hLVSort.hLVStringPool.hLVSupport.hLVSymbol.hLVType.hLVReaderHandler.hReadersLVBinaryReader.hLVCodeViewReader.hLVCodeViewVisitor.hLVDWARFReader.hMSFIMSFFile.hMSFBuilder.hMSFCommon.hMSFError.hMappedBlockStream.hPDBConcreteSymbolEnumerator.hDIADIADataStream.hDIAEnumDebugStreams.hDIAEnumFrameData.hDIAEnumInjectedSources.hDIAEnumLineNumbers.hDIAEnumSectionContribs.hDIAEnumSourceFiles.hDIAEnumSymbols.hDIAEnumTables.hDIAError.hDIAFrameData.hDIAInjectedSource.hDIALineNumber.hDIARawSymbol.hDIASectionContrib.hDIASession.hDIASourceFile.hDIASupport.hDIATable.hDIAUtils.hGenericError.hIPDBDataStream.hIPDBEnumChildren.hIPDBFrameData.hIPDBInjectedSource.hIPDBLineNumber.hIPDBRawSymbol.hIPDBSectionContrib.hIPDBSession.hIPDBSourceFile.hIPDBTable.hNativeDbiModuleDescriptor.hDbiModuleDescriptorBuilder.hDbiModuleList.hDbiStream.hDbiStreamBuilder.hEnumTables.hFormatUtil.hGSIStreamBuilder.hGlobalsStream.hHash.hHashTable.hISectionContribVisitor.hInfoStream.hInfoStreamBuilder.hInjectedSourceStream.hInputFile.hLinePrinter.hModuleDebugStream.hNamedStreamMap.hNativeCompilandSymbol.hNativeEnumGlobals.hNativeEnumInjectedSources.hNativeEnumLineNumbers.hNativeEnumModules.hNativeEnumSymbols.hNativeEnumTypes.hNativeExeSymbol.hNativeFunctionSymbol.hNativeInlineSiteSymbol.hNativeLineNumber.hNativePublicSymbol.hNativeRawSymbol.hNativeSession.hNativeSourceFile.hNativeSymbolEnumerator.hNativeTypeArray.hNativeTypeBuiltin.hNativeTypeEnum.hNativeTypeFunctionSig.hNativeTypePointer.hNativeTypeTypedef.hNativeTypeUDT.hNativeTypeVTShape.hPDBFile.hPDBFileBuilder.hPDBStringTable.hPDBStringTableBuilder.hPublicsStream.hRawConstants.hRawError.hRawTypes.hSymbolCache.hSymbolStream.hTpiHashing.hTpiStream.hTpiStreamBuilder.hPDB.hPDBContext.hPDBExtras.hPDBSymDumper.hPDBSymbol.hPDBSymbolAnnotation.hPDBSymbolBlock.hPDBSymbolCompiland.hPDBSymbolCompilandDetails.hPDBSymbolCompilandEnv.hPDBSymbolCustom.hPDBSymbolData.hPDBSymbolExe.hPDBSymbolFunc.hPDBSymbolFuncDebugEnd.hPDBSymbolFuncDebugStart.hPDBSymbolLabel.hPDBSymbolPublicSymbol.hPDBSymbolThunk.hPDBSymbolTypeArray.hPDBSymbolTypeBaseClass.hPDBSymbolTypeBuiltin.hPDBSymbolTypeCustom.hPDBSymbolTypeDimension.hPDBSymbolTypeEnum.hPDBSymbolTypeFriend.hPDBSymbolTypeFunctionArg.hPDBSymbolTypeFunctionSig.hPDBSymbolTypeManaged.hPDBSymbolTypePointer.hPDBSymbolTypeTypedef.hPDBSymbolTypeUDT.hPDBSymbolTypeVTable.hPDBSymbolTypeVTableShape.hPDBSymbolUnknown.hPDBSymbolUsingNamespace.hPDBTypes.hUDTLayout.hSymbolizeDIPrinter.hMarkup.hMarkupFilter.hSymbolizableModule.hSymbolizableObjectFile.hSymbolize.hDebuginfodBuildIDFetcher.hDebuginfod.hHTTPClient.hHTTPServer.hDemangleDemangle.hDemangleConfig.hItaniumDemangle.hItaniumNodes.defMicrosoftDemangle.hMicrosoftDemangleNodes.hStringViewExtras.hUtility.hExecutionEngineExecutionEngine.hGenericValue.hInterpreter.hJITEventListener.hJITLinkCOFF.hCOFF_x86_64.hDWARFRecordSectionSplitter.hEHFrameSupport.hELF.hELF_aarch32.hELF_aarch64.hELF_i386.hELF_loongarch.hELF_ppc64.hELF_riscv.hELF_x86_64.hJITLink.hJITLinkDylib.hJITLinkMemoryManager.hMachO.hMachO_arm64.hMachO_x86_64.hTableManager.haarch32.haarch64.hi386.hloongarch.hppc64.hriscv.hx86_64.hJITSymbol.hMCJIT.hOProfileWrapper.hObjectCache.hOrcCOFFPlatform.hCOFFVCRuntimeSupport.hCompileOnDemandLayer.hCompileUtils.hCore.hDebugObjectManagerPlugin.hDebugUtils.hDebuggingDebugInfoSupport.hDebuggerSupport.hDebuggerSupportPlugin.hPerfSupportPlugin.hVTuneSupportPlugin.hELFNixPlatform.hEPCDebugObjectRegistrar.hEPCDynamicLibrarySearchGenerator.hEPCEHFrameRegistrar.hEPCGenericDylibManager.hEPCGenericJITLinkMemoryManager.hEPCGenericMemoryAccess.hEPCGenericRTDyldMemoryManager.hEPCIndirectionUtils.hExecutionUtils.hExecutorProcessControl.hIRCompileLayer.hIRTransformLayer.hIndirectionUtils.hJITTargetMachineBuilder.hLLJIT.hLayer.hLazyReexports.hLookupAndRecordAddrs.hMachOBuilder.hMachOPlatform.hMangling.hMapperJITLinkMemoryManager.hMemoryMapper.hObjectFileInterface.hObjectLinkingLayer.hObjectTransformLayer.hOrcABISupport.hRTDyldObjectLinkingLayer.hSectCreate.hSharedAllocationActions.hExecutorAddress.hExecutorSymbolDef.hMemoryFlags.hObjectFormats.hOrcError.hOrcRTBridge.hPerfSharedStructs.hSimplePackedSerialization.hSimpleRemoteEPCUtils.hTargetProcessControlTypes.hVTuneSharedStructs.hWrapperFunctionUtils.hSimpleRemoteEPC.hSpeculateAnalyses.hSpeculation.hSymbolStringPool.hTargetProcessExecutorBootstrapService.hExecutorSharedMemoryMapperService.hJITLoaderGDB.hJITLoaderPerf.hJITLoaderVTune.hRegisterEHFrames.hSimpleExecutorDylibManager.hSimpleExecutorMemoryManager.hSimpleRemoteEPCServer.hTargetExecutionUtils.hTaskDispatch.hThreadSafeModule.hRTDyldMemoryManager.hRuntimeDyld.hRuntimeDyldChecker.hSectionMemoryManager.hFileCheckFileCheck.hFrontendDebugOptions.hDirectiveDirectiveBase.tdDriverCodeGenOptions.hHLSLHLSLResource.hOffloadingOffloadWrapper.hUtility.hOpenACCACC.h.incACC.incACC.tdOpenMPClauseT.hConstructCompositionT.hConstructDecompositionT.hOMP.hOMP.h.incOMP.incOMP.tdOMPAssume.hOMPConstants.hOMPContext.hOMPDeviceConstants.hOMPGridValues.hOMPIRBuilder.hOMPKinds.defFuzzMutateFuzzerCLI.hIRMutator.hOpDescriptor.hOperations.hRandom.hRandomIRBuilder.hIRAbstractCallSite.hAnalysis.hArgument.hAssemblyAnnotationWriter.hAssumptions.hAttributeMask.hAttributes.hAttributes.incAttributes.tdAutoUpgrade.hBasicBlock.hBuiltinGCs.hCFG.hCallingConv.hComdat.hConstant.hConstantFold.hConstantFolder.hConstantRange.hConstantRangeList.hConstants.hConstrainedOps.defConvergenceVerifier.hCycleInfo.hDIBuilder.hDataLayout.hDbgVariableFragmentInfo.hDebugInfo.hDebugInfoFlags.defDebugInfoMetadata.hDebugLoc.hDebugProgramInstruction.hDerivedTypes.hDerivedUser.hDiagnosticHandler.hDiagnosticInfo.hDiagnosticPrinter.hDominators.hEHPersonalities.hFMF.hFPEnv.hFixedMetadataKinds.defFixedPointBuilder.hFunction.hGCStrategy.hGEPNoWrapFlags.hGVMaterializer.hGenericConvergenceVerifierImpl.hGetElementPtrTypeIterator.hGlobalAlias.hGlobalIFunc.hGlobalObject.hGlobalValue.hGlobalVariable.hIRBuilder.hIRBuilderFolder.hIRPrintingPasses.hInlineAsm.hInstIterator.hInstVisitor.hInstrTypes.hInstruction.defInstruction.hInstructions.hIntrinsicEnums.incIntrinsicImpl.incIntrinsicInst.hIntrinsics.hIntrinsics.tdIntrinsicsAArch64.hIntrinsicsAArch64.tdIntrinsicsAMDGPU.hIntrinsicsAMDGPU.tdIntrinsicsARM.hIntrinsicsARM.tdIntrinsicsBPF.hIntrinsicsBPF.tdIntrinsicsDirectX.hIntrinsicsDirectX.tdIntrinsicsHexagon.hIntrinsicsHexagon.tdIntrinsicsHexagonDep.tdIntrinsicsLoongArch.hIntrinsicsLoongArch.tdIntrinsicsMips.hIntrinsicsMips.tdIntrinsicsNVPTX.hIntrinsicsNVVM.tdIntrinsicsPowerPC.hIntrinsicsPowerPC.tdIntrinsicsR600.hIntrinsicsRISCV.hIntrinsicsRISCV.tdIntrinsicsRISCVXCV.tdIntrinsicsRISCVXTHead.tdIntrinsicsRISCVXsf.tdIntrinsicsS390.hIntrinsicsSPIRV.hIntrinsicsSPIRV.tdIntrinsicsSystemZ.tdIntrinsicsVE.hIntrinsicsVE.tdIntrinsicsVEVL.gen.tdIntrinsicsWebAssembly.hIntrinsicsWebAssembly.tdIntrinsicsX86.hIntrinsicsX86.tdIntrinsicsXCore.hIntrinsicsXCore.tdLLVMContext.hLLVMRemarkStreamer.hLegacyPassManager.hLegacyPassManagers.hLegacyPassNameParser.hMDBuilder.hMangler.hMatrixBuilder.hMemoryModelRelaxationAnnotations.hMetadata.defMetadata.hModule.hModuleSlotTracker.hModuleSummaryIndex.hModuleSummaryIndexYAML.hNoFolder.hOperandTraits.hOperator.hOptBisect.hPassInstrumentation.hPassManager.hPassManagerImpl.hPassManagerInternal.hPassTimingInfo.hPatternMatch.hPredIteratorCache.hPrintPasses.hProfDataUtils.hProfileSummary.hPseudoProbe.hReplaceConstant.hRuntimeLibcalls.defRuntimeLibcalls.hSSAContext.hSafepointIRVerifier.hStatepoint.hStructuralHash.hSymbolTableListTraits.hTrackingMDRef.hType.hTypeFinder.hTypedPointerType.hUse.hUseListOrder.hUser.hVFABIDemangler.hVPIntrinsics.defValue.defValue.hValueHandle.hValueMap.hValueSymbolTable.hVectorBuilder.hVerifier.hIRPrinterIRPrintingPasses.hIRReaderIRReader.hInitializePasses.hInterfaceStubELFObjHandler.hIFSHandler.hIFSStub.hLTOConfig.hLTO.hLTOBackend.hSummaryBasedOptimizations.hlegacyLTOCodeGenerator.hLTOModule.hThinLTOCodeGenerator.hUpdateCompilerUsed.hLineEditorLineEditor.hLinkAllIR.hLinkAllPasses.hLinkerIRMover.hLinker.hMCConstantPools.hDXContainerPSVInfo.hLaneBitmask.hMCAsmBackend.hMCAsmInfo.hMCAsmInfoCOFF.hMCAsmInfoDarwin.hMCAsmInfoELF.hMCAsmInfoGOFF.hMCAsmInfoWasm.hMCAsmInfoXCOFF.hMCAsmMacro.hMCAssembler.hMCCodeEmitter.hMCCodeView.hMCContext.hMCDXContainerStreamer.hMCDXContainerWriter.hMCDecoderOps.hMCDirectives.hMCDisassemblerMCDisassembler.hMCExternalSymbolizer.hMCRelocationInfo.hMCSymbolizer.hMCDwarf.hMCELFExtras.hMCELFObjectWriter.hMCELFStreamer.hMCExpr.hMCFixup.hMCFixupKindInfo.hMCFragment.hMCGOFFObjectWriter.hMCGOFFStreamer.hMCInst.hMCInstBuilder.hMCInstPrinter.hMCInstrAnalysis.hMCInstrDesc.hMCInstrInfo.hMCInstrItineraries.hMCLabel.hMCLinkerOptimizationHint.hMCMachObjectWriter.hMCObjectFileInfo.hMCObjectStreamer.hMCObjectWriter.hMCParserAsmCond.hAsmLexer.hMCAsmLexer.hMCAsmParser.hMCAsmParserExtension.hMCAsmParserUtils.hMCParsedAsmOperand.hMCTargetAsmParser.hMCPseudoProbe.hMCRegister.hMCRegisterInfo.hMCSPIRVObjectWriter.hMCSPIRVStreamer.hMCSchedule.hMCSection.hMCSectionCOFF.hMCSectionDXContainer.hMCSectionELF.hMCSectionGOFF.hMCSectionMachO.hMCSectionSPIRV.hMCSectionWasm.hMCSectionXCOFF.hMCStreamer.hMCSubtargetInfo.hMCSymbol.hMCSymbolCOFF.hMCSymbolELF.hMCSymbolGOFF.hMCSymbolMachO.hMCSymbolTableEntry.hMCSymbolWasm.hMCSymbolXCOFF.hMCTargetOptions.hMCTargetOptionsCommandFlags.hMCValue.hMCWasmObjectWriter.hMCWasmStreamer.hMCWin64EH.hMCWinCOFFObjectWriter.hMCWinCOFFStreamer.hMCWinEH.hMCXCOFFObjectWriter.hMCXCOFFStreamer.hMachineLocation.hSectionKind.hStringTableBuilder.hTargetRegistry.hMCACodeEmitter.hContext.hCustomBehaviour.hHWEventListener.hHardwareUnitsHardwareUnit.hLSUnit.hRegisterFile.hResourceManager.hRetireControlUnit.hScheduler.hIncrementalSourceMgr.hInstrBuilder.hInstruction.hPipeline.hSourceMgr.hStagesDispatchStage.hEntryStage.hExecuteStage.hInOrderIssueStage.hInstructionTables.hMicroOpQueueStage.hRetireStage.hStage.hSupport.hView.hObjCopyCOFFCOFFConfig.hCOFFObjcopy.hCommonConfig.hConfigManager.hELFELFConfig.hELFObjcopy.hMachOMachOConfig.hMachOObjcopy.hMultiFormatConfig.hObjCopy.hXCOFFXCOFFConfig.hXCOFFObjcopy.hwasmWasmConfig.hWasmObjcopy.hObjectArchive.hArchiveWriter.hBinary.hBuildID.hCOFF.hCOFFImportFile.hCOFFModuleDefinition.hCVDebugRecord.hDXContainer.hDecompressor.hELF.hELFObjectFile.hELFTypes.hError.hFaultMapParser.hGOFF.hGOFFObjectFile.hIRObjectFile.hIRSymtab.hMachO.hMachOUniversal.hMachOUniversalWriter.hMinidump.hModuleSymbolTable.hObjectFile.hOffloadBinary.hRelocationResolver.hStackMapParser.hSymbolSize.hSymbolicFile.hTapiFile.hTapiUniversal.hWasm.hWindowsMachineFlag.hWindowsResource.hXCOFFObjectFile.hObjectYAMLArchiveYAML.hCOFFYAML.hCodeViewYAMLDebugSections.hCodeViewYAMLSymbols.hCodeViewYAMLTypeHashing.hCodeViewYAMLTypes.hDWARFEmitter.hDWARFYAML.hDXContainerYAML.hELFYAML.hGOFFYAML.hMachOYAML.hMinidumpYAML.hObjectYAML.hOffloadYAML.hWasmYAML.hXCOFFYAML.hYAML.hyaml2obj.hOptionArg.hArgList.hOptParser.tdOptSpecifier.hOptTable.hOption.hPass.hPassAnalysisSupport.hPassInfo.hPassRegistry.hPassSupport.hPassesCodeGenPassBuilder.hMachinePassRegistry.defOptimizationLevel.hPassBuilder.hPassPlugin.hStandardInstrumentations.hTargetPassRegistry.incProfileDataCoverageCoverageMapping.hCoverageMappingReader.hCoverageMappingWriter.hMCDCTypes.hCtxInstrContextNode.hFunctionId.hGCOV.hHashKeyMap.hInstrProf.hInstrProfCorrelator.hInstrProfData.incInstrProfReader.hInstrProfWriter.hItaniumManglingCanonicalizer.hMIBEntryDef.incMemProf.hMemProfData.incMemProfReader.hPGOCtxProfReader.hPGOCtxProfWriter.hProfileCommon.hRawMemProfReader.hSampleProf.hSampleProfReader.hSampleProfWriter.hSymbolRemappingReader.hRemarksBitstreamRemarkContainer.hBitstreamRemarkParser.hBitstreamRemarkSerializer.hHotnessThresholdParser.hRemark.hRemarkFormat.hRemarkLinker.hRemarkParser.hRemarkSerializer.hRemarkStreamer.hRemarkStringTable.hYAMLRemarkSerializer.hSandboxIRSandboxIR.hSandboxIRValues.defTracker.hUse.hSupportAMDGPUAddrSpace.hAMDGPUMetadata.hAMDHSAKernelDescriptor.hARMAttributeParser.hARMBuildAttributes.hARMEHABI.hARMWinEH.hAlignOf.hAlignment.hAllocator.hAllocatorBase.hArrayRecycler.hAtomic.hAtomicOrdering.hAutoConvert.hAutomaton.hBCD.hBLAKE3.hBalancedPartitioning.hBase64.hBinaryByteStream.hBinaryItemStream.hBinaryStream.hBinaryStreamArray.hBinaryStreamError.hBinaryStreamReader.hBinaryStreamRef.hBinaryStreamWriter.hBlockFrequency.hBranchProbability.hBuryPointer.hCBindingWrapping.hCFGDiff.hCFGUpdate.hCOM.hCRC.hCSKYAttributeParser.hCSKYAttributes.hCachePruning.hCaching.hCapacity.hCasting.hCheckedArithmetic.hChrono.hCodeGen.hCodeGenCoverage.hCommandLine.hCompiler.hCompression.hConvertEBCDIC.hConvertUTF.hCrashRecoveryContext.hDJB.hDOTGraphTraits.hDXILABI.hDataExtractor.hDataTypes.hDebug.hDebugCounter.hDiscriminator.hDivisionByConstantInfo.hDuration.hDynamicLibrary.hELFAttributeParser.hELFAttributes.hEndian.hEndianStream.hErrc.hErrno.hError.hErrorHandling.hErrorOr.hExitCodes.hExponentialBackoff.hExtensibleRTTI.hExtension.defFileCollector.hFileOutputBuffer.hFileSystemFileSystem.hUniqueID.hFileUtilities.hFormat.hFormatAdapters.hFormatCommon.hFormatProviders.hFormatVariadic.hFormatVariadicDetails.hFormattedStream.hGenericDomTree.hGenericDomTreeConstruction.hGenericIteratedDominanceFrontier.hGenericLoopInfo.hGenericLoopInfoImpl.hGlobPattern.hGraphWriter.hHashBuilder.hHexagonAttributeParser.hHexagonAttributes.hInitLLVM.hInstructionCost.hJSON.hKnownBits.hLEB128.hLICENSE.TXTLLVMDriver.hLineIterator.hLocale.hLockFileManager.hLogicalResult.hMD5.hMSP430AttributeParser.hMSP430Attributes.hMSVCErrorWorkarounds.hManagedStatic.hMathExtras.hMemAlloc.hMemory.hMemoryBuffer.hMemoryBufferRef.hMipsABIFlags.hModRef.hMutex.hNativeFormatting.hOnDiskHashTable.hOptimizedStructLayout.hPGOOptions.hParallel.hPath.hPerThreadBumpPtrAllocator.hPluginLoader.hPointerLikeTypeTraits.hPrettyStackTrace.hPrintable.hProcess.hProgram.hRISCVAttributeParser.hRISCVAttributes.hRISCVISAUtils.hRWMutex.hRandomNumberGenerator.hRecycler.hRecyclingAllocator.hRegex.hRegistry.hReverseIteration.hSHA1.hSHA256.hSMLoc.hSMTAPI.hSaveAndRestore.hScaledNumber.hScopedPrinter.hSignals.hSignposts.hSipHash.hSmallVectorMemoryBuffer.hSolarissysregset.hSourceMgr.hSpecialCaseList.hStringSaver.hSuffixTree.hSuffixTreeNode.hSwapByteOrder.hSystemUtils.hSystemZzOSSupport.hTarWriter.hTargetOpcodes.defTargetSelect.hThreadPool.hThreadSafeAllocator.hThreading.hTimeProfiler.hTimer.hToolOutputFile.hTrailingObjects.hTypeName.hTypeSize.hUnicode.hUnicodeCharRanges.hVCSRevision.hValgrind.hVersionTuple.hVirtualFileSystem.hWatchdog.hWin64EH.hWindowsWindowsSupport.hWindowsError.hWithColor.hX86DisassemblerDecoderCommon.hX86FoldTablesUtils.hYAMLParser.hYAMLTraits.hcircular_raw_ostream.hfloat128.hraw_os_ostream.hraw_ostream.hraw_sha1_ostream.hraw_socket_stream.hthread.htype_traits.hxxhash.hTableGenAutomaton.tdDirectiveEmitter.hError.hMain.hParser.hRecord.hSearchableTable.tdSetTheory.hStringMatcher.hStringToOffsetTable.hTableGenBackend.hTargetCGPassBuilderOption.hCodeGenCWrappers.hGenericOpcodes.tdGlobalISelCombine.tdRegisterBank.tdSelectionDAGCompat.tdTarget.tdTarget.tdTargetCallingConv.tdTargetInstrPredicate.tdTargetIntrinsicInfo.hTargetItinerary.tdTargetLoweringObjectFile.hTargetMachine.hTargetMacroFusion.tdTargetOptions.hTargetPfmCounters.tdTargetSchedule.tdTargetSelectionDAG.tdTargetParserAArch64CPUFeatures.incAArch64TargetParser.hAArch64TargetParserDef.incARMTargetParser.defARMTargetParser.hARMTargetParserCommon.hARMTargetParserDef.incCSKYTargetParser.defCSKYTargetParser.hHost.hLoongArchTargetParser.defLoongArchTargetParser.hPPCTargetParser.defRISCVISAInfo.hRISCVTargetParser.hRISCVTargetParserDef.incSubtargetFeature.hTargetParser.hTriple.hX86TargetParser.defX86TargetParser.hTestingADTStringMap.hStringMapEntry.hAnnotationsAnnotations.hSupportError.hSupportHelpers.hTextAPIArchitecture.defArchitecture.hArchitectureSet.hDylibReader.hFileTypes.hInterfaceFile.hPackedVersion.hPlatform.hRecord.hRecordVisitor.hRecordsSlice.hSymbol.hSymbolSet.hTarget.hTextAPIError.hTextAPIReader.hTextAPIWriter.hUtils.hToolDriversllvm-dlltoolDlltoolDriver.hllvm-libLibDriver.hTransformsAggressiveInstCombineAggressiveInstCombine.hCFGuard.hCoroutinesCoroCleanup.hCoroConditionalWrapper.hCoroEarly.hCoroElide.hCoroSplit.hHipStdParHipStdPar.hIPOIPO.hAlwaysInliner.hAnnotation2Metadata.hArgumentPromotion.hAttributor.hBlockExtractor.hCalledValuePropagation.hConstantMerge.hCrossDSOCFI.hDeadArgumentElimination.hElimAvailExtern.hEmbedBitcodePass.hExpandVariadics.hExtractGV.hForceFunctionAttrs.hFunctionAttrs.hFunctionImport.hFunctionSpecialization.hGlobalDCE.hGlobalOpt.hGlobalSplit.hHotColdSplitting.hIROutliner.hInferFunctionAttrs.hInliner.hInternalize.hLoopExtractor.hLowerTypeTests.hMemProfContextDisambiguation.hMergeFunctions.hModuleInliner.hOpenMPOpt.hPartialInlining.hProfiledCallGraph.hSCCP.hSampleContextTracker.hSampleProfile.hSampleProfileMatcher.hSampleProfileProbe.hStripDeadPrototypes.hStripSymbols.hSyntheticCountsPropagation.hThinLTOBitcodeWriter.hWholeProgramDevirt.hInstCombineInstCombine.hInstCombiner.hInstrumentationInstrumentation.hAddressSanitizer.hAddressSanitizerCommon.hAddressSanitizerOptions.hBlockCoverageInference.hBoundsChecking.hCFGMST.hCGProfile.hControlHeightReduction.hDataFlowSanitizer.hGCOVProfiler.hHWAddressSanitizer.hInstrOrderFile.hInstrProfiling.hKCFI.hLowerAllowCheckPass.hMemProfiler.hMemorySanitizer.hNumericalStabilitySanitizer.hPGOCtxProfLowering.hPGOForceFunctionAttrs.hPGOInstrumentation.hPoisonChecking.hSanitizerBinaryMetadata.hSanitizerCoverage.hThreadSanitizer.hObjCARC.hScalarScalar.hADCE.hAlignmentFromAssumptions.hAnnotationRemarks.hBDCE.hCallSiteSplitting.hConstantHoisting.hConstraintElimination.hCorrelatedValuePropagation.hDCE.hDFAJumpThreading.hDeadStoreElimination.hDivRemPairs.hEarlyCSE.hFlattenCFG.hFloat2Int.hGVN.hGVNExpression.hGuardWidening.hIVUsersPrinter.hIndVarSimplify.hInductiveRangeCheckElimination.hInferAddressSpaces.hInferAlignment.hInstSimplifyPass.hJumpTableToSwitch.hJumpThreading.hLICM.hLoopAccessAnalysisPrinter.hLoopBoundSplit.hLoopDataPrefetch.hLoopDeletion.hLoopDistribute.hLoopFlatten.hLoopFuse.hLoopIdiomRecognize.hLoopInstSimplify.hLoopInterchange.hLoopLoadElimination.hLoopPassManager.hLoopPredication.hLoopRotation.hLoopSimplifyCFG.hLoopSink.hLoopStrengthReduce.hLoopUnrollAndJamPass.hLoopUnrollPass.hLoopVersioningLICM.hLowerAtomicPass.hLowerConstantIntrinsics.hLowerExpectIntrinsic.hLowerGuardIntrinsic.hLowerMatrixIntrinsics.hLowerWidenableCondition.hMakeGuardsExplicit.hMemCpyOptimizer.hMergeICmps.hMergedLoadStoreMotion.hNaryReassociate.hNewGVN.hPartiallyInlineLibCalls.hPlaceSafepoints.hReassociate.hReg2Mem.hRewriteStatepointsForGC.hSCCP.hSROA.hScalarizeMaskedMemIntrin.hScalarizer.hSeparateConstOffsetFromGEP.hSimpleLoopUnswitch.hSimplifyCFG.hSink.hSpeculativeExecution.hStraightLineStrengthReduce.hStructurizeCFG.hTLSVariableHoist.hTailRecursionElimination.hWarnMissedTransforms.hUtilsUtils.hAMDGPUEmitPrintf.hASanStackFrameLayout.hAddDiscriminators.hAssumeBundleBuilder.hBasicBlockUtils.hBreakCriticalEdges.hBuildLibCalls.hBypassSlowDivision.hCallGraphUpdater.hCallPromotionUtils.hCanonicalizeAliases.hCanonicalizeFreezeInLoops.hCloning.hCodeExtractor.hCodeLayout.hCodeMoverUtils.hCountVisits.hCtorUtils.hDXILResource.hDXILUpgrade.hDebugify.hEntryExitInstrumenter.hEscapeEnumerator.hEvaluator.hFixIrreducible.hFunctionComparator.hFunctionImportUtils.hGlobalStatus.hGuardUtils.hHelloWorld.hInjectTLIMappings.hInstructionNamer.hInstructionWorklist.hIntegerDivision.hLCSSA.hLibCallsShrinkWrap.hLocal.hLoopConstrainer.hLoopPeel.hLoopRotationUtils.hLoopSimplify.hLoopUtils.hLoopVersioning.hLowerAtomic.hLowerGlobalDtors.hLowerIFunc.hLowerInvoke.hLowerMemIntrinsics.hLowerSwitch.hMatrixUtils.hMem2Reg.hMemoryOpRemark.hMemoryTaggingSupport.hMetaRenamer.hMisExpect.hModuleUtils.hMoveAutoInit.hNameAnonGlobals.hPredicateInfo.hPromoteMemToReg.hRelLookupTableConverter.hSCCPSolver.hSSAUpdater.hSSAUpdaterBulk.hSSAUpdaterImpl.hSampleProfileInference.hSampleProfileLoaderBaseImpl.hSampleProfileLoaderBaseUtil.hSanitizerStats.hScalarEvolutionExpander.hSimplifyCFGOptions.hSimplifyIndVar.hSimplifyLibCalls.hSizeOpts.hSplitModule.hStripGCRelocates.hStripNonLineTableDebugInfo.hSymbolRewriter.hUnifyFunctionExitNodes.hUnifyLoopExits.hUnrollLoop.hVNCoercion.hValueMapper.hVectorizeLoadStoreVectorizer.hLoopIdiomVectorize.hLoopVectorizationLegality.hLoopVectorize.hSLPVectorizer.hVectorCombine.hWindowsDriverMSVCPaths.hMSVCSetupApi.hWindowsManifestWindowsManifestMerger.hWindowsResourceResourceProcessor.hResourceScriptToken.hResourceScriptTokenList.hXRayBlockIndexer.hBlockPrinter.hBlockVerifier.hFDRLogBuilder.hFDRRecordConsumer.hFDRRecordProducer.hFDRRecords.hFDRTraceExpander.hFDRTraceWriter.hFileHeaderReader.hGraph.hInstrumentationMap.hProfile.hRecordPrinter.hTrace.hXRayRecord.hYAMLXRayRecord.hllvmAddLLVM.cmakeAddOCaml.cmakeAddSphinxTarget.cmakeCheckAtomic.cmakeCheckCompilerVersion.cmakeCheckProblematicConfigurations.cmakeCoverageReport.cmakeCrossCompile.cmakeDetermineGCCCompatible.cmakeFindFFI.cmakeFindLibEdit.cmakeFindLibpfm.cmakeFindOCaml.cmakeFindSphinx.cmakeFindZ3.cmakeFindzstd.cmakeGenerateVersionFromVCS.cmakeGetErrcMessages.cmakeGetLibraryName.cmakeHandleLLVMOptions.cmakeHandleLLVMStdlib.cmakeLLVM-Build.cmakeLLVM-Config.cmakeLLVMCheckLinkerFlag.cmakeLLVMConfig.cmakeLLVMConfigExtensions.cmakeLLVMConfigVersion.cmakeLLVMDistributionSupport.cmakeLLVMExports-relwithdebinfo.cmakeLLVMExports.cmakeLLVMExternalProjectUtils.cmakeLLVMInstallSymlink.cmakeLLVMProcessSources.cmakeTableGen.cmakeTensorFlowCompile.cmakeUseLibtool.cmakeVersionFromVCS.cmakellvm-driver-template.cpp.inlibLLVM.solibLLVMTableGen.solibLTO.solibRemarks.somacros.llvmllvm19-develCREDITS.TXTLICENSE.TXTFileCheck.1.gzllvm-config.1.gz/usr/bin//usr/include//usr/include/llvm-c//usr/include/llvm-c/Transforms//usr/include/llvm//usr/include/llvm/ADT//usr/include/llvm/Analysis//usr/include/llvm/Analysis/Utils//usr/include/llvm/AsmParser//usr/include/llvm/BinaryFormat//usr/include/llvm/BinaryFormat/ELFRelocs//usr/include/llvm/Bitcode//usr/include/llvm/Bitstream//usr/include/llvm/CodeGen//usr/include/llvm/CodeGen/GlobalISel//usr/include/llvm/CodeGen/MIRParser//usr/include/llvm/CodeGen/PBQP//usr/include/llvm/CodeGenData//usr/include/llvm/CodeGenTypes//usr/include/llvm/Config//usr/include/llvm/DWARFLinker//usr/include/llvm/DWARFLinker/Classic//usr/include/llvm/DWARFLinker/Parallel//usr/include/llvm/DWP//usr/include/llvm/DebugInfo//usr/include/llvm/DebugInfo/BTF//usr/include/llvm/DebugInfo/CodeView//usr/include/llvm/DebugInfo/DWARF//usr/include/llvm/DebugInfo/GSYM//usr/include/llvm/DebugInfo/LogicalView//usr/include/llvm/DebugInfo/LogicalView/Core//usr/include/llvm/DebugInfo/LogicalView/Readers//usr/include/llvm/DebugInfo/MSF//usr/include/llvm/DebugInfo/PDB//usr/include/llvm/DebugInfo/PDB/DIA//usr/include/llvm/DebugInfo/PDB/Native//usr/include/llvm/DebugInfo/Symbolize//usr/include/llvm/Debuginfod//usr/include/llvm/Demangle//usr/include/llvm/ExecutionEngine//usr/include/llvm/ExecutionEngine/JITLink//usr/include/llvm/ExecutionEngine/Orc//usr/include/llvm/ExecutionEngine/Orc/Debugging//usr/include/llvm/ExecutionEngine/Orc/Shared//usr/include/llvm/ExecutionEngine/Orc/TargetProcess//usr/include/llvm/FileCheck//usr/include/llvm/Frontend//usr/include/llvm/Frontend/Debug//usr/include/llvm/Frontend/Directive//usr/include/llvm/Frontend/Driver//usr/include/llvm/Frontend/HLSL//usr/include/llvm/Frontend/Offloading//usr/include/llvm/Frontend/OpenACC//usr/include/llvm/Frontend/OpenMP//usr/include/llvm/FuzzMutate//usr/include/llvm/IR//usr/include/llvm/IRPrinter//usr/include/llvm/IRReader//usr/include/llvm/InterfaceStub//usr/include/llvm/LTO//usr/include/llvm/LTO/legacy//usr/include/llvm/LineEditor//usr/include/llvm/Linker//usr/include/llvm/MC//usr/include/llvm/MC/MCDisassembler//usr/include/llvm/MC/MCParser//usr/include/llvm/MCA//usr/include/llvm/MCA/HardwareUnits//usr/include/llvm/MCA/Stages//usr/include/llvm/ObjCopy//usr/include/llvm/ObjCopy/COFF//usr/include/llvm/ObjCopy/ELF//usr/include/llvm/ObjCopy/MachO//usr/include/llvm/ObjCopy/XCOFF//usr/include/llvm/ObjCopy/wasm//usr/include/llvm/Object//usr/include/llvm/ObjectYAML//usr/include/llvm/Option//usr/include/llvm/Passes//usr/include/llvm/ProfileData//usr/include/llvm/ProfileData/Coverage//usr/include/llvm/Remarks//usr/include/llvm/SandboxIR//usr/include/llvm/Support//usr/include/llvm/Support/FileSystem//usr/include/llvm/Support/Solaris//usr/include/llvm/Support/Solaris/sys//usr/include/llvm/Support/SystemZ//usr/include/llvm/Support/Windows//usr/include/llvm/TableGen//usr/include/llvm/Target//usr/include/llvm/Target/GlobalISel//usr/include/llvm/TargetParser//usr/include/llvm/Testing//usr/include/llvm/Testing/ADT//usr/include/llvm/Testing/Annotations//usr/include/llvm/Testing/Support//usr/include/llvm/TextAPI//usr/include/llvm/ToolDrivers//usr/include/llvm/ToolDrivers/llvm-dlltool//usr/include/llvm/ToolDrivers/llvm-lib//usr/include/llvm/Transforms//usr/include/llvm/Transforms/AggressiveInstCombine//usr/include/llvm/Transforms/Coroutines//usr/include/llvm/Transforms/HipStdPar//usr/include/llvm/Transforms/IPO//usr/include/llvm/Transforms/InstCombine//usr/include/llvm/Transforms/Instrumentation//usr/include/llvm/Transforms/Scalar//usr/include/llvm/Transforms/Utils//usr/include/llvm/Transforms/Vectorize//usr/include/llvm/WindowsDriver//usr/include/llvm/WindowsManifest//usr/include/llvm/WindowsResource//usr/include/llvm/XRay//usr/lib/cmake//usr/lib/cmake/llvm//usr/lib//usr/lib//usr/lib//usr/lib/rpm/macros.d//usr/share/licenses//usr/share/licenses/llvm19-devel//usr/share/man/man1/-fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protectionobs://build.opensuse.org/openSUSE:Maintenance:18779/openSUSE_Backports_SLE-15-SP6_Update/aef49d1de88d378a0b0a1519e70c4690-llvm19.openSUSE_Backports_SLE-15-SP6_Updatedrpmxz5i586-suse-linux       ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=f821ed68fd2196a4f61f58d3c7cfdeb8e451a16f, not strippedELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=7172e67c6ed154373815c45dd7490f52af61a42f, not strippeddirectoryC source, ASCII textC++ source, ASCII textC++ source, UTF-8 Unicode (with BOM) textC++ source, UTF-8 Unicode textASCII textC source, UTF-8 Unicode textC++ source, ASCII text, with very long linesC source, ASCII text, with very long linesASCII text, with very long linesASCII text, with no line terminatorstroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix) 57 RRRRRR R RR RRR RRRR R&R R"RR'R#RR$R!RRRRRRRRRRRRRRR R%RR R"RR'R#RR!RRRRPPPP4a)f!.cutf-8342e02cf3638e181abb13bddf6e4a2c5fa1078d82938fcf04f14c76c4c9608c5?7zXZ !t/7*]"k%"γIflD.p[nB ( 0t<_Wy ߇ɞ񨵦#~kowTY όF}NH1C'V9v_.UpVKбQ(9Ȕ[e{g\M+POOU(wNiUɖd5efٴrŒJZPrgb\|>DxX|ސ1:O 優5q&- TReSN =q ^,1Pܓ&7&Z 2Bf:9}p\w|.K8Хdu\?FR^N~ d".c"! tVBz:{gxZyc\ HvD[Hܪz ?0JXa gWW qO;4H2ABrF)Zgz 7[QwӠ#xЍ0_X m~S|~'Zjf4ۺ4@$ΚMBz=i/=4\-"1J0Ɉ*2JQ9q,!x>Fy> 1wt .)QR ZwƎ?3 "Ktt1O5toufǶ ̵Vo1c>]J*o<;H*&aO5*jܖ "7{R GSQ;uL#Qnd/sF -4<Ȉ؜fHj#+'vuX(IkփxׄQ3'/.(XUۜaEؿw0A;׵^`p~ufIk,M@w"/6/ǶZI1R JJ[:CY߹{ݕkO @-M^ !7 $5!l :|uM+^BW$+9Sj˵zп Y_e9j" GW;ZѣY;-\p uCsbT*ɻϳ rBtiz23, Ը֒m 0HR&6D{ Y5QJT'/ qJiFҐ=*5ߐ/i4 mDZ h';^2D`k~NU`&AG dNp2*X'ߛl7N3an.dՁJɼB䄛{Q Wcq9>5i @>7fcea\@OcZpXEO\; }1<ĩ~ ux3vcZy.HgT8Z9uc×9e2Iey3@M|Or?XoÐ0M ^I̜lPMQ2zw_.Ͽrr^\>Twuu ֈ-&Jgm Cl'qQf貧H0spߒSO NQfbXOobIO* .a }ew0ϒ^ɡXrsh!g(H=x եU]|J8oս#W wpɬalF1i&,7bXnV;V[s[HZ[ `_gjl/L\Wpdr䊨WPʩt oxBHi6E)!GnfSf@ v;.s˯CծV=]@:TMf'}=Rf8?я)*EC^aI>7엉b"z@8ō[NBA5 2-,QkIǁ&ݔ[Gm1 b-fѓID Q pgh//hv`mMB?Abݚx#.VSQCNQ?XBk4H}FXe17;7rwzY}]ʻ men J+4|MSn7cГt0Q @>JS;}%'pMrLVz|3eC0->_|c bšnMj^/~_&6?@>_hMmkjЅ#S1ԷA*bzUd5J)OS)6<c@C$] Ds1y'Z-/:qlק& |Hqփ]uI,][mgDki--psE&6@_wxևO 3 ݄$-0PokoC-y`nQ<1~ϕ*oZ"Ý)us2Rk<# ,Dk%.֎=6T<^-9*Ibi1CWӢڸ$LF #bOU*u$1AiOt8$Ju r \$^D&&J+ d^Qup݁1m¦H@Y0LxN 1?ƙp὆pHPHo >DE-z.,*ɖ30@CnOP~ހ!м`=/jnwLM~mI6 ^vEqbqYfOn@iޛ3De5KioFbڋ_> Qډs݇lh<BnlHaN.h%Q.2tcv:WtZ i&WX2D` ='{"NĖu6Ku_ajQ§?4aFq)V/d4H/" 9e{~UAk=0q02$a.zR+. N~fM{ub>R.T?GȰIB)vK̥2Bn־x]@1P8nplY)L^R,*4XM Bm. X$PzuS:\ϰ9{m'`!ZhX:)p'ޫfv=aGcBBFxjJA!dUrmf`H!E B'WsL懐YJ13* d3*Bis.gɋ-܊ѐ龗V@C%:,Cl/ H% |,=d()Gs诶 ЧuV6+gvo"IF!\|&PWU`'N4rc ̍̔HP@G{=$'!+ղTC5c6H@݃%A~%~f! LT(7 @ܜ X ndMo@t8 U$| +;Ύ;,?ZŚL~gk?@8/;[NJ"@NI4% ,eُgNGtʉ?19Yq3zͰ[/2r=_~juӸ |4IVtfy] C\ upܾӓ{XgrIo-L3'i3~sdH7֟+o;)m = b[_[k \Y2dQ#p؀J/6NH㖹$T׺Y3p / 9ɾz]d`OSPV.)< a*Ur\dEpr ˜5'`,-vX};`jc4^YDSMBWd1_"ub&7?P'B騦v!@֮xONt `kJ ٯq{A&c!D]@>X[tњrp;j% "bD9J9{!T1O T:mmȝ!}Aj hxʖdCtgwpw5Kp?4ek19KVxaLn-U~)+tH̫NϑEצrTDMR e,MJ}^LA jY]3-D=gD{uO36XA]*oeZ;}o;qufeӑF~YAsvǑkkE`yeB^/ <o?uuB8Y{Ѫ*-1`ӯ4ZZ9eֈ7#Z>6?+w%,!jujS &v;_b g{A"N-a~ԯJ:◫&W'cx uf]̭͂"taMdZ;{qQJ 6!o(<ʝ>*fS8O/X;u Wy hex㽆!55G5,;H?jŅEn|×(WxŠp(tN⓲x60N۔p5u/Y4~Q+%_^0#Ԡc_Ң 557+q *a1cUz<0 w:z|w6>9af,b'V;l v 0!4 IJ4ċ$fA6+!)iN q)aՊ!rmg4VÁ.[aU"WNjuJՏ,WY>g>|ݯ~ı**.bh0 &mk<΃CGgk^ jyVq(($_ !2p4I&OHG%MFP^#zD'84&'(|77gOpi( #)wX(<׏~>|ꃻ59s 8AX$ZJw̓nL-^)rGO3k*{u'T aPr-Ӧ.hgp""))ǔ2I:%" YHBAp_%D{J, G1g g"xcG3jɖtkf$4.r_ ߦc՝wC5 )&~Qa}GcСh7Ӑ4|07bjŏR PL8`>Ve6qPve9 .O*P_ug> V lb/ܦD\?DaQY$jat)CrR,Jp&L%K%<_+6&s3$|:' X9<"enl+鄮!V䌿!83ҘH2!wΕ5>;"+me`] N}0|U|G:$&B:J~\˪Ě\ i|썂~YZy( .p25:ڮUʬȡūC -9.|qvZ wo_&\Vj9adJ:z:K-#x2jqf;ˑBfت$!z5 " :0LRZ9?/voD#rZc~>sUM uB%Ꜽ@ANsek5IgҳYgS8p[mEۨHKˮ>WgG~ ~a{gf%4 $Cr3r ހ!"fnMVU' B³+f9"E:@})k?op“ֽ[n@&j "AjoZw`:F;*y:0Nl֐<~qhFt6/VknAɴl}j/fhZ8b4+Aqhax/4 LsTTW'nqk7٢yp5T≝؍vꅍ"WR˸EiZ[=دL "~C1rʀPA6%fJQ{Y[ ۵&魦A< %a Njj=]iT&a!Ҙ-U'k~6izv-F4/%TXC<ٚg}x ~ eEzݶwֆ6$^ sW4Ӹ4ey[$8"CBPxM=rGec 96z2IwYxEyeoW~h?Z}La /nKs{îK XAgrY[5UEy _2/=,RpRvy,s"fJkά<>WʵڵYd~MMNj %\sX ~0N 4Սaf,:{QײT#ܥ$=7VK2RO A@7DCt"V+I4 B\$*Yn^fB!K#01Og)# sqM[BtoIP}5:+ETp\ppNdr'Fd3#P ɉ  2.d  oƫXʜNCh2# Ӵ?YAzƼMXNg MdgDЖ]7>me 0ۮdlX݄>oŎ;9%ζIeYT]@)Њ,-Ƭ]P=;$JiL %HNk7>ԎZ9ܪ!z#lzNEYԝ28EЗ[ٌ