tomcat-javadoc-9.0.85-150200.60.1<>,gxe) p9|zUKQ2 rC4wJv(3ј=jZ̓C@t{[VU >q$LY̾}_}9uO9q6cӪp9~eL7E-qdJ#Ƨ 8A9?c&U;)͆;R/ѯDE]I7 :LI e4Ƀ(e%70*|- ~;JF+N-ޥ/9E w 3Gt>>8?8d $ V ,2<0!0 2\0 B0 c|0 T0 ]0}00ϼ0?(\8dl9l:lFqG0HH0I0X8Y<\P0]0^bcodeflu 0v w0xx0y88z8<8L8P8V8Ctomcat-javadoc9.0.85150200.60.1Javadoc generated documentation for Apache TomcatJavadoc generated documentation files for Apache Tomcat.e) h01-ch2c?SUSE Linux Enterprise 15SUSE LLC Apache-2.0https://www.suse.com/Documentation/HTMLhttps://tomcat.apache.orglinuxnoarcht/ .a4Y&$=c^@2 J9v"%m4_H')4 9@+86%(}<*(O+6HWnK,3r/!/2L%IakGC1"ej5@0%E):!9"_v)LY_;#.9f3Up6tj=K]UO] DJM.DW<DJJDJDDY+W\k8]#imabqiX&B;a$?8iO8QW<:)ЭvW'(S-4w*;+%=q7bI-v@G,"K}S>V7#$7T.0jHenhD3wQ!x+j0SA%-Aq@ 7wFXDm**sg8A-c,($n8R;s^.<Z;>3Kv JOM?A(Mu oTVD>)2% Z4~@07=jw.I|CzF-VWF-">kf\I;NFy?? \,ALV+;6E&+xx*\1 _1%'>K/n37ށ#Au;)V< > 7 $;9|LJRT[g"6/K&-/&q%1*{](`$)|)Sf'#;ۘ.etESl"7O~*o5 6r%s2D**E,zgD&. DClN_FfMMP;DN0jDh >=Ro}!V-!%WD"5K.9=r69qB>*56*=J55sZ56"=56DLYTdRg>N@L5w555w=5X:8T!&*7NCH @*Z22Jb6W6m&+1@47;.(3s>H*:0+>b*ejW:>&/>0Z,/&IL-X4[WOD9+>?Wb$"70$73xk4<2'4'(':D'0& UN1Nf-*/8/E=)5l^MeI?0]E0BE,Vy|-V,DM'15"X%|%"+?Y)i wk$`*JK27Y5o?Zx##C4BhSaj:sU}z!JMRntVl\E$ ~"Ww(n3 %F+U@B$jJ2&%.1fIi6 4;h2h1*"; 7BJ'89S3a::Dg}E<Ekz-cQ.-GBIFx)??)%=:BV"6-)@]53x/=+ Ye:Ce%_?,/z+R]C.\AG),+jL)WqQL)3fɼlzl4__w4g1,b )u+3E1:;Mc+b8-/c0Y;9ZmUWXLLj$$(N85%QBo^gVYZ %&/8]l,.BzսT3-rULY`YMMMzMhedte =I?CED{.6p:} "ZG*frerjR*++,M/?# \:w.a6l6w%C+c29n*;*30-kze5/5(1AAM&3ld#Yw)1FO([G9(9\16+)>C:\1*R%Sh_)pL71iQX&b(((t3-#.T8o4s2Ll-#$ZOZG[E# #cFC'M (3'(9E3~~x50Udv BP,l,{,,,W,u,2,l,,u,Z,Z,i )'*X]>\ 8&u1(V;2q)r0^/P#38<\YD]O7K)W>s=;45 :J'QV5`71B0?<\=+81:;@55;% 0K,w:g(f!/@<7,1J_&4S,0Y D6V.76"_w722.&lqa[H%8|65&7?4K,/+ 9Ez.wx1vN)80-anh90^3gMD8!"sE}C=.raPK]1qGoT-JN%gB5-,:,c7+r.7qZb5faz~\Km$k0%~!ޱ-H17͎c{BOY)0=9} 8Mc;L:|6q2 +%04(R>/x MYRJ2/He30NJob8A@1@f;:rPB5$r*3wZT!3N/"y7 QHr,Q?jFiAem#b#l&zqW-uD$,RR4oK<)F`}P-!=g0.$~,p36/&\$R/,[5.({&&&&&E&Y%B,U4.n0,&KT?-lN8,B*'%E#S(j4o"t$&"e;/OI6U556 D++8C,-::L+[/55S|wT^&^&`(O&5"]96kUc..%<PT0F!9&32D. l:J'B>QBH;`?dr6aA RVD+O0=t]|GgC?;2[\j1jL9=\C3.bG9< JzU)`!q"i;KL0[,8 Z>|J!@{6-E040OA2+=@=Aj%_tZFVn3d'I?:S0nIAK`(.-F')>)G2KX/V)E),JC$*_T/'oYC/[kV=///4R,y$*!rF-Z?t&@LKr&3[&7"t--'2d*+)|O<:): (-i(-*)%$"Ot60S:[B?M|?NFM1:"Q9E4!L/!>jDM>V8BV/ʙ5*Jd,4>150*YB.8+;0B&]37HT3;*3%M2@ 4=go@!\5#;;q197Y>C ;g=(R;X>fe6<?"1?HbH#E +p-_z?B>QG|V=K=E=o9VCaRNxF9Vdw23'ea4XaOd3'$ i0-7o''E&*s(+>(P3C+q<%S31)///3.*K6,.),%5EF%B>S*)&%Q*AM'+>11{-W6UW2|2-*;B(9Y1A'--)8Gbe?0~-,ov7Se\IdFYF!LB7LG::[NJMc.A-$.6K50&=JUPb5m5!3E8).x3WX07A큤A큤AA큤AAA큤A큤AAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤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큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤AA큤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큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(e(719ab54c2d6b881954aaefdae112a608c51f4ac568df6fc4f59105fcfb24a0d4ea71369a15c7d83344bda20edeaeae454c1419488fbd65ead129a1b67a0bcd3ae8a08d7ab39a63486081a6b4ff275451d0fb8314e14fba9abf20a43a45223cc577e0cfa14f7a0fca1c7dcecabbb2dc201867cba837722c20eeb49216da90b509c15dde073b06fca5954dd8031b9df2be6a7cf630fd1aba1c60a2d02f8d18f4ac0f64cb24e099708c227dfaf7257c256b7c8f45bf16e87a5927a0d350ed6a8c40cf7489ac0739a9eb457ea3960d5cdd297a19c20ef32268ade4f2c3fb51abe52e8dcafb508fe51fc1bf5c40efd2db3ae527cc3a16ea9b54486bea1d60ddf6a3b968c4bac13300a036b778ff84252af7ae5b795928fca1bec19e79dbe8e51484e507f10697490cbe60e1f453f4a68b5e417d297c2f2dd51f3cbe793e54c3c5764d416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37a3cf00c109d907e543bc4f6dbc85eb31068f94515251347e9e57509b52ee3d74cfd56c75814e8dd474bd53b622b19152650c5595cf3c8bfad7a8703985105e8aa6c0904499f1efeef05641bd28fd7c73785e60f69ce9c699daf65af8b37207030ce844c4c202c352e3210a61fc0910039a70708453b0db6f29d4da9496f2711e794491b22860b2a9267b6327e19cb45cb999d290f167f7c87204ffc2ff87e457c06f765f3bed456436a8819b4d41fba66e537d88c90c4f46eb95d604c94086e3c38706b6ead21f5636ea9b79297a7976c59f8c1ff9242bf675aee5dce392ce985f8dfaf3a08014a60d94c7bbc69681481ede72a626307e40222bf371aa6d5192c9e4a52bac18aee4f3f90d05fbca603f5b0f5bf1ce8c45e60bb4ed3a2cb2ed863e9af9d4487abf0bd7ad7f7d662953e572c6732be232acedc733146d1b61e0b2c49f753d4953b4c40418ed76e23f1a61a10d4b1d80e942160c9dc95af4ca06d9c8deea3346fbf293d97ae2e9ceb1b90738edc401df4ef10e9e2d5c792429070a3042149f11fd395f41fe2429ea9053686fb52cc7d1ec91486eea71742ba86fe918ce382c77a39adfb7455f543abe67e74735f8e8934ff9695e3d5a21c115b66b36bb7cd71b314e4af775f160f8665a55f12fc1485922103eea17fa88cd729d622dab5d95ebd3139dfc2d6123539859b32777f8ac767b80d5ecfea1562675c2fc2ffc01cbf353a8302487c7032547d526dd162cc93e8cab03adb56cad5fbf6551a663f96a69d30a7509b17854e03a719ca45b604bb500904d3a92a4163344c0f65eadb6be6dd0707b9361ce29f518931eae4038dd1e902a11672b34b1d03f821f0933fb0bc103e311144a84c26ecfb294074feb4c49dd45b1a4ac04e256e180a060f41283d6bfd3178af8ec83897b7c47e3c449ba1ba51fd151c0fb8ecc0d3741f6a7db86bb5d366728e51b5e18851c518fe4f33767d5eb97b1acb8d797b51987e9607735cf3ca7cf20faec37f8c2dc78572fc23292592cacadcd8334ce202e59ecd97804f04e660a9b1e09f567a2afc110bea3169d32aa72c0bce7cfe280a210d0ab7c065c9e76a7913b906c0924ae693f70cf60cfaa0dc286b5d44525a5fcca275f5647a9ce8a4060ba6c59ec39bac34cdf9ab4a4950c17fe604f4a626f96b6cd1ece5b469a47c97dd19d0a6e3cc3943a382cd9daeb9d8d65f85d968df48296e7d136deec184c5a6f318d81867c9503ffde9d59d3893baf040dd176ec5a4b86cfd1220dc3c90fee8f181c6ec463b6456216e115547aafd21a6c7089c76e04c7b79fc53a4e9631458986b7ef3a26e88233e2adad69cf6c7b7e49d011eb408d931c6e3fcffc9d8b034d659eee3d9cef0c173082e10bd232b21f7b3336f65878d802020dcc0c34d5385e50dbcfd762c9a6428823ca91ab36274aaca2210cbed5926311cac254033504ac0bb74e56a43964e53575bb451a695c26a9119219c072e288fd6db1c808e1d3bb4e2bf7cbd953d062a0a08eb324ede5ce462b0d44c1992131810c9dbf4829af4659e4127e548588a6d7edad93e24958762e3dff34b0359066567501315edeec95b0889238c88659f7c2c52d687c412f15d005adcd5ce6af5da73f806c4cb42abcd9ac3920d69ba888e1783fe57d4fddd75fbe003dbbfc6c0b594292999909f2b00c65f5fdd8a5894d8b709626803694651fe2dcf9c06176698e520e0be6f67bf80deb6680696c408a4b24ce5efea9294f24c1c35c1aa6398966cb0a5ff262f78a68420eabc99fad3765da05eaa303f7f13860d59a4b4bcdbc721b01536d904d5958236173085b1bd5ca2c5a017c086cabf8522ac7240997610dece91a2f000912a5a3be21c47c664a2aee1383f3c7b46e946f6d96de38adbc36b31166bf85e75cd80f40125926ddc0921792cc6fe1d2b1e763d363f977e6e6401a7f82f682908b144c4084fd8496ae80e1fb52b0d46a93c1789a5188305b389c9ca4131fc1f8884a50c1500b4eab7b9cdec1b44178262edc65b598439d3c83b495a17cae5080a7260f4ea8186420a42fced43644e6b170d04e4fe40cdd16d0157c57127aa45c4ac27c01f65134dcd7e87ddde964fb5d72b46fedc75e119ca5676d169434c69ae6c4caa6c660c0ea41ffe43cdd3cbb99dd1114d46f324d422c804cd17bff9859aaf45267a4597557b0a19f8b8d246f74795a8d5d06a7f9030425578af810c88c2c3f71c96e50b2baead27689358e7ab8e2f3461a1226be4a5c2a042b041f0489b3e08ff6237a03380a3894c3606fe0f409aa4f28ccff56c3236751a2bf6cda6c0a322f69dd2633d9f45984d9e36ff5906776abb36e68ff709e73cfb89c1f068b03e5130b38dfedffbcd1005baeeaac4e828b7840b5dbc148f7320c7637c96f3c6a18cd05ab49d7d051c2fdb39fc36e2908ebfd0f7bdd974889b6e85fca3f4aca11f2508bba1e3d92d159f55a128ac9a2b472dcdb8ccdeb1eb2b87dcb17f93a7b04d0df41a8ac0518f63dccaeca27a3971828c39e4bbec0712446878b4e43e91a50e1c5089a10b4dd2ac8575ab853a514bcd61aa539e7fedff69e39c0fa75874951f7c3e240513763aafbe9e789f2357bd3f31792bf924e55dc067b7158f37de43722dffda3f4e5e5603cd687a6a57797b33dd9acdb20d4084bc282c9aa15f626d23046fde507c36fbb4311ad4cca11a8cbc3e66ddec8d7aa76ae516797c3cc18477ab57fba2ec77e788aa15bd72bcad00a76ec2b048bb124b74e43180172f9ea54e2482e585856472005362f7970d6038d578c91f0d0212a96ea317d5e300b39f501505f804543fd97eaf88b30a436bcbc3f95e153b3e6b5d031903fe13fb10ec155a8497f1570e76d4c15c8d94e276fefde5ad50a352537b9fadbb54e140966ca5604c7d872e929d2970a897a7a2f500b7d2d3a93a7701e95c181af3202f82fe6106ce2701ec88f7f53c5f3ff36ea2d740646d45fdea0716c1ea20d5d90b620bc3514edb6ac99b834137364d5e0a0a2681672826ec50cc6b47ece2c697cb658ab6ad4c4ce40587273f207d66a59dae8a77769bfa21d974c03dc753328a048f8288fd63b29b43967de6a82b2aac62a1d96dcc03949333cd93b79169b87db16e0c175f902724980ca49e3518e65a3582ed7ccdc764daecea44bb8e1f27694f19bd2ad43adfc37ee65ed0fea56d4ca8977fb76f937f6321600dbeac54f76c91be7dfaaab3f104ee498ea876115a50d2559a520bf670b38e529d5ab041f30aef53545c9770ea48ddcae1965381e6c3836750d56d2df86e5d00972a9e021495add85397d09e3cc90424a9548054258b164730d8c02b65c78084e64715a823febeed80306cefc96c87ff4c9893c8bf1ddfa30d138c9a784872eca1a6b4c54a51228f7bc52131a7eb2e6d530bd02e05bb00683e876fabcd99cfbf88ed4c55efea15984999d3f0c0a0b1276eba9f731d960cf227916573b9c869795b28acb43361956072f7895e192bf73f513f0562d0e0603ade975ad57de8d7401d70d6dce908c389683deef83077090b24d1503bef37339c452488d76c225426e1d5e07f6f3eb36772c4aa300b34eeea58031120a2aa0296260c5ae3d33bd14c2da6636d47ac3f426ffa29fa7556c0a3406b4c57f345ed70297c83ed3b327f7b7d20ee606af73ad97292b11a45b50091f80f0761cb62ffcbea9906e15bc259bcdde9bc06ee3781d379631ac2f841dff918adfad3f2b8bc8dfceac74d4c7541aef73b7a0ba0fba74435dad9653db85392c069306a91051262e6eb6358505a1c9e2ddbed6dba68067aee39f985e1b438ddac9016af9147e58b6de550e0497b58c50e7ef895c02982c147cc4a86ce438423a91a7e9bb9840bf13480989293137a16066d244acd102c0ebe40509d2001c18eeb5d31ba4bd736b6b9d673fbff69133be889f09a00d3a2d22e680560755293900e0b0e5e3a6f8e15dbb1f1959d5b71455706b5c77d69b4504691772040ae8ed25ecd319b9cbe21e63f1f91aecadebe5fae2a0b4b787ed581b5af6e91e3d637cbe57872e4c6615891549e3ce1af95c86ffbed425ce345c4a6f0ef76b86e8e40094c640535d6a7ce595e00fb6eb47df7577e5694fbcfff8d43d5911da016511a075da596e8d66b9d998fd0885c81c7657610f17cab6cd8bc1dc17555bcf3556bdcfefd18444e44afad219ff6e6fa2cb4d1987786067d1df523cd200c062fd2162c9780acf6c8c99dc9ef0a01ad781a380e810c607d7cddaadb0fe3216c3ddc6ede6cd2c155f5e1ef675c87dd3c74af02884c589322fddb8123741eea03e46ad940ca01e6265c8c710b0dc17627124225ef01bbf5e5a8cffd98abad815495c5b77a3eb233b2a992a7b7a83a7d5d9eb78ac4f24df34c52869a0d16388cf72a1abf95be3474d53020e0ed5ebdf497c6168fe454bd4bb8feb7a7f9f0145aca9cdd6d6ecc4b81e5111c0976e5581ee7b3a4e2433e5e69b6ec2885c5bdf809f1d3829fc0ec93a4006805c2e61db23caf73620056195e22cc28fc95594d973b371136e52c7aa67f458c46601e8a41e8c5766e8e0d2c70a880aa19a91f1fbb30d18353556f3e08b36e25f336a77daeebe4b6c1e9a5bb229720dfd761ac4ccd863e9269b42f14c9f905374d38f4209b75e7c94c8f200d7190a52f89e8fa0cd782812296ad9bd963eb0b2f4f69bf3ca2031cb116ad589453eb6422670f700c7fced2a25cc21ea14b55c455a84f0644d9bd48bb39d9f0ca2229ea8006367a5fbde4f63a6b201d03de1d4d0d216703bc28066814219aa276af22cb9321984b82cc2f2152964b717425218091df5894e7d44bc34696dfc21e43a7834fff08527d88ad727076df5e5494654e0263c0fb608e4d83259db59f1b76db7a8c4adaa5e85b9fd33f8a3f88145b126a2124cd9326a09a08dfc725749af374ccfe5c140111ae461d01e24cf3b9ef00006aa4a51c3f0a684e4c84a2451e5bd2d6cba54f29c1b378781919180dd11cdaef0bfa8195b2d8a88f574d61a1df6c9e1a95629d7f2b5f64cf1e5a39775a845143631fd10063fc3a5995a2f253ccef6f53b271d610b631d5e575a9644d2ce1e9e7c764861bdf12244b9710164390ad32d5cbb7ee08e3564dcded6151a81bfa1db7ead09e62d26167cb27f14187a1b0cb80e63a5df76a93bab7928fc205669a8dd6daca679926ca2798ca9804f580bdc807f3a6ea3d3cf17600adad33366b292a345fb16e4a4fce7de9bc2179ad06649ce0e6fab5da8161b8c9b1ae4dbb2fd1772a4f6190216c98dade1ab68a503b1084faae28ee33b8f854433c9cfca0543f8fd3935b954e9b66555cad3fdcec3780d64ec4e6fa6151c920bd23ca3f1a72320d3ef6620c1abc9add610b40a3b67fed76437e3c8cca33fb387982aecb3850f9f4a1150a56dc000bcf39c349bf5871a2e3b0cf1cfae47ab56055e8463c625ecef78df0e09696f69b4cf287319f8f412d20854ec0037836d95c4e41dfd7c38f7814d6bfb6080ff975580691803b0126e5df3b19622f2fa79555015f446abe742ad74694353dde43bc59550fda6f50f3d8de9d0594837debe056c966feb8db3264f952d19f04122913b64dd52e40ad24b7876f72b4c83740f8ca6b3e61012b27bd89e6338b6a0dec26b4c99787bb15595f3a8c8f80511ed11cf202275efea5d726bf48538f589e26ea62d9700dcb24eb70a8e8e7718f05bd623ec5a1f3afed3b068b21e936c237e4e81c939a75beae3c03909d7ab19f40fa770961f19bd531422c4378b8a01ccf0a1270e78b3c2c24e7a8432e0ea2d8bde40b8342bcec85a9ed18acaa4f9f57b8d0e9d348b3f2132a638c1b9dd59026cd378b3c5acb4255d76de458b4fd7af03d0696ec4f36a52e96fdf5e405aab54244dd8d8a5902f834283ff81b4fc1d28f800bf341403680a4673027e306ab74e3c5f9bc9463cab450e0645b9cc58d6f8e1c16e042338e930cce0bf12d1d2bb17528d31f46eb757a90a578cb94788ad13c5ca0effd52fa079f3cb8765729f50144b8ee57dd9f8f7f74c8874462ce428bf052cb7c39af4f93bb2650dc1d1f231f8d7c3a7caf863d02ced0d30a25cc61fdbe7811cd2baf8a0ccf72cb7d8d89c3f9dc0b746e4d97c27c8a995ecf9e9f98b4f210c4378261b450b680abb5675232de314b0c840a1e31d1973c4428ae4aa853b92dcddb9bcf99c6be694cdca168c6975db16269a2c22898fa32499453307b6547a455304c4c9313a393662e874746903f4f79a6bbe94f30002a2e86ebfa7cadf24fd8b0eb0d9733783a1bc97e7e8bd35e36b2e588450c0662700ca7cb0a8429749da67ab54fa773296b71cb8e3dcc7b56588368e004a5056e4dad0e2eaff6e0577b0b82b6f819008b90155411deb8792af53fb18b04bda12b4fb55e7b5023a84c920cb5a7d0c51fcd7345db5d534ee6e74831b8027389fc9e14ed30b2954cfca53e833b287a2fedbfe7a723c999c6e9c54c4a263e2912f2efd588f6523ae098b8c1893a229580c3c8e0dd4ae865c2249e647d4c5682e964bf5b7ed0eb9b3a86320aa8d243496b8b52b7275437ac19f5077acac0212f78c6112417540352c575d6c66e89444e33acaacd04ff8b9c5215b7cde4d74698fd7556319e147c36bacdf62558f78cfcab576cc7ab9dc898edc59e68c258a43a9bfc3e3e4e948ac9e82967c32240ff7649f1b2951c988a7115ce26352bbd89a39ccae09415e622a703bc7ad704a08eb71ae7bb5c5d6624fc825ddc574a30d23aa76f3179f13fec29c1485e8c1a804e34b8143e23c5bdcb9c9b02452790e70fa2584f95b1d34ff02a45b2bfffe93018a74ff1cc8fbf0603d46aa6fb820c533d4ca178c09a6c800be250940a2712f3acf5fd8a38ad81fca87b477c9eec0068aa38148918408545e187359b8491eb8dd63e8b56f45d4b687bb326049c3cc692529c6fe659cd30f05c0fbb2f0649f7ecee2782718037a56619d4a1135ff8981482915c073b6097b378bf5b9c73f60f1ca269cdd09e92e6936fee05ddabb8125406b979885a6a4b20d5b5d9d5df34c6690464189fe894356e2b2f5595b6fe600527655929758c94481d34cfa7ecb43b73ff45363933b6cb4eb60a406b0ab0840462c97136648d37dabe75f2fcda61df97053f0ec9e079c8eee65fe7ba1d324f018f00858d95cb0a762bde70ab694168cb307e783d350a98c8078069aa27e239241aeb55818e4371dcf909497a6a7cc2a30bec5ef1edf33f924038201582d97cad0e943b0a578da1edf2607a002d0d005fa182c6f9d466dc864babea9e60fb94df5acfc1fc665318a94a3f2d2928d72e89e6427192b29b2e5b39cea73d8c7d6731e2166936c8653972f684e28b20c98f4a2559b5d5ea3390db6b1616d0aa32ae49ccf5c7619638fb5884773efeb737e8dfe6b8f6c4bb8b4853466980624fadec95e9db17953671cbb95aabc4dea833dea85fd7f7034c488ad742d512dbc8199e694fc2939c713603a0838af298a5b9379f97708cbcd5a611736e835a39607f07b110d11220c84c8aef716d391e6b6ae3e4bb76ae600b707faff40840fef6954bd760bad5e2f920a4d8df3f3ed799405afc600b81d2714a9fa8aa527273f2ad5c97af55f8c66e78f5b8e8d61980a291f72f42e5ef96a5338f98d1888ae021f324e529f90a4cf30eaec97e9d7a5bb7835b4a76549691bafd995663eb33f9a42d97c646c95a3e1f97656e924165b716d3373cb4482ae91ed642eaa6927d7631a23043ba723182b966ac98ac944cea5220799d2fd9cce4a81703f19fd7f8b4ef732137d1d037eacc18d87a59c93af8112130b7f4efd8b40597e6c5c52a2f655f0328f0d71f59621011e42c70ef7c1f70445074bebfd8bfdd39e50f1acfd05651a16af05736f9c7faa54c08e42939cb2de282072b8146119b47d84db93b49a404ef4eb0acd8d9c8f3dd1c2c72aa31ee096bac015231d578705e5069a2c596be8e1e756982a4912d24c5dea76d3cd91cc113ab8ce340f8abaa3111ebf4b0a6ed809c983bba63acfc0a1e4481dce9970bfa1f1dd1d8e5b49be9bb6f3aa13c852ee55cd42518571f45e5fa4546c19a4a7ecca8735c206a5f55db2feb3fc1585ca90632800175f240454ef110981545eca0a43e4ceef364f377125bc99ee8ecadec6ac52f8c89ff97b2acbb5982959bfcbf9c452abb90a831c4f9d8f22db51c034a709325eabd9d6488ef2d8573705779ec958c3b8c2985cb192d86c7acde72412b04b03868685389ce68977aed8f24fb30cde9a69924cbff65e6693ff75830ad751e257d6bcedc9911cfb39fc3eff6c389fa15b34793421cd003ae6ebb0058e12d3adb79c9c058bef5796ad7248f07ca75431804fd22d4664bd00cbd485f326b484840cc8691f262e53882d86994ab61eb95652e79fc1dd6e2f7ff131be3ac8758ba5028bdce655b4e4e4b663eac2a6108c2d602b52cdedb896727a011bf21643e55c7816290dda063fc69a82a48b7689d4ddb76c9eedb48d556220ea4e357318a8b46b23ee2daf03ec525013a953153b9363ce586b618f05ea08be155ba1aad6f4c8d5204e20a9e96dca1b55850eeee82024d60e5e2c8c994487c26bd6390d70c16e809773da5c1ee4dc933436bf08ad229a24c43eb8cac4460f17a16670ace26dc9e2430da359be03fe7a4f30483c5607e5e14ba8519e7c651959fd2134f0a57f1e5f53ddfa388993fc767c10ff2013ebd89bd5b9a13729e3dcb9ed0e0765d1e162a5bd6aa3e2b6422df175f20d333b5f7c81b8afbc06d9f93655892bee05d5321cb3494e9221110522a9a0073960e01fc949d6581323d0e34041774d630ddc9cf3864b17a5365247bce2d7dcaeeb563c097172f6ed1e08688377776f4fdbc92e8d41e08da9ba60001fffcaedbaf161d869a1020192bf8fa83491ec41db24f10050f410f7ef7ad1df685671a243fa844feaed5ef7025fa85e7971ab9f654119141fd83f02d3ecf1c87c950be7bb616eaffa79c0d376a5f40c4fea8ea7105de2d3404501c7a63df57a519084ff2e0ef901d229c68c280911c562ab8ae768b33ae08857e7ac9d903cd69896fa2f76f3b921ac4538dc61615688d259900fbef30010f13205a5cd7cce8982998d24ed130812b08ec8555af62bcdffc249cabc626e9196e0acbaa2fd04692664b505305f7286cdcced4e9aa242a98f84af52f5d45ccc696e36845af0f95ece0c638bdf7beb84d585e1635202687e9c7d0001d33c6a31d5c0cadc270a3561ca98eb8409840cee2b4889d9a9ccc6d1c73d7cec3ac79a7ce04a54e172fce0401434932ead4dd0f8a5c6cb0813b415c5651f41b249024ee1229ba6bd85117435bd7f155f1a624fc5881c75b4be0604e423d24b688e4a6c209aa27c2d32e5d7c485d4570132b6d373c72b88919f5df4d908164075454b22332922086d4a3a8d8b72e17f71d3fdafbadee6bceb88ffd6844ef0cec845787c76e399db8950aa5792c12be80ab6aa2b3f0abd9bd4c852195a0c5a82b4791d8de6e52c4a561e465473ce7f3e3fb31bf909fd634c4e96cda626e661eb0556631b7a0d9a0dfdeede239f43dd2909d7bf09f26a712b303eeb9f0be8ea965c3f92ca5227f3c91201eda5549cc7d19beb2da23d7f27f090f3d10baf09fd1db8c80563ee9033e2a974519d53d59714fb65143c8fedc162f2e3401fd57605baf1ac28dca55de84ee15cd06c4c480a0092211385183bb9bb03346b0ef6628e04d03c9dca9dbb5210ead6b0240f7dc8691892f46870aa4e0ec1e53f80c366b79a11fbf9a5f692af5ac85d3bc9e25c155da1e398399986591252e9b057d4b232bbe5257c683ef43be8d531ce28ba821a0727326c2fd027b6ce4adf111cd44ed68c59e31cdbfa68a87ca2363cf8e3b5c7eff787f6fe2e76494b6b69cdda46fa8e8d492e6140b46ff21da73089085f5daafb0cc0b89862653156a69934fc4f9462c114f27a0076c403b10a23db767a1bda7a39987719d130d97c969db67233db5980fd9c765690c0e269d0487381ab8c4b1bc6a21cc22beebfa294f0b67ab88b2d969e84d3d4982f990e1a0c7100964ba305ac8719b902a5bdbbb966d150bf262f5b34f610825f8fb7b96ba2e8fe2fc732a568a90176dd3d7417fbe6edccd4f5eeaa9e30388af7bb73b5f0c5e7773589d4175b2d7ccc06d866b3923f4f574555041e22ca76f472126a8fc8bb9318bc5215073ae9500e8b4a4fada3a52c00cc99a7ed32dbd986471a7fd195796a878dd3d2a814e03c9f2ef15a2e1042b3316257214f069a1fca7ca80d3fe4210c3c6086562f563a5f84809c9e2ef74093cdb21387395d89f3ce5a7ead8ecad3c2230d3f21488639ad5c61ecf3c123fa84c73dc2673850a7b5196e6e0097c25466e655b3020000f804c8130f3cde9263cbfbb22ffd2f68bacdbc5a46f251afba70a05be13d8dfb435e2250accbc793085b47d808b33c5814df4c43798f5f3904fc07a51c297f765fb42f4f1fe50cbb71b8abd7442e16a4ead32794675459bd42449d9d1a927a0f83205a08510d66e566aab11e92a9b44040a82ad18bf14d9d8f2cc56126cd214c23e2d82d36c8fb1bedec1436990f43c444d67bd82fae9d5204e7d09114e08bd640c5547c733c8488f90f55d6d85af2be00d611ecc4c24fbf2fa8833ea5c245f70b6662fd19eef4b1cab2f129f6ba5d49425449125f17c600509b7231df37b63b01f67d3733269290f25736f2dd92ae4ec5e2ad9cf0b5837cef7021103777f6e9d2693efd75f4ca3321a64d7c2405cc181fcfd9d6b6a72f750c165af20f94c0a0883d55cfcf97fb3218a76436725f2cd92c9dd0bc1162e83860ffb9fe2473bf0a088338edf6b0ebad551c23b3100788658d36dd5e080b47435c428dcf4c95d501b1e5d6e0946b366ab04fe64ecc393cd67cde63e3b161f7db4868e7fcb5f7642a4a08596ac116f72b7342cc4154f7f4ab174a0f4625294811332dd128bc1a1edf1ccfd7e56415f7a9d266ed3b12fe7ae0efd4ca403a9371732cbfb789a95e8d744f0b84702006d4b6faecee74e637c17a19494f0aa74c00d6ed53ef70ab74c5471c79caf09b021201d65f97f5a16c800b3f882b8b9de9a88832eb1d91a4c230140ed8b4db4f977e7c3e423bee740aeba07facff53326ac5b4f58d5523c3dadb82ff80bec0dc928854ce32334f069689f8a9a5a68e67caf4a1c6da0d46f3f05326cee0d9eb3ce6e343fd25c043a74418bc6dd42f694831f25982480ab141851d44f7af49b4a25afb99fbf00517fc85ed03caa762242a7ce382835aa2dc1dcaf4542cfa86cd1872f6e2b3830ceaa2f95d87fae6026ee28a8fe9d7325fcbe9d34aa7ba3505c94b59c39da90ea39a06b174d4d1054da876adb76d0bc1c7f7444bb2fd02ef9853ea1b015b659b462bec1bd8eb665b399f211cc7e680b91e414785e62465e3373e4afa3a93ed9af9c201f1e23c9a1ad1e695293cde0dcd06cfcee2dd83cbcb16d9a769df6bb7a045b1ad4ee4c0ebb48e3cf773ee0adaf6cd7814cb3c97e7501561786d427dd3588cbdddbe66e36f14462f82ba7d20f858bb2dde1ef826c6633a0f1addf4c5a67467b25f4e2d6bd4e8322ab7fc0c30070e8fa581d8cddc4a8a90204e15c9a40a5fe06d91806df6b872130daecbe6da2de65dbb27a4e73ad9304b651336fba7c88b9a090109622830bf4ea67cc00bb7d4dd7358e3709e933270d1f9899141b5edbe33b4dbf07bd4c5a5cfab459e7c4efdb849f879d30b55fc3430c0604532ee12d2e64284a05a336b38fd9b867c8c1b9a08a6a0bd5e0e09f82090e072d6349a62126eb84a4ce49a5c31eb82e9923f69f0231ded03067129f96f56d36e32070ca666833b57de255ca9d4a5892ec8429e6b0cc52d9d45964333c5c7b94c7e9eeb2b0e7369dc28d0e6263f972f4bd00e465911d3a75bc52b648073860dc8a1500a94bbeb728e21d5f36407cb208d7723946f043b466f6795b3eb9496ba0d5a4682fd7b08684998de4dcbb5cf29f315736037bb8f19b4a9d42f28924f536104a8afcb8a7bbd543bd0e1415edf83545e8e03e6dbb500686c3dcdfefc9976dbf31fadc438da94e3e74624ccc317d206971b8a3fea23204b1bf364d3924e983699bfc6bbddc6d8a4273f8381bda75dae97ba017d4bc335f094d0e58d947fce58f8a6d9e9ccb30dfe74a5a89fe059baebf9562f311dd09660a683ff3fd461be565e28a707947fbbbf815bebf4f422feacf67bf4dcf0eb60326ca675fecdc0ae9dd8b417d20a53309356e8c0103b8bc1648260e7aa287f6bdfa0798f6d1324a2a7c132044c87b760332a18a3f8f2ad56845733f0a71370e2c77acad67a6e6f2f506553b473faafbd475688650b516f1de11e63dd76565078c9941af17682e11227bb16886ff46a5d6433d52bca7e49697faa7c94c942875dfaa5ca2bb5cb3b05bec7fcfed4ffb4af7f36a68f26a4048d50758979f4deecb3f2449f4a7cd30bac42e7100e08ac56a1e824b5d7401baafcb10f727321a322d418a60fd57d2764c37ae6468a32205b2cdec28b5e5c74a671421b611f5da559a8dffa18ee5df48dcd34b3f3fe68853d59445c9cefed16370ed67cafc0ff098625f64c180f66c7ecf803e0bb402f6f4bb6e206f1cf47f98fce34729c0c87de3218c908a54d6561aaed342cbb40829e8fd5f8b616ca3cf8442737c20ad43c97682c8584f699d8185df0c1412df8121cd683f014cdfd04984d6142804d22b4a645be1f879726e5b4b1429341f9e2869bf65d89c38e7856246f6bfc6f3a3ab5f1d7ba95bed066e3ae4458a3ffc635a287860c9fa69d99fb5951fe0c32dfa14c6bc9000adb6389dc761c23cd9bff1f25ce0253c7833a4c1bfe51bc53561ac5cc5756ae1155d3eed9c0fbea08db50bef561c01d71f9102b744b74645b6593df2ab6b2d643faeb200fe8d18c527bd553713a35eebd05333141a87bc56765f7e38f3835e8b185999b4cd07e9c12f499a523f10a35508ee24285b99da24c330e602e77b2737c84db067d47fdaafc7a93f755a31c01be5e7ef8bc564f42e6f8d7638425aeac5ae5a4273ae162b6f3bd2908cb9eefddc9dc65d9e5e598673e21d639697ddd10f37d6047cd67bdcd4b01d7674f47039cc73f7671bbac089900ca9ce9daa95ae084bfd0c0db4e150babffad0ef23e8c04d898173d25cc4d92aa308b9ae8570f9ab0090cd4d3335e5e373914bc617a569ded7fff96be1b94e11f6e17e7980b226a19c39e3e4e96696ec78f4bb458e17331678e620ab9e7f86674c697329be640e57fe3746b671d531e6bb2b83280d4ee2a9fdd3f8508f55b997ab7eb7ff0962c15a6d4a7812ebe6fb859a4a357c14bbf666305322301fa12baf567a1575bd1ab415102b70cf7a36b733583a9a756dee481b430c14f59156384d66d8ab50856dc5cade432fe24386cbc403c77a76c3c103b16b27f7b21abd3ffddf3521363c796635816a11de54a84d5e52930fb1c282d9038c97f2e8839778e0dd9ce9901abcedfe814b40c44182e3ee3ed3b1b3cb6a255d5619797190f62a1f6e0fd4f50a1a4a28189eeacfdc5f088315cb784f0cc55964d3d1c22f4a84e8c88edaa420733c7fd0001139e3338fcd613c0ec792edc2399be224b55ce85078e14fb30a70f55dfc64932ce6d6e0753f283d26f80a1be2d596b329719e98010a48245a753881e5fa1719a270861036f672adde06787e8dc034cd8b40aaef4cdee00788bf1f5b2e141b3e833ae01967940e9ee87f4a268123b56c4b101904d69e5ad85ef6772c87807392a69eab0061b9df81ebaa90acad43f1f83bc1bb4eea3fa08b3cca23cc3e54b353f813a2a3ebcce81e3faf15e6c0c9f3fa9200c7f623760f22762e7da13118f14111c7c03a7ab408eb6f4f39480a35940cd33da7d41a38f994e93dcab97228f06a1f018626faaad24f14c5891e2d88f6d773e34bba1aba585c2b4b0138f6d1dda270de105feef16ad7f5958ebf2802f4329cb48ea686f10bb476ccb4d4cacfb9349c602cd8654106329e47e26b07f7a6569000a46cdd8ff74712d36a8e94e1667e1ed61c20bb9964897d42eccf5268d3e78abb086a192c5f594343c02bb7758de4905a9bdef74943a48330ad271a52069ad473b8acfe053c7fec1f5d36b25460c9901de626088d3f2683eb42052b2b8a8c4bed6c6c6de8da4a443021528113e22666cbe758e7c1f4c913bd21c1e310ee1804651366c74a99ab2a09cb8b8cd95b429b9bf8f8cda9dc8b12e303a331a8b1a60e62545b7aad29e192d60ed288ace0d9e348d1bb2317e6790991f3a728e72a23f4453419bb26fa615043246789fd69c37375e1f1059cdc0d3be1a88ac9cffa5b370647d5d50788e1c61535321812e8aaf9182825e1fff5d15d1b118871bb860468c246bef624bb88a1ca1f76c215ce5d668c8c9122ecd8e11210f7fda076d249191a99087b55e313153b411daa096a4474ddde9ae8f975f714c4a5103f04cf51f58585a6f1e52c15d6412cb12daab25a6dda3a4c78dddce9a5a74cb5655e4a83b8b867d261573432f0d8e788ba805ca77b57f883e058be84a9b46570bd1cfd1988e4423b3ef50553e83a6e35c4a83e145ca773a6003704dfbb9e48cdc209763b0c89da8d8838a758fd9f8294aa61d28160e4274f3f06921fe9cf1d565a41cd72819c42b8a0325bcf2e355230f46f6f47998939a93744f100b96c218fca103d7e9e936e8c372c82511e3c37820046cc2c2b4c683702c7e7a66407354300548c1653b47935f9f924060414fb27e6adb3907f1ef5e45b6b0ce5a3a6951ae00d505770f91f24e2ad2492ab7011758ee3c965f25721b1fc4cafb75578567d460d209df40d7c532e49743255b8d04ee0735d085d7f630e0efdbb34920cc4dfd41a0ea6be60d4fc5b9d60f819e014392253cabccbfe1f2b5dfe414d64f977b8f87ea91120d3c59a1b52d1a142fc13616e00203b508dcbb8e225622c94ca37c55d43a89ef00dd05b0c340a34a21670366c0c969b82291cbf1b481eac489b4d339d3bbb94fcb563e52914ae97a12af7de3270fb9891ec2cab425805f0e35d62137982e180428ef22f673ff7ac3ea67a9ec9fbb9c104343979d5e1a8cc5b5a894ea281949e46a3afd8ea48604e8d7436eb0ae2cf36cb22a0f9c2b430794c708e63989e531aeb563141eb949d2995fd465f493339a43a2aa44109114d9efa79ef0e3e34a11ed9ec68584bf8ad2befc14abeea04ffe5197a80daf55ffb89045abf2cef8d89e0267b0f998d1acbe538780701a8e2fb9b44ba2a1541b635a1aa7cb6b4a00a100f058a4f202cef25ec890c982cb9f5d9fec3d83ae71558904cfe403229a26422215bf085914b123974e6ce46c0693ba36a04c2cfd5e5375b48d9167a51ee9d305ac4bf350821ae7831dbc82dd53f5d56b59a26c29897f02717ce4c9ba6e22b13e2f396fa5e5b2abe201405276fa4d24264b5b3d08ac1af13ff0bcb2c8c0c3d0551d57dc1bf13b1dfa48b12bfc366747209803b69926294373d0a74e5f7a603b87fdb0dfde16ada7cb5afbacce114ba7846d91890f77f3998924c3a6042bae794bce09682ee9b252bf20a22a838d003807d390c1596ab9d08a2776ccb435014b159a46718ab53a425837f8d7a66905b799172afde690b63470a0bb40369bb72c25ab3eb5e21e83a626c5bd26d0d4545c2b176a06b84d24d980741a97605263a48545df4a388ddfe9e88dd82dd72ba74d6efeaa0d0cbc7c574f24334a22ebe31c1f0390fe8c0381fa2fa25178b3a7b0518691a361d03f3a3fbae73a9e6ba21799331d92f74fa5292fbbfc3dea8b9409e46f5bf11c4dc790db3434c56aed529d3a8b03f118df8972d383abefaee6d613d23d12c495e7b68dac297defc2b92b0ed2fec8cb95f0eb2c9c61946131f90bf567a0fe6809ee9671dee35f2e6041a5af2f4bf54e8a146b2cf206884820615cd5ec3d4c0441f6c98a4ce1c1e2beaedf205ab65715973d6882d89f7148f5ed2a274891dec681fba5cfdc806df0ecc90f1a32b0d5e8479d5ccca0d5b86bfa2846057590fc0a0a90b120f877949c4dafa7c199f1191276d544516c3a1c0c3dc432ada3579d5bfbc7f7394004695eac148da92084e287f2ef733b8597a233d99910243a8b27e133299eef3e48eb07116d6ce45464b1f8d04717bfa4a39078b335b539820582db785fc2165c93c98cce2f2464d42889153953138d316a7c6e68502177da8ae626778448eac8a352d4e699eddd581e2f75bad50ac33e070ad98e7bfe0f9ee2c1036a6876cc0f28dc7e9f205ed50812fa791a004393abfe02065c855ee8efdc8cb351a7fd05b5591ffc8c3cb13b83954715cab474b0ddf116332b284b72f5c5f7e3e3c14beaba7a8a4e329e31a1f8be263ffef4930a053abd7ee038b394ca3fc9866bc558fb490e15303db179d42f12c6509793ee611a325a87f50014083a12b1b55b43b70bc273f9169bf19bcb1f06517633820d8a2cb7ac36a5a24c8050b0ccf18a9946eed8536e62869c6f5e4d39d97394bd601072ccdbdb23f18a7193c17c0969c4eaa3e971bed1355920b13b0d79271d17bc18e3b72c5e36e2cb236920e3d8bcdfe8f56ccba68b774d316a5faae44dbbbbb659304cec665fd41392836084f88d492cf955a553ebec25d5ea38bc6d637ba0bc35a1105ffbdde7720c03088b35925fb279335b3f3ebb5c7dd28f3fff3a862c0c338075a4cc23f40f06e329eb1b06dc721b6c0375fd35856231be70c59c41a90ebd6c485f8e781efebed1141ddf3c3d7abaca34fb07fc082e35009ddd6e2034cf54af457252971c6f74b4ddfd5363a1efbbe58f8c6f2dd29609cfc8f9c4b9c16de22d3ebbea4afa497e8e0203a6c36182599fe64e9fd3bf8ab50fd9b10875fd56f102c3c60da5d43808577295b708113015b473aaac32b2954b2e5bf4fd355d23c7c6d6677f13ee693eda08221994316f45aeeeb9c0970ca5110b286c8d4ae477ac7d017006716df85761d97f2b723164be5d5bb850c28486e140f02decb5bff3a7205af89eb0b5d5312382143c8efea549403510d5eae15809164a2e73a3551ba775e5c3803f74a3553d01516e6ad546f3222560620fa5ddde4439a749b25b3d61dc02b23683e08de9bf1f71dba6f42af32ef3946ca414dc444f73c2cc6a27127cfe109bd0379b9b51e721f9cbf522efd84ddff0594e3dc435b9d40380fb6e097e9fbdcdcc562e5e678719749522a1c4483ee58be8cff72cf88d55f2098355dc40c28d0f835306407980410f0455d5bf65900d64acf07d60486338c142a99ed317750a4d227441f5b54608c9a529de8c95c5fa0e8a1384a13176c726141f91a61aa23476b3a3070618adfc617a64015029bb6470d5b0a576c231f9842f9f38b8e60490c26d8fcb92c66765072c3b03c061715e7fae01b3834eed16aa461209376e4144347974a1c5053963cdd1c6e753aad3f743ffe7f29566cc64a76a73b56599764d1d2377fb221ede9c26654d1acf7b8c5a91541f731a878b0c9f21e3853cba6030f65a715411f82d7eb5c7fcbeb08c5393a73f76e39c9af58005645c401bed771fa8e098c42d08f7989808459382d0b9b57e0eca49921698f4e4ab34e5c301e45e336f6375da92365b4fa5c1dca2d55366077f38590885035efef81dffec1c17ee56bfef0732a40b71caddd8416c3978b8636cbcae59de9b7097d1c1ba64950dd04e35255da2ca018d8d40fdf0b761b3d7e1e6ed7173b2a568542c141a5b389d594cc80de23f04f87da3250ddaba20fed4f22c64922a820bd19a2ca01d743a9a4725bc1dda4a0ec09e873898f9831d1faf02e2905c5dc43ce1a28abab8f5a4dc58473c351f4a4aa3c89957946f1cb1ec882e402985c50500b28f4c9bda07bec5a5be913b79185178de0ee0bf6183765922fbf711046fa54f8340739a82aece8bfc66d5978ff6ca6debebee9f02535206e5dc17f8df849b0f826d494d86a04dde6d35415d58c682585765e88b0238133050246d879bfcd4bf4a83528b4f0ea0f409941a874640b04c42501f9198b0d4420b126adb35485e1d407e9a5163935a4932b83d0d8ce7dbacc7ffa147ee77abbd9f6b35da68ba2a3451b26ee7d40fbb7cf57d52f75a72145bbd7e014b5f07db2cb58a858b56bb6b2e0346b1d3ff6dcd5b1127e29e9cedf1c6b7177dc25908d554dccd6afa04dd0c9b3e4bebc7368ec90e04287abfbb83542a2d947a60fe9965883dc8ea274407295b822ac0dcd2002f6a269eca507135b3281bef98ce7a6e32d6a3aae1452760c0c304d00f3f5dd2c1827856b97ae9d6498e36374c3ac14b15eb52de8124036d3f8a94877339892b1919b0e6cfc0402519623126fd73610c74d9b8c3a63d739f5a81945d317e0d548b99a69a30d22da5c16692ad3575087cbf17f512453c2545a61144a80588522f7be26551b69d0ae83c7b47e082de720edb8a1875af448d27308545249030c8a006463370cb2b572349bb3f084e8ead8fe8cc16fa384d5dcf0b6a5b79aedaba81ee42e964f5e5062694c2a1089de0278a02285d38d6886c2768177326cf9f597b666f32c696b00a3554f31d214c2a07b14a747b4e738ff34d398689f9e249bb97ef9e51ee06a74d663c16d9789ab3a2ab5893b4933b8b09fc71bbb34455cb4ad6b25aa62ed35b8dff5c3373c4b1a7057c288e09d3f10aa2542ca1ecd1cda937ef3dd57102fdfc341db51f723c40b22116fc847e6a69ce9fdbc885b08529c08e71da44f48b70918edff306875e24cf8b356157995d30cd60cc05a9c87021c99155979d6c70664df3434996ea279578e1f2c0bbc6110108ecc192a18d571cb208bc8747ac079098417f7b1b291891e76003f4052980293471ea781c08302f73770be0e7db2552a1cefb43e5238a903942de43f556d2ee3b615cbfc5ee922b16effbb3fa92c2a04c42db62fb3a30c079ff298fc2682b19bd901f1c3afac3796fd2c4245473c61cf31ee22fc8de65d84c6f7911d49f74c00272e0f625512c150b97b6236c32dad6fc0cce274b3cc15d678678a9a7acb863ea7397de5b66b122af6d9deb49c7972c9b83c3f339df7dc117a967cdeb8e8031c2383b2697ae4a0bf07cbbd5aaa8916f22cf39497baf37b1c75d1544dbbde51d11d831e33b4ff7d28dd70fd84eed6dc036b10810b79853232dc2b84839cb12c1f01ff9acabc16ee63470ee0da8ff47abce7a71758ee4ea888c5b5d534438ee1812fa69bc2db3b56234a7bfc89d194ac4d3e28366d402ce37286dfbbd7f7eb0a91345d5d0b53834508213f2a14c62dc3760b5cb7101f1d8d199b5a24fd467360f0f0798008116deb5b88aee36ced05ff91497fdc5d76e1d74aae7120263ebeaca37075097f3bce0455340439a950aa9c48531b4b3eae57264d3be13773f544ce46252a46328974653d99d20379ace48825ab5afca6c1e2a2a2adc044d99b81d113d57278df3d481d81b9d275e576629b2a58be5b7dafa139d69435b6630ed6ee7f4bbfecfb1128169465bc1f5bff44c8db7730f085c85e311e8486e55f63bab0dc3009715a0499162d4d6b5122ec1cda8d38b3a23b97f99d5d03c45afd7157722712f05e5acafa7c345bf1bd18ff752575cbd521352cdc072ceef052c0da7fe9a3b7cec736644cca8409cad69d2dd6ce18ff282e09e7628cd0864e3dbd6e8276cdfdfebfad83bc94ffc8d980b439a08870a732509aad04a3da943c421485384b27ebeb8cf27cccc747c24c7ffd08d8d610bc6379d41fa5a29475b3a5ad4a8fde2bf45bf9106a03ad3af1d59a6cfd47a9fe366c68df6fadbb4c7dd5b9b9b6f5778d10f5779b362760db07d93b8fc47704fd231d314d9cefb5da7cb22e0719d9ac6c16c1add1f155a81e4dcd7bfaa02224fe596a705320cf2c4049b93ab11c22a0e4c8ccdb54e3d3dbb8dc934049cec4791ce1540afbb554856b4e80b884fd523922914ee1f10b983ac8bbd0008fde76a40c7608a26567597d8912496ce35736e01303a478e1ca086eaf41274d18a2e09d3f41630c6a59b50d3d0b8b3d653af68d33ea38e442f5320c62c746ffeefb1d5276e6a0f85b0b887f07704b6dd41947c2e0b31c419f94c727292e57921387bee2fd827a56067777dc292a3ac21d296ab7da40f84f32b1bd88dd177921000c5d3354a1dc078fcf1aef50a89b520b2172da4323daf58a54862a079c28aa36da123c27317729490f6359ea196fd104de6826734ca4f81d9c84519ef6181f7d1010e8fe5d029f218b0be7193e08ef5c1eefcd71845ee3995cf1ea2af2d45a102ee8a98f3a84d09d5575aeba7eff23138327ffd52e2dc36f10756703c4cb9ebab8d8d9bc0eb4b2c390984e7e2df960b145f3805e4980fb1c8e3c0dda5e69fe1d29109c5e210e0baa01139d9306897052edadef65b857293eeaf9feb754f20ce3057f3f4ac5524d90217ddcd09f7ccb611f437a599bcaceb3d628eb0071b03e8fd3aa0d725524eca8046271911d8bdff8c83aabc1068065afc20863b1ea837d92cd06965292f1b87a4949ccd567881017fda17f3a3e0040ef3face1e64076cfde88f4b7191c742ac09cb0cfb452ea117e479034df3edf712d63d74bc36eb5e0c3852e184894f4e1a02b0e44de2c03eb2e9c2dfc6ee43788d3948e9eaecaecedde1212e400639a9e56ceaa835f1e3bfc08f849998f5bf38306ef1c7d446e9121b2fa41d999308c935ead73b40edcf5e982c60dd3c4524968ffb597db52441a4c6bfb10a9db82a264f87ba9b15bc411b600332bbf40db33ebe9dd49947b5a2586ceb4fba7f4c3b3ce517318d54291a886fa1421be6cf74350f60566fc0b0afd13d08a52ba24d913ba3e9c1952584d475a3e4e7b8484afbb06b98b6b30d07c9792b1cfb66ef6273b98f34783b07f3c200a19fdf281dc6967a3e77def38d84b219a49d3f685a4819b9b802575e6fab6b99c69aae269efbf14c714b354b32b6d982b8c74615d23d05fc4ea061d8ac790617b8a466d7305c8232433a36028c751ad5fa9fd8ce788de6a156b4c16bbca2a7761f60a911818737a434bc12b5a1bddbda62334ccb05a8ebd5cd0f80a7fc4539047d3030db3af47270f7f57cdc672f65ec276e029c476550a64241633ebce50e0eb313b256e97c48cb06c152e0458ea8bae1d671fbe5d3e4232b1a6205260d9a50ebad5bb658888eb011b8a61ff580654008f9aa2028b26942cab4214ace7c3dc9238dc625a29f27ca134cf5e8c8be431bed0196ca69781e4bc1878bc996af1e2ebada94dbb9de191cde80294120c668c344b2932a7e9e653fea0387610dfafbde32401102175ad48296bf86fe55258afc29b31d900173620081e78eddda4bbe2072fd4b1b1fc22d837fcb29b69ffa5d64b3d403df3b43aefeb503915d017fdded31f236a413133ac97dd9a69dbd0c7509a041acc9a5dde3bf43a8e01c885fbe71a4b3e5c884207f240a798c5674ee420ad83857163f5fef7802d70001a1a7cca22357dccf5099d62710562939b902a348f8d2c5c2ee3d5881a0d3a10b57455fe124b7d79679192dd5eafe82879a2767e403e2591c02d86f528ee0851c2fe20c6c5d76ba40b1b6d0db2e086b07288f062337b50bda76469bd0eec8799b05ae8d354509377ec23c0fbf3f6b21f16be396f1afb9f2a9b7de33c71d35153b466387926428b3b8f39ea6dbc6311a540501da1db1c232d17b722ee0bd6f977d70dc5a881810f5a027354db19ead49ff46b9440d7483ae31399151ff1bc4c11b9601b0bbf83b2f1369b1ec604ec2fbe19082ded0fb19b8ecea59b1a38cca021d469e68c33797a132e50a1bdf2fbcb62e30b4c99c6b0aab1efe39c23f6427b86316ca2b61e94ad3c3a6661313b02ba57e98ddb8ad6a7147b7a77baa62ed56a913f6f5b7adc310852c327356aef86ecc5c181f430c63fc2ff33b21a915a569e5953a775ab177c8ab53416f96f22846bb0b687c4488de82139ecfc905bd6e1155c59812f559a6da3bbc89426f6c0accfe6894547949a9c9da8cebdf518a8d7325059966a0893a319051dd119da351dc888127ccf326067cb6c3c5675cceb196b82db8491c307bbed91694ce0c28a364c3489feb609426c163270d91feeca2cd53b2622f5a84b3a2ac933e122a07e372e5477f9d59a07b7a32c50a87c15f4601ed9f6f5379ac79e340687a5bbec65085d64271dd1152e039210e50b375776d6f4dfa95c0c59f9994ee6425d389aeb1886a971e0926e56aebc689b0b59a1c590b7f5e8a6931eb0851e401e4476877445268e0ba1cc68e0665da05e358621130d6141791e59a754f69151e2045ec939b34ff7acc82bddb6d3fbe6239c52df0c09ad0d16b2861b6dc3500358cfc727f59d71ac023341a8a1c0f900a93c4d65d0cc7e564657c5c44bfaf40e9929392aec1c6e51ef55bff130b66876dcd1216a6b0f1e6798c4d4b1d5deb5b74b5569f19fb313aea6557d044516cebb0b6dc2dbb0627e3f803c8430c593850f255d7aad9119e48f3a6db43838e3c2c5b8e1f5aa9588ba93f20decf592240ccd0e8de731eb821ab7a62124ddc8b41da87250882e175da0480d073319ade4f56715848ee1f71f26e12acf3aa69f48354ac83d5c9acc34da7d0d9818b93807c61c45f34c3bb2ac28cb7271f472301d004602dbc9647ad62893f5d310df6862c1bc6c79162c846f355a8cea1f1e270af09cb5678b9d09d3e3a166369fe6a929fd12346567990964698927eff3419d6ce36e1d6c3ae13ac5d8b34d92275d53386c1d7282a9c60ef408afbf8fb46cabdf08a273748e573f1fb44252cc036d48cc7a877a4b95a96839f48ed7c5a3d6e285389f857dca404ff886a6f758f601c8df0085904201bc70c0f3c93a90ade198fe2c96b238d3e7c0d9822c795474a4e517577cb8a6bf6150bc08d000e206b16f67a2516ed66d785e88ae06f8981c8f71bd7eebcc661282bf35db5115a6db7e7fc72fca78d3a84384f3ae90ce48d07a07eb447331581892a5b02cd34d9f5ab87195f3528294f2bd93479b6c8090588d7bd64c4926ded8e9c8401d8a34fdc36850975dffbc8ed8ab06d154e67b66812839a04944719cd067b660adb18708c7553b348665e3c17ef60a4bb56a0c7acda0f01ee64c43146794962ac57dfe1f91cc566ce5bcf42ba3a1468d4f3af3048ea9eb8fd61656788316468d735f49187f4e1f603b007c8873bb708d867074ccfd93c84cd8fc2534481368d9d98f55ce019833bad7dd2ed056d0ad47ad3bd2a3328f1c3d19bad5a15c430b5738565d1154f392fdb778f49dc1dae42491218703a519d4008ba909c094201d22aaa505f70f4d0d323466711bd38942462a068bed7ca9c40a4eaa12e5820c174781b63c3d4a188ef6841bcedb31365650a0ad0bf7e0aa2d874eb00772d57fb66725f191bf067b717060d85d9969611d78419072f2fd2a141473956c64e2b3077b394243dc1f5491a45d03d9aff49305d779a6e140a5f638fcb9a16ca14ebdf6f44f0f6229476dd62ec45cc18e1b896189563271aa9502ef617f1f2f8b7b4c58d4549b6e21fb8ef578167138bb9eff46d9c9cd1a1f725740134fad46a7563580263aaed1d44b17bd4388b38c54da86f5b4021db1ee134c25593dbab089b7873bbae5faab163eaebb5d5745ba4b09577b6a231a98f7265ecfbf18e4c644b91ea638930d681d57f1fa996b2aaf5c49a3d09429111b95865dfc1bdca324cce14dcc0baba8b66ac213edf7d665e78a942ba510f660f0bf7591670739e742c0a4b41ae05c2a30526a6723d5f954e0ed212db2d376b0f41e24e0847aabf6e97d3c906414443d08afab6bbf0105a8a9f8b6f637cd46e147edea2fd364f1eeb719ade4af5612aaab3b1e34386076450495862f15f2d8ce04490e5dc1cd6cc3fffadbfd5ed75e934650bee1ec88992f5f5cb24b89859015e52cba860f913925b37c119a4ff4f1b8005a08085c322de278e02321e78c36b39168134603a868e7978e30fef4f56f33fd328a690cd9d5d0cb11dc96d882cdae1d5b70c891ba18a04f2e4447f35453cc148ad99040fcd111ca1d5b8c5eac3d6e85351f6bbc944352f3dc439c417e03cd074e5aa51ad136a5b491b3a6a3a1f0d32d2492f6e749441ff70eaad14159f86bf447086d22648068d3a29a4641ca5cd04118f5c22209456677aff4274955fe8ce3b0ad55fa802730423076fd61f032906b8d67cca7edba7e84ee4471fb211801a8a82a069ca3a4beb17c3be3312a6fa2041f1fcfd260a6796398d9e9aff7aadb7d1f12d3d7966a864ea582843d80c25ae8c9b194bd5c029f1a9766c933b1175d19506970ea9389c16a3598e3c56c79435dc946f10e840dcdadf4cf1b8459d5e54f7bcec3a1ace5fa3b9bdb0f447438d06c9c20774e9f6e3ade303479eee2311fdeac9e5b0ab9eb4dacc62d4a70d5683ffbbcf49ee15a7c5da6ada31d6041f4a15b59af38687fb07db9c218e447ccd1f4c4930c9f2bce06c6fd5fff4d9758158008ee4063997f34a6dbcfc801f2c2af3329b822123aab5f72d2fed3541fe518739545b1da50718521ea01152881df0cc51b9b535d3d53c73ea43dec502aff14fafb2e3790b16b68782009fcbd1f1bd04eb6eeb9fc6a5fe9cd86e948a43fa6686e45024fe8585e5e271f6934d91350f883d9d8c510eea011d566ace2d1c947e4ed3e7fedf1dadd73def3ff059abbf6769a4d90f88d735a65089f833c3d5a540f6a3f3068582bc32a1647f260a9aa3d47360354cb23e711b27d77d0b129e6da436d9895abd883e20f8552cc6687956437e9209666b856dfdee15388bf2e7b605dcf4ce04a80cb7d3e4dfd6d0237f14149d970dd44ee29b693bb3aaec81b78b2c4b6a70a5526dbd06af4d75552310e47becdc2cb45e9832000210d4074a19596ac948dd392e35e9bcae1f9e231adbbeb40c7327e4077b4fd85ff1a0bc33bfc5c3e980dc708a6dce088268a1ab12c4252c19cb67a95824f1b43fb046c6a46cce402eb5a2e4d2058e797dbb0ce9130b07643b7e7c8b767f31f9af896d84e17ea511c332010a4e19474d560e374c90b181773bdb708ca5bea5c689de886a8d6798f6008b6d6899a05900a45ee63641a29abdc98823f6a36d1fba03e2598bfef734b86d6ea847e2141a279968c2b7dd7f4c56ae43b745b31a99b0e36ba4b932fae8ea401ed6f8a83f622ae36e1638035424db8292f28b4df1e61832e6378a6a415befa56e84672e929ea9f313b58835ec741232398778c078d146b3b07d5b84d51bba19f345f10a68a84c7ccfecdbada81152aadeaf4ea6e0e3bd4822faf0de8be2c4732ec0cfb6991b88b94f6ac571214cec5ea632bdd5fd277027d292d3cda59ee4f64fc1744ddf3dc111b839fb9692806413b27ac9461603b961e6dba690a429a666a321db22e2a89cbd594a60f1c16d0e61cb484812f3dbedf99c06c83acd6cb93b4e7fb6f8e9ecda22ce4c5b6a0016228627c1d1a5e38fe3d2ed5c6a5fe4245b10deec6bff8ff4fc6e30a8989e760a937ed5694f6bff4cfff62789c182c42ae9badb56b182c66a0aca37de9f6ab291da9b0e536e10028a3aa54691a9c6ccc1229375566fb51220406af55c22c0c908158f6f7db8177cb68e395067d72633c8d33646df968c4dba3a05b71ca0ec44644d243bd056f3c4f94985f470275fa2bcddec2e6279c4e2ffa329df1e7d6ff9d36e133ee0ac95bdcd7cf97464e8ca5d664b677d0b4d9cd6c99acb337bcb60e302f34cf56df5a2d07bebb8ddbb6882f876420c5ad519c385615d0b53fb1e55bdf4f83870335ffbe160013fc1664e261352b6d60de1d786c0e40c2ea7fa3953e5cd939913b1a9305d2d8f0124c66425795dd4905ca719febeeb3faed73cb173d437c4686713e69a4215839899d906f95da4f504d8113eed1f42c2d5f3c5d9d1e3ef82f521588bc2a7f39a2298ef662e4f543ad67e22e2a42ef23732bd35c59e3b3209a8e450b312f0fec01d444fe0cbb1aa8427dcfd3656a2ddead14708a758cb7de701f482c86c292688e0911a3d673ffc03aec6596fb0dd7a513645ddf058326fe35c617527f798442620f6131c66ef3eff3308db31535ac56890106e84989513f6e28ad83ff58ea518d9d3ad5320abe45d05121909d50225735a7ac288655294dc2ee26d113506db981030c6aa3e98a6fcd415e3d4a4b8c0d60b1bcb3e58f2db80c9ac4f15af5e02710beb8606b14dcc9470a3e9592835a2d7f03b3b66dc932e5ae2216feb81fa70259be1d1a32c258f95cdba5fbefef3da840056ba0010d4ce2328d2fffba2486212e2546b88afddbad7b33bc73db557eb6d2e875dce97584d2c40dbdc6435f0cdb07c547f17bbcc180611e896e128ef611b3d8b98383475e39a2f20c4be5fe5259eca3d234346699a2a86f6645cbbe3e35ad62cccce379278fec97849e068381a591df0492cf8b9f2eb068a0431a0b40bd2e1eb348c0806110067c3fb2a63fb5c72b1c487522b32251a6169d60d266fd933764eb5a8b7db8f748372742ef7636bcba5166db69cbf9663e257e1c80cb11190777b52370bc2993f6eacadbe404baf5ec2f14ecd2d194680553fb175805481fccdc8ad716e7b44ac23e7f301f22093fcc6a31967b4d7f82e2ddcb79f78d822e9011b715eb2d4451ceb2dc8fa03dc09c04421f17defb6adb94e99037763f4a49473c8acef44715799f5b0aae0493199904e0d8593579afad8902c3c1fcd86e311ebd4f1c1b54e285921e36165423b74b43ae1e79208055b3fd0ea8e06714bb875575fb3ad81f2c282aaa6663e44b71e30a3fecc53c7d860953c430de85ce7c635f1de71180a867ced533403aebf9e8e99cf08686534c81ddd70460f9f73c04dc5326ab31a69e40f731d3819eddb645abbe67a75816b09554b951e53cb44dfd98bda128ae9e49112aa32c7608bef5ad9c605df5265f4242061bcbc658a69f5145a8bb31d90a7c92ed3629c32cedc57bba5f3121eb5286b0eed0992d045f67224244b2bd61a786aa81a367446dc2e124abfbbc943d6ceae9a04b95cc53dce23de242b03e695b70bcf5425cf18b9e3d60add056768461ae47d8efefac675f9a5e06368e2f367086650138d7f2bbcfd148c264413280b7e5beafeb7e912ba2f20e068e6d7a97d956e966581e4245c4071186b39e487903fdc6a84b5592dcc58af7000067ec18c659337d0a6dbbd381af377a4c1086392be3b172a5cfa1a8653d4982254b31a12c48233ff0dd8138935b2846daf6f57c1def5743284e766536d2a1532d8152253a349cae80bf292cef44843bd6093204074813972cd396e21611b9c87dc8d36d5ef5090afad1d54d701cae8e781d19aae2278a208098afe2ae713dc6c88c0cea69f45aaac54e33cf0cf97ef6232191a6f3b61d6decb814fd6c21782e66f3b1929369a47a34e2119cd91ced3e46e562c66d3d7bd4a42a7c14a50a2429b79f2f2d3f47c4ec9208e7b604ff9c335b336a84e3979e298676e680057d939c0b78cc89fe0cd083ff45a6884992472bb545cc4083722f79a28bcd6f91489b18f8787ae83000616b29e1ee6181da7bf0a0e93ecd1824f5b22e97b65a827d2cf6a6d46e4834bdd07a36f9bf89ee3c1a4077a9d759a48edb58502dc71aa22592c10c3025fec50f24eb265c565e1be9c8ac62cf479a9d261fe88f89bc5c160f26f0651b39004965eb36fe45c850131d8ff2d1409c1bdd1dee62a4b4a8230794bdfe8f951d3a3553d04bda83716f63ef504e3531415f3334f34eaace5256f33c85e6faecda9cf87c422a6d0c484a9a10bf406364896cfe315d4a909c6d97cb75553faa54627047562a04fab38b59924ddb839615b32116c634b9621faa6c4dac6b5c85e2b37464a746ee11cfd30f2de3808978aea5956b9817b1b70d45851ea748b41e7852344b7318f1f5956b6f79adff3a7f9ae27976ba9e379165bbf0a0f87d5fefcf1b40293f628d950ed921bd62b4b63def0385584a27e2d3604d628968818be51f4e0221b7b957061ab88584545067a8cf133909c2bedbf57cb902a9213011db3a8cc6fd72dde1fba4f4bc6b2e599ea47eea08af9498279ce5380e5f65dd2d99ba59d61de15eaa1e2eae7f70d06593c1c86b784ab4133a98e686dacdf207a1ee0cb9167e09c09fcf73f0afa2c2fab064beb2b29457e155f884550b0e63364c0c0a2ffb736efe564f52afe381cc53c4a152788d64fe497ed0dfa24a63973006e11cd05e05f309b037f171a97919e47b1641a8a1cd63aeb34f282f45fa736dd2eed54a5da9694ec493cf28cdfe9d9c3babf9697c211baf05ea8bca244c067243e5d8f548b25cf86ca8126deb4c239e4cd1837b90777215e41eaa323f300251e9abdf3b0476f0c19d9afef17dd0b9f08b6d44a9c18e43bd01ebd947f0beba6645ab1c48efa633b65559bf528154cbdea127024e2af46ad265df92d92aeb746618a5839deb9d2742937f5a74b9081191641e91914c4d6398ee6364e6e4031614365864dfc10087c3b5da4da8fbc888b4796391a88440bb9a988a2f530992961d2394eea26939d6a48156f437d65d2d9eff1a8dc6077d5a5a8a3766d3acce2a4007c5b5be5ed9526f4fc7143b51c7a147d1547d52daa84b1d8140d132eff4a73c81374a250cbfa32bc32b745769e63348e683afdea60661ef0836123f9eda24cc227fe1ef06f08a99588417049cb9afb6149dd40aaec8e045f7c31b9e88ca2bd17b29f110aa91aa21d7573102ef673306d0128c63e761b049cca81a1eb9069b90d0285c9616bdec5f2f619836dba4e4732469062669adaf5a853f9b050e2cf32a60ace77d37a975614b948c3b203ae7d42b64eb68fe8fa859dcfc88eb944527bda9219781d165cf3e8aff49b52caf935eb0bafdb40d31f05a82ebc88c8fcfd242c8d880e83dc21a09d37fd28f5df054d213a3b6032910515ac01931b7d71abb434a81ec0ebc75b017f83e05695040bd09ae641ffd6ca2429900d9b8d5fe65f9e56c7ad9f4efe0850f36beb6cc1d457095ef8b0e66d5f94a7120c87a1355c5e1f0206b7e36919c02b95c608f9bbff4f723d348f9929cc60048c2cf3d1715f559e63096db2082bc4f9ad8c0384708cb0f83809721999f6335d4603b0f2b0a097c671dec689a927938cf46648820691fdd778f21104d8e34b4d36f6b1790c62473f6adef0351eeac842b1153d4cc2009e620350e94f4803c38c662a5cb2541752e1d1d0aee6758e056ecf83507945295b0d67118c9fe80972c157a29e887a31895f48eedbc3c9d816f9d070ff446a3880a3ae7f81dc65bfde90f224aa44d4544e6e7416c3e2d0774f4f7a7ff7fa89cddff19974cdf9e1628fdf32b2f46945577eb90b6520202afe6af2ba6e9b4a4d328f1427cfdb601c2ef4ae36abd8fc5b4e0d34ebaffc293f977fd9d737633005fab60d10b52214e32d979287516651da590a9cbb2d0012f6812ab75c683121318b50f1afe38a5f63d4381404ba570628080ff29a10d0f896d207f670af44a2844856afdc98612b8c907b2662d5db03d31dae8e37f9bf6ad7c181268d0a139076479a35cee5d3d0f47575a46a5740d73f92e91872624647b2ba8e5045355cab2bdd3d30d3b4258b76c5628c4b7480024490ff7150815fec2236165e2abe16ab29af0287bef4bd67da5bfe984b32c218758b0d725756aad214bd7bf3750c7b7df6ca0e39b7984266e9d9d201662838ddb23312f05a201f35fc21c3849ad385d7303a3905979bb01bb540e0889e29331f94c2b64d92c27df04c9f325a86e681b431d4f800bf51d872a32fb4c26bde93e8de8e504f4d0860f8b1c24e76c1d98c9a6d9d14807530363e18da67e65764fa989a8c177c69f231fa920402177785cdda3d76bcc5e8327558912bfd6a430c0870cdfbcc7c0f947216bb7c309216d98366b93a3f316612214f0f8fadac63e184bff684b26fb12172571cbd5dbd35129f7d6c3d85b0f316f3164f9691ea71ebd82578873b00d0645733b0d07c5c2735cf43ab7b79e177e4d6194abd8e5441c90de35a01b22ab8afbaa19bc370607f8e6fe29794b8311f25bf858ac3949864bc4aa7e96ad9069a73c653559090094e212661ff39b864cd2965c4be3169e9f81becc1cfd3f6c7729c79adb0e66125d6697ad3b3caac192beccdef67dd407a5c138b0be4d276e921b4bf761fe71f162cd04b34f63468e0192621a97d772a472aeb258d024009b5515c28378bcb66b128cbd5ddc1a24f4f9ff2a97ef9aeb1799a163eca7a6dfb189bf1047906b29166e2fb08d4a83fecf0350f1d3a1d2e2ec01a76ce0a9f7755b5d3ad9d95df606a8cab1fc586bbe1bc9a0416f29d9f122f6b3afcbf490044f28c9f7cd8d8352b72eef099c3eb7c60584cdca9ce3f13f3690e05d62afba4a8cf1da757527ef9336aa3cf4da9f2537a374cd1b771d648b492ce57511a53d9d3a8be2b10d63c6a03115daea289a2f4f253ad95bad420ebebe7d4b53a7475a5e6ba2510d8883c9fcbc21e8acbdd1153686802d7c874e421cebb0161c108c86e85d1fab337b34a2453a81f632e4d3f07991b8c03397d07d3444eb1b8f7873a369205a18c5e37d3cbe794b70ce1dddb44d3180f03cd4528db15a091b93e41e9a86fcd382a084161297e4359b27fd91d169bef9ca008e7480cc062093eba1c01212b46a18b3909352d66bef60464f5b3493e654fb2e920a180477d35f0d523a16eb2b92375061e61d23fc513b8112352dbb7865a70fb2caf56532b785fbbb2ba45380f88f044b0d48ecb202316042c575bea11baa39972201c3fc5b80064388ceecdd2595af0efc96b5287848d5cdc8a5e1454fd51b04483439576ef4548930464062777ace316577bb9aea0d136eadb590fd63fbe36b4eaed14f8dcd4fd70f02982679ad9508005aed4418bedb597b2ec3f58ea64ccb9ab68eab02003580e7c0e85db23c17fa08d19ec5e1dda468dd13be9db91f11fae19b392a10f66af14ac0e6adda8111d2347af8ee9376b5fa3cdd650a5d86619ce4a1a049325c65169948b4c12701c221b3b49487abee194ea49f5903099dacedf3eb9c196ddccb32bb78f2c0e7d96f8dca4177cc19c11c460dd01f2f00f6ffb59b2e9e413e79218eea0ec41f56d7aeb122f705aebba56fc5ba7a3017c9fb7656e52c7e9609b1619295d939297f29cf614c2fb784420e9e933fcd4919ebc43e010bd5b3b887b0019afb7e032a64cf3bcc7e0c6f48706e0429b0ed6c26ac75c9e35b1810417d2cc213111e73be8e36ee6dd11a949f51e612ebb17599647f370e15f7226ab2c504d9e75c842a25c4633e60ca8d5f38dae5a83f1b07ab5d595b507df2e69440c0c599259f4e042d647d455bcceab6131ec7ffddbd4ff2538c9bd9c209e0a58d57915e31260e215de98666eb29ff7ad3509956f5568a54565e4efbf0fc52ef827c4b03f5071456d115ebcbce4f3559dca544f7b322272153c39a48258c203eea8f16dd22278c017a159ed420700032322e387a3c72732dca02e8a3ee15229d9daec6e79764c6d255954cfd59823148747658bece3c71760aec4d05aae047887cfb7c43b4ba879271610ae42e1a384b5ee8007201c025baa1e7632fc1d888e1743f6efb09ec73f689ea726a0966ea49e46613d041c8af0c572576ac4b5e68604f550df009c47275002279de79a1005302f68c242c9f0d96223257fa2d5fb9476aeff3eee989c90611dd02a3334702ff6a525578c6753440c07a643680ee253e945836eedad75f35baba06172ca8682fa0c6c3da4f2c88868fc07db4a10177fe88da8a2c0a2f469c3d836e499ce2503b9428530ca81a3ee60c4c69485cacff914222ec005636902612ccdb24151015e0e52993ab1fc81cd057d8e608cb26c2e0e65df1c2bb7af3c6733fac2a988a5cd061931b707fcfb0e2b8a3fc148fbd5ceacebe27419bc31665257a75dab2fa9d8c36511c15926975c7857138dfd08487d0bff11e6a8e77c1dcfa76b90f23181cc6fcd81b8726eafaaddb9e2fbc99f7a460ba4302e9c498b1f762b35957ad3773b3503b73ea8647b73b30d858c3ee616874a6c56f0e7cf5276c49107608d2352a171f872e3a8193d56db2374c98e8800bf081510a100e6b6b90c820bf9c0da8529c580cb6e7fa8c467aad79e3afe0f6001d2c0a255269b66b515cd059b7051435719cedfa217bbe7bba246421d8bdeb7cf51da9768f4dd3092a529fd12785896f04dc13c54efc23a66571688102609181450f5c63fdcddd7f286ec2e0f4cb487bba46599e4e14ea16e872bcf4d30f28c0c32b7ac9f766d2d25500cefd334fb38e64ddcc88c77f8f4e3970d4c1393a4a8d25bf6f46dcd3e2ed80192ca06962ad210495d8d8fe7dbc8b565c624f971a9eac2e9a51e4b48be684d534b1ae79d1424401980a3a57f3b2069a60db7839115ae8515175d4b3c29445bee0080a6a5713d38588149d23e8803ce45a9a4ff030a6f0a69514791f966a76acf40bbc54c2ae1e1426a32667e82f812f5ed0f5960bde27deaf6e87c3ec1c43bed779f1a629c9d024acc61f286a820e04312d3727ad189a83a8d96afcf0c8a380b2773fcabf850410e7a804c23f7134de96906f8098a02145ca4c8f6ae5b93b211649e70b4355533bed411e5453fae1b570d98a980f8d280ca8262d1f188c57b62b2340654c58fc0f48b0ab59c86ae15d20c0d6f249074083f095825a871aaa12415ac16f473891e5afb93a60a589f1ac85cfa9e6300ff8e988c0c7c5e3c72d77744a76abde634f579b69dff2ab374c8c44ab29c1b0e72980d3eb52e8a9bf7245f8c47cd085f41000f804db02bb64c771e3a06ad16f24b7b80f2cf750d278516582f5aeb652c845a7d7ef0f3c3b59b682e7b2b304b8ed6f1b134ad862402eddc0962666f67c3f5a7ae53ed239658550e53aa685e4e70e2b75e31fa497f1566440cb677ecb17551e4e3b3f71a96eee3bc7d4a8508cb292b1d33f9375460cd1786d9f8f441996c9a638789fcaa99f08e5ace9519d597c153053434293d14562d70be029e3499b0fb4d726e93fce21c7378fbb32d7c3ea67a5822c76e3d30f6e4073136a7557839d7e3b1a0a8b0f1ab91b30944f3d78202ac6022fc9ad5a76c7ac9fe5160cc2e5a8f326e6f32dc5b74859be04efbecfe5cd0aad79605fcd221920c271ad175b36e5f47dfd9f499e2fded5d9aa210be5158636aa26a2ba9385dcf3babcead630e24511ef32c4b760df431242a294e56347348e7b999b31ac579456779cf53bc9744c53a0880888e851eff1ff164e5af00257dc67de5521e840eb09a6fa406fbae9d783af034c86db4636ad4a1a6250e3669203652b1f0822d9561b2584651d6b492c70d108c8bc516a3c4efb1a7e6873c14a6d6043dd8a053efc1ddbe4d49aacb8ef4d00fe0fac3eaa3bf81fac5f078df069dd38b0dd53b9d5cf0c8a4560d4d6cf61102955552f90f7b0769bec1271f6be0f0d69e58c2de4340b841a63eb56e9b888ddd74a7b111c083f4327da69b04e634fdf044d39f6c6589bc687978fbfc30a2775177bb3431e513dcddc304ff21a96fdb489cc4d6f79fb770ebde973268854149e3a943193e210ea202588b2a028a36efa887ac69ebf63c9a0feabcbdda3ffbf1beaafdaf18aeaf7a158b6d261d4825d2b69c411f345d05a6e6c3c904f81b6501856c9875ed8a678e96a66873a402a0a9c029c64dc7e2be16dd6b3172adc538421e37b7cf5dc424fef3d4bb2681a3b7c0edab46620469f126b51708d72a9ddc102757eef35528163ae413514b85fb033aa509dcad3a866bf0faf900a55af0af47669e539bbb150b06c37dd0c92a0242d7700a64e9c986c41d169f2ffcca48689cb94a6415ff707402294c0cf47d268c4862989740867fef42770768399712f3c225c22559e28ef80e4468fc3dbdac4e56945dcfe528cec85fb10d3f0cd744d251b4b567ec69428cfb28c9cece1b46510994af9e3b01446017539d9d7bf5df9eb6076a11895414831adc55d1fad8e0a469f431c4c039b2101fa20ccbc6fe41429db20b9c2152690909127c1bdc4cb223767301315c24fb3f4eba437c03156bef2cf37744c998b1f87bb5dcf833c20b0ad563f769d4acf62a3619d4242f0bc98e9817f063e56b6a5035ecb1bd9c0d658d004c26f93e0be6f965dcd542771b5c017a430d4c5102fbaffd574f29e81b9f23aa9cba933d7b0efa36f40a9b04b1a46af251828ae91e48161445fbdaac3ae0c85762dd15f526f16e8be0a6ab14980ad62e57bf964865759bcd4cd0b8efaf4d80c5e95cc7f32d7b2535202e3483828bbded8a35ea6637f88b4b48329496fd37a71853136a8fb53927ea2fb2baa76e8fdb3877f4167816a41e82f3f5e79b0b7fa2653ab41aa1ae60aca8bb1ab868778b9fd767fd1d7487f67c31d7c46b676f0f751d5c28b171960eac31514019d7120223dcf33a89fa9d009f088c9845a9c409138d39fef41d11520fd2a2a8ffadec92409e8e571b1cbe085155d67b2631679b39370c145ecb635840e14d4d5d96009c275fb7062b59d019aedd1c21cdb17287c2ec44614810a504ffdc779769a2cabd0ea7aaad636e6ad8d5e46db64cc2bcb43b3d86294a1d55c5726e17f5b889bcbaa1d0f1c9a43fd21e856ea72a9d2f30c5da7b2e231cbe43632b39d2a6deac39261a8af5fb67f99cf928ad72b2d4e2d57ead6e4dce30af8b2f0da1e2897926189b98b104e8c31c25be5adf0ac4db9eb1621f731907bbaa1c84daf5411f10fe3d438a239870fd42bd55d2ffe122fca2f41fd6ea4fd83245b3492d4f69a9aabe86a58c092976b0135e697ca7ddae614a14b78b91828c829ea1b36d11528f1df08d8481201f88206dae88f4f5bee3a2268b901fa0d1ca25da413165690454b7a6a18c074997a7f7e1422412c8816f1ad1eb01741eb3baa61aa5985a9c57ea0c9743eb1ed097f04f732c193c657345fc31810565b7a33f4e847ea2a0c22537e3aa990c07b2f629a2511d73e0563432af025f98f9f36ff1a736c77d5c334d950a50ee0f0fecde6d2f1bd31d2bf3e134c387090c9307fdd5ec64fdab87a6ad5c8b11ab48815fc4b2e41b604090859d8ea568e8d15332ef1eaf24fd15a6942c11e55f4f897bfd58de8abbf5f62112ed3fda9ce0b92f0bc6b4d81f3befe8025dce711513b07270b179f678e0b30a901a2faa6570ba6bb05db06c7d604741d94239b2945b072e0cb39c43334311f13a1c9575b0d6c91cd54cecf301fd6f4eaa270d64eed07932de355b96dbb06f035c125794ec8e86f3988d2062c5e46acbffd8e36362bf3c2055ecb63061c1e102359b9ee0849a07015505e5213309d963e9128c53321b4bb5b3f17c3d2d891d1768fab98d2f49cefb84278c9fe6becbc9a6e68e56ee0309e852470a385859a9608718309d9846ba57365a58423dfb186e78d11f6f478b8987256783b77a9ba8165b2fcf593a9fe10428816efed676820d7b059f7f093ff9d72c6ca7090d538eed7b006559c651d13a743f50f678ec5bed7a36aa95287e35a9bf77119cc95939953bb5695f542e61fe8ed9459737dfec6516a946b96d370a77c2a1318ec171f6896a18854e696a7c6cb12ff391679340aa1a934334824a99b02898d4bd329d9a52553cb0e02b683776195fbc62b0c86a57eaf869c4e3acf16825c916235a96b28f461527c56ece06b357623285506698f2f6d859cd16c57a7d379f93b1c1a2fc54ef941c536dad07bc22d7681fcbe54afb7b1d35ff9d001521ae35877f7b24754fa38c136be4a41fa1e14e816d5b67bd54f938f5e137d08c8b51e8d293cabcd99b995d38b33465ca1a048f3b351bd6c24c0448c6fe513ff0803c5320900a8f9ea417e190da7d76ecbd203ba8318d7899b1600ae75249dadee71ffa5821e9bd0065f46855d71afcbbf1f0de51efabca801ca0f15a02f74379b1382ae53141400b58951325fcb37d3ca1053cab057278d3bf0591e83cab65692e0cbe4ce885f0a2a73fab4dc376befcb7abb4b141e645137943745d3e4356ebca4adaeb808d5e09a8e366e7a3eb79806d4800697da93666a3f35ba6d86393762d435fda5a3f3c4d62f5cbe424e246bd67ff2ac198c3933554f1416be302afa3720bda81442deeedde60716549d62988d62db4d1272311c8d376cb965e810e27fe23abb70ffb3237e1cba16e895266eb13b3be46d29f3877e0dd09bad6733836320f03c81a4d03e4e1c877f7a21a088140e2674ae740fd067ee0398de3085baf195aa0ae4347b8e6417a739b9f0bde788fd711f51111d2e65a312f84d71ec9ffd8b05cbcd7d7d7af214e17eb57bc09910c75ad7043ce73542a314a35bde04e215c6967ff1d58c429938e999326d9b9b0348f3abf091be66c537fcf81e5dc7044b13af716c7139858cc09ee4f4789c69f2227737c8b96cc3357ed827cfdf22216c191f1da95c4f98a8af0cd5e4e3da5d21d353e733cf5e97f8a408d8668a2bc11d46099843a608c0e9896056ec88e8ae7c1329276b0be287e714418b9c0fba915c9efbac83d15cd5db179e9e93010eaa902399cbed6ba43851fc853938d647d92d3d9f4124c3e3eb3c9ed61ba7e7af99626d1e09e6bb03572fab30f28ccfe6a1af0b8400b90e236584cabdc22f7190fdc0b1328dc20419ffd8a6e760291b6ef0017de27beb750b0b2dc62cec5e21e545e56dcc6c5ec551689f0e35d133a3c4674d8bf10be2d02b7713b6a91fdc6f41edf88c205564e153c1bdb08005df97cfd24d686edeae621554b6721300410933a9b34f84407b6b0dfc127768fd61b298f802b2baf5ecfc717bd116587a29cf6bac8d491904dfcdcae964066a8925a23f29d33ba7292ab41a841f6687ec9cd818bcac25a422789f7851102871343bc20f316b8333fdabf8d11c3395b18b01c5e99a0664aa1dbe3f33bd134698ce301edad7d5288c3bbc038817a38704f1f348dfe8f9e532098b5b730ee050dcf13e05369e8cc1ceffe4c67365199181a5ba1789e7d648624bfcc096bab4189300f6f3e8168deccc55aa07942f0475524676524254228c37a770262cd4b651209888b10656bcc17e8edc02d0b3aa4e5786c16709c6885301b8f32f2564c2477cfdd2df662351f8b5aed589af976d758828f6d3d382a134c78f6683511907ae0c1e22dc7da7f7ed8b123be3ae95cdedcb12e2c979cf552bf05055c06fbd9e433b87d77fb37de670fd8cceb1d3517e7114053a3331c68ea9c208bbacd274f401e7e377c7f9ee5eea654c9b8f63d0a03a11b4915ea18b3edc09ea938f1eda48d71d6a09def004b91daa38863fe547f97b14ac776e9bfd4f0fbaeb5e0f160937b8a10d56bc146861d714ee389a3b248c79cafc5c2b941ea2dbb839cd9f6510d3b52184cb9e48962eb5f09f9e0edd0c89b99caf870501b6ab1f34585ae102e815b8c9e2cba160efbdc66ab795583cfef06ea03b8385fbd22d1e74be8d65a1adbaf90fb6687ef377c20576611b3f6c1e6a07701814ddb72390e37fc6aa6a746531f0f6c648e9e219e6c43564c109d2572a107cc39911380d7cbd495a48ea451f619efe8fc7aba4f6177f0f68e9ea07909e54235631d9f416ffb6e9d7a7f2f79a23d05bb2c7f3bc5eb89177804b1c178b0595cbc5b66eaf19fd3d5132627dd2c9b087441e703525f2d5a4a1598820cb27845631423301baa061a6c543c3952b5655fa729af0b1ecfdbc57ce29ff97904381385aa64f35d8a956ec81fb32931e92d513afe6d4395a5dbfc91442b3179bc9c28c4dacbfe6223bf40a46ebe884a48f20a94898f5571a155105bae07ab212c835f076317b8c41e3fa4e54b0de522cd2ae03f486fabc6684ada9127c0b22f4be8f4f15f460aab8e6e91bfd1082026efa4d5b93d7a2da2778a4e974eade3d72d30d9c4860a160c54483806b27b2655fcf76e452726be1e911f3e13af8aea59d62d04c521dc745f654fe1b8a047b3bad738d7bf4590b793965f305fdc990d0064e4e0fe95fdc3efd91287516e3609194670cc75c902183613b1ef211038b62a73d4134d7212d5efbbc256c6fae143851ac3f36875f1caa9898e2413368352847614267a4e454f866324e26087f83127a36db500611d0046a0a7228aaeb92a9d174df10d5d3733cb6c85f00951a0768b04975564f841bd6b9e6967839a023b36c9a3f725f183a892838336d08cdd525788d17d84ea1a9826be87591fa3e929b74a48638a794752e086497b385831633d3aa9e8c6d2e5674962336f6d9c6ebd17a33019d97f2dbc6a74222a875b0b76eeca98811dffb5cba04a59a54ff41af97085ad1965a4e3d7831f055c15998b6136f52cddf50221f1bf05755e98b5db4c69b299f0fe360d80367b034a83dbdd3fb2eda28fe86f59e5c183e7c5777826502efd857e61ae8302b6b98bcda35a986c860c4bfdacfd1b6c97b654fc9d2ab6dfaebffd24f8ca4b1bb14b74392e3978f6d071f6301879c0452d292d35af0a907df8b01f64e565e18c40a60585a816800af9935264eeb4b7348db5393fdfda49456a8983d287a4b7b87bab08fa7ea7bb606a732638af9ec38b5285a6cdacc05e1da772ad6c7790ba657dc5bb0d16fc51ae055200cc940148a90f91ba65912032c17083526f9c2941a4eb7cac1b41dd9eb004c121da5311cce7d2cc1afbaed3e7c1aea0aba434c18a660ae6cf19cc90ba3ffb91094bc3851ddd5b529881eced621e93ebb066d9200f5401a1e8c5c78b3eebfe51da8e3912ceb12390ccc2799076c15c25a19effbaf5ac85e215b1d1dcab9e47568f341d14aab8930b0e9f37ff0ae9844dd83043f27c58d78d767d3cb13e7f2a5a5a40b0f8f3f01a88459f007d7e97eba3903bc9fed17ad3df44e603bf7cccd7cc5d11bf98e86319a15f6acb605df3a20d30aaf12a37b8c1301e552ec8072a7e2f87aa8bd6fdf0d9879e212084f1bcaa1028f88f6082f83ba6e5eb24fb85cc5fa8d39fcc5cfdf282c9bf6e857c91cb008a00fb157dcbb2ad808ce9e195ebe5682a666114b5bfcc51aca1eb9b4d28e440c5b776197d11f5edac0abcc744bb09c434e88fa4fdd3dfbab7196bf2e8279383e554f61ded2ba98213d2591dcb30923ddcc46cd69a098401f54afa2b05824028d408ee2d11d4c38416b90f953dd66a449800798de35980827397822a2edb607433a4377802321ee64f43137e6462f4a54fecb2836bbd80f63093eb7652cdaa74fc29fbe374b0596cb5a3185af3104f21fc45c9a3398ee4c5cabac675d5bba6a39c464401afddebbe58a66bc59868aa93607c97f83f99907ad9e627c38e046e9d465aef6a14376d8a53dd45a19f68317e76f906d3c1703a815a0898dc93aca2eb8da36eabfe4bb8a486f168e413c9b4d58b88e6b1e5bd5fd8716b7d40eec908a9964c72db05c793d8bf32f4f5f8a5b115a2063b7b2db79f55e4d0b9ab70462163c98c1d206f33baba3a883a8f11d6d2a17e725f32a84d3ee265c356482a0fc72412ecbd62a3b7aa2d83a658ca5b8fe6df04841086be1a4121cdbb0b570da85bfd1f7c2388ed103b1d61d84d1d2140ae6c8d04a8189befaadd9341ac376f83a3faf3bc709523ac08c34d58d883d892dac47164629a4f919ae928da32d5703e6f60047832b1e731c75b2af59050a33f4ff070e039af7cbb196b5e22a8c7e84615a18e1dcc357d9b631dd94461e40d06211421376b3937e8a8860b1e2cb062dc6d8cb19e1cbc1dd997f4ce47cda6afb7e7cef545c6ddd41c22ae2208d03a92d227ecdf960a13f155b71f3474ef0b7151653db8a698002bfa7fdcbe883dd23b68c1658c6a154f933c21e125f405137c15dacea88d2379fbfffc1bad9fe3fff78888f1ad58a3144a49c3d42a945d27f9a54acc0e6d5e9f83099c571dea9735165dfe5115aad317f96c4843537071477691764e8378921c26856025df6baa11c66dd0c72f1d17530218f04b4754b4779c45267b7c8f2ce65cd87a8a4b305bee0756391b39b0aad907f4e29f56aadc0cc2565f14647e3818d8fa464581abe8843020379efe6c5db4200d083a91de18524edca3567111ed45e650beb6aca22fb3c7e2f4198ec0c14691d01c3a7bcee5a3b24a396fb5da1b038d7b91e2c6c1accba74db336f6a95d679ef8fa5d00ab40ff5cee4da6a00c41c32b98aca8b219ba5b1cc487261fd8e0537f5df30315d2ea923ddc4b36b19b00bc99466d71a56a37f029425e851e2be7184f1c866facb6b3043b901e13595254b14b56beb22c88abae15c79d8186df7696f783768d4564c406ed10d2712b4e2f56ea8293ab6b1cffc33c7d9a3ed8783a7447858fae28be2f38a7b4536ba5ec0fe0ad2ea99a26c90dda7482eb6d9ce7c09a8816e115b8c0741bfdbd811625b2aece8916b0237e15bf4099889364b788ac05d822226ecb6b44ff856a915dfc2f8cad3b6620a6902c24428eb4b992d47f7ada7cbbfbf57b6d85d39c9e0cd1f38b0dd2e2705d5fafc9fad20c5889c0cba672bd945140eb50ecb2992383c59a6ff01f6faaa3cae18a11c91615a3caf4be5eff7be57681f38919b220705c1ea6b9336fd79abb4e1482af7c3a077390f0464d8422393a3e441d482866e40f4f1c1e8ee2ca8166c29953eba48df3f53379f990256ea306cd698197cd263b3da5527c90a7ba25aab32bb5c6361db98f4e37661f33108bd014d339b422738f396b2c6a7da8d85d1996b38616267512f6b21bf99f48b14c92d3f35c8fe379d55321336efc18141e464011dec34d5cd5cbc27e9f01a8eab385431269bc2df25b5fa72d1b2fc05e1a4c7e94485e44652b86e8bb484b8b8f814d6c658457e64612a601384382b83d9f4c7fd7331c6060154f7942844e4c8a7f2fc3183b17cd47353569f7b1f381f423605c216e8b976467a35430facc1dec5a44bfdda2888392c37826fd33068859b3b8593f4ecdae78c791fe44166194e4c31ce0ff9ecc7e540aa6bd49eea9977586a6cfcc916e69bca1f359cdb2a49f87221be18946dcc8b601a9f47f61ef16c8494478e7677a713382b085484a2c48cae6eeb6a7903873d053c0b59b58c55b6a7878d82c59a54da779e5298fff451e550900ea7439d60110fd2e2bdf22dce5fbfc15d92f816ec154e3f44640fdfcc143fbbc6b73d0039ef27d0ca8c584758c838a211792235ba303162464741be9493922a855b607b23b2b0099e9299d8906c726edf9d4fdf2b45b31e970daeeb4e22a50e37094889a6e890781bbacc668b50b97eba5a4537df6456e6221704b57857f23b1e76ff33d6edf51b8606082fcc0da3927e4d40b56036ce1a7c4421c2e4c49c26975e69849935aa687acb7013f9e6d88bc9913c603411be17c42b361aa19093435710f3fee9c26a5886ae74c60cd1f856f70900cd375fbef401960425a8f39d0252ab12b401ee3bb49ab6659b0bd4cce54c7a173cd46f6e47947b1014f2ad7b9825c4f676c2feb1096ffcd2cebc042d98d16c10bc081cbc3ee747ab8362cfad044f193f5cd0a6fc812da058beafd1fcf34d741eb2620aee2e33e76ba19e6566abeed1651427d830ac9ee40d0ee4c8bd8b944f6b5b0367e1feab974d2456acb9083360acc8af54a0153db222a4ef1c735b7d048a2fa7eedcf2ae60218de4ceb66f4a63d410fa4dee9bbbed48e005730ed40a96cfb87be99aa9875a89cc5ca73b35018a6900936108022cfddbd4f168cc7440726cd02dbd5cd18c502dde907383876a63d572799cf854eb60ad8c3d7a634a806cf87d04e1d987e37dcbe4ad275424627614e5eee608efd2d2c5dbff95abae1f6840e612dccf0c1c62df7a8b90f2676b2b82866e3c32bee61db898e31f80c12c36a3db4b1b1b825ce672a007fbae9a1f6e1dcebac499b53f5675d17586b843f8792a701b656a472945e71dea651d4222f2d0b6f93471bffad6528cec0d758ee39cda93c7ba37eb0609addb630575126855447ec7a3e5f3fee579ce25864ed35235248dfa8d142feb997032e136ab2c36fb3fb8f3c7c0388221eab19a16e387cdf5f2be17652b5179580d3fb7df1d0e484c8219acb81b0bc01fa90a47435fff17aebf2b3c8e5a860176c86a238ff31ca021e72fa79cbb6c1c7c90f95962d4096c733686bcddf55f2e46c3069103610e18135f6833c2e902fc0841281bd0e15bd9200d391d241d676b9c2b52204d9faf80e47d6e33c50eb84f2dccd8a72cf5c4cfce4916456764da586cfb4057a48027f725dcc342f38d430f0e8cc6b52caaf0244421ee6ba066b2955d482507e0ee8814984ab8781d1a11db240e2397b216d898a8b90d422926150670d4c35829e29a4e29eeffa369e6e20ff7c525cfed539b4a9c982610fe99b821bbb8ceb5abc3bc704002a2292154ef2454a9d660d7956b965598ff9641bed5c20de58b7d5837b34ebc0e63897cd8c580717a1f1901a1ebb9b86696e9f3bc55e085ec5d75d1f4090a1ad19f94984487808feaa5a636c2b22524f217b8ba94479ededafba9e2542a54fa230b6b6cae51e2c0a4cedc1a72a14ba5e6351274326f337c9318facda5f4e036bc390af6f3f9a76949dae64edd25e30639d494d1c7ae2e39f41d375227c78e3d62afa0bbe8c5e16606bcaac43fb102040168c257779f51ead86501feb28e60ca2b7a1e367d743ada2b83cf5243b96cd1d0dd279ed84cc5bcfa931c07fbae9f6b18b67412f79647900d822b1d61a18252bbcec55f331fb86aeeea88c77611c97eb3204621692422eba686aa7eeaff847101c892f479b288337f8611c49465a82b30f9953ae3f8f16e80ae1241451e55f34d9f887a1c990899bdc634c54d2b4011934be8b7ef222676e739e21c0c280b997e288764d7b91760b6e167b5eced2566745df160a2d535a0f85d20579f53ee5990949d310ca13bb6ccb844b5cce57ec5262c4ef2fc2b1e6ace4ab3b5f5bf07e8254969d65e45e82d919e18b0ab021435ca1f79ef0746e392b3ad32fff47132af322dd7a96bb0c8f6cff4ff58288c8db5446b369e753c63bf45babcfb45e1d71cfa1bb423e5a28f5efdfacd94a55a845b811ba31e1e9abfce82d8ecfb43cf4da5fa4d02bd9fdc9792e99a16f26453fec48a5a523763f94e0e58a3f1835ad58e44c3ae73f5954c92b75956f4b6e390dc703de327fa0d2d9679fffb8c805e1fd870fbbc2f562b2d136da15504bbec6928bc9ffd54e6d8968eb25d5237288a8c60015a6401df336557227ad74c9f6031a01e2576d47ffbc8b5081fcc8c64447e6544f99e12015187725c95ce3f6a5ff66d17dd600002d4191c72fb668566221bd7ae2005f69d58b7d7b4da835c96c6c0b3317b55f33370ad7d2edd68b73ab9324de2718cc95773f7ac2e99cd37d47c8814deffd915a02b6017d880a55c3ddf24d19be9ed5ff55efc9ce1038addd81b2b70356d1bb424a99102235601a47c22ac9a4726d4c0fb7e100d4c5b0c50d1aa04ce747e19edb34d2110caf3994c3571c28a20058a357e524a417ed21cc55c8a8ce3c0fa2d11eecb3468b17d84326198b7cd0797047a220a73b5a745625cb95f9bdb09821c694cc91a4d3ed1b080dfba44b6bec483b3aa6d742725271b130e489e221c422b56ee7911d07598183b403a626d1d2fb916161df5a4712f315b36142832c0e73d43d2720ab657629204d0014681fc4a90b473ec2d2b158730927478b34887f15a840d312cc454374d6412a34fc225fe3e47d37879445cfb062c7aeadc39f3482a09a64189aec9b1ebf405d275079234647e207fe049fcc70aeee7522c9f61ddb2bcc7fcc7ef903a1af796038300b670b8dd9f3e530bad1d1fd4980f105aa29eb8cd8f56211773cdae44d104654285a3b18c8f3cf8cc6924cd81e7e0b40235c9d86ba0c9394e34031f6b4bc6b96126ccb19fc1334945c1a07c23affefdd07dfe334c97615c29d2191cfb404bbc3394935c0b340d7864cca5eb559e0cb8d1d8fe72fc46c0754c59fc1ce6a926569e109c97e5b1ea11d6dbb150cb84e0a97808ab6aa1a095cd3b0adc9fd7ffe41e531fe288c9baf6deb86c30c68d4db3349cd0aefa40885a62141f1380ff09dffbb1636206a45b6173fa5ec7c71b0d59590b5cce139b219a2f684c7240cd460b82b2a24ad921217725d8e230878d792b76de31ed2547294663c1553c1c4ed2963721bd4351d4c8ab19bbbcfe58310029774351da2bb24e6c2871c478a75de60502fbd9cd3f38e7be84148cf0ff18536693ab2a656f4dc333256e061a696b26c75a0cd2f08f486bf58182809982dea7d95d498abe25ba0aa72b96299f4da2015a03c758800254e1f65a03aea1fce7f6e3fe2a643a4faba4936178c683ae23987ffded7dcca55579266821bf7382568ecfb226594694e2baf3a1574b2fdb81de8ea3da9fa15c111dc194709626897bdbe94d49dfe8154e5aef3f8c9207af346c281425fddd07a70d7be9c8fb8e7382655a6346f9a3c7957036d11e60fb9d67b60722a55ae901a2e79687164b433e57c02b6a0b48d544b64e03dde9158e3eac746b28cbfac58f2ee910252b50c310f29ebc562948f3405cc7d2d209fa0f4692b405a14376f701fedf6ab93b063a0bcce12b844674ce8cfd14ca52d55e72e50a526b751abe9261a9bc6573ef3d618d5ef0836656db297fa0886369e276985fd38e8a67706151fa07529e564857bac26bc381d4ae3f30e900c824e8bb4874b152ed5aca2ae2501269eaf16cd7adfb899663d91a28b50a8d1df8e6e4ec2fbc2e20e88d855da6ea089af6f950848f6bc01e456e0fc21fd6231de6f26bbc91e90b3c3db45661645f4479bddffa2c01ce26c058d9b71f733e450ca3f7b018265bb79cc1853fa5b97289e434b4dd2b5b3f76f338bd598705a3ed285360a5a1cc3606516a11df00c7c0ec0c8643e5460934863f9318c744e01356e9c664398cd7088d45d95aa866f77c4408120cae0cb1e62f4ec5d81fe206524cd5692ca4b86dabe2d3aeb6c60ad8cf264aea41cb278bb55ccbb96a6cdab63698048b202620a40b39467a1a2a98cfe2bdc87246ae292819f477b95a9035377427acde3fa50bbe0197a03c84a18af007b704763e2a4b7f142211fb69d77571e00659f594dc3dba43fc4c85aff27931103aca357d13f136da3ecabe892cd37af42e7b48aea8d840b497b6204e26b49b152016971a5af2a1734762bb13832c3605e0a27ef1745c8352700c12f918808755ba5b3f06cfd293b67db9ada92e7faca9097191e82aed2c3d34fe138ae8980ecceba6a3dc89cc7f8c91720be6d9434b10dfe4a70306959cd9819ebfdab93b24003a345330a4cde55b740776bea194f9deb41c01ffb48991509cb80c8118f45f19b5e502734b6bae051cf6632fc3a5cbd0d6ca601e94f0e517f0be8cce58ab972abbc132a930016e4f10201c48a665d09e5695f4ee4a34b67b1130c97384d47d4d00441b0ab3dc84d6ccd1b946d9cb970fca10a6168a492e1d12574c751eec23621e6a3c53e347e78f8512471060f38eff3980812e06f4aa67a9eba7c5e768c58aefc883904852c1e5ec3f15f80d44837d37af52db7a74fc3fd5d190873f394628e9b35eac36ee3358e7417aa81fb4ace5b35ebb0bfc671252916b2a857b864e034dc379e26fa09e46d058d7a2ff7a2222b5f610685f2c4eb6d6ea7dd566278eb7c0536dbed297f3b55520500f014cd24ec4117c233f7909b695afbcc9d24a1dbdab001592b80e5edd02d533982f1b4acec64dc77c95f172ef00cdafbe30b5d88b9c3ed0b13fb79cc15d7d3f76154df840b6caffa01f30efbb35a1a41406851a83a4e40b2c42ff434ab38b0921f2b6d23839a94b29aebe48849b1d6f049bfc70246d64ff911c2e5c29bb6902787bab3d6cdf6c60c236c94c7da88268f2969d5e63a13aa17fd1d448ccf7870af7e59ddc89c3664a7c64cdb525b7b0c2883dd8ee636210a5e7e5048f4ff3c75d1afe6088f56c13e957e510d15e6254ce6323e06c10403d380d490aadcde668c4947d3a747184f0ae0fc153bf9a56d588ea82b26b1dff2cf4a0168df28dc058ea7e755c661bde5761f9fbed2c567769458607fbee0021c9b37f55b6c207f10176b77a59f5e1a6da8cc38b7005f27f05f61ff91160cf50c4c2df28f63ed6871bd3d49bae2b040c9be6188d247a57d685cf822fcbc7b251958eca1386ec8061c04d791595ad44a0a094fa13b43e21869b399668d88457ab73be49e90c23acff65ce18a780efa73baec85ad9b99399fe431a07d17263f497ac106dbbdfb0c7e76ff64ae77f777d2d698c217394f58f80057f1ff530bd55bd3e2c367b42318fb521cc7dcafd649e1449818b24a14ca996d1518295b8492a91bdc384184684607a3a987c93eb2420fce1a0713df7eb75d32115d12ea9c7bcac8254d5a13b50c602b1a25e00aacfe5426f696fc2f4b2325757938e8560adfbcdf19237d78799fece6dcf3584739360f4d093f95b48e3f25cf701cc0e9c2d54e5dcf2edeba439287e26029157be658857195aea4661a0125c15fa42d95aeb7e54cd3db2f3f71819124114b083b6e6339e9ac9fc5affdcd10dfc56fc4849a2577905ff033632758083025f4005f8a60f4c5f165e3a1f17b4c9044c02d372c591d32ca74801b54498c3d33f915971c6130dcb23fc0ea9a76853bd33f1d63bced890109a53b9cfc8f40647ca3c9babdd077c0a65fb27e1d4c61ad1de81b8aac097af18bfc553ef65b038446779949fa291049c07cf69cd4a86a76823d08e0281b72ba335343a6b5dc26d994b3f1edce4f6283f2c74e690c4c7fc211b4646879a75e93b508b8926f87d913bd112cbfb4de085c9418d83b6c601ae16a16bcb6ccd3572d909e09422ba53f51ed122b5851e2ba06834aed2ba5c27e87c5b2996ab5262f25182a3ce439ea3b2b63b8ac7803042a70301142b7d78d01c8bb1b4856b117da29d250879e68b6b22011603977e5fd6a19b2ed1adfccd31a0fa9ab4368fef7a821b69565eb6458f36895dcb10003d4c21a49fa8ff04d33b831affaac80ba0df3be76b0925732ce4bf24a11bafe7089687033b728398e3886f2ea40f1c159fa27340ca1033b6316c874d31d7313637e6d2c0098e9ec3fade52edd8a8a0c198ea4fabb18b7d551a05a37eab6ffd0cf922d8c3e19ec5b76ddb55769aa23a0c29845e7feaa80f052b45162e7dc92b2e4de041a0203450df99572a0a32cfc1492b0de75cd9eb0404beb5f3854ca64047fff5a64f6292302059cb5e863be04a14c52e83590449337688ee284577e874f66dd6e0c56e4d108f8f94973383ad16d46b49f676ee47e92c90e8cb8f1070a90b365f87f5b4904234fd507dd285f47894a636023e2c29773bc07a2e4a3ee1e6f54f166f54b5b69792b1838e4d03b161aa634ddc36cb7c7d16d31a18196ebddb4d0994559455aaa8e289c2e4c95d276c3ded6d7cd8d3d768bec3a3c6e5f8d4f2de3cb6ae932e8adf446e53b52c04d7fcfaaf14e958d2dc604c7321aec5e32a1d81e7e1238a628328f037eeb5aa3674170ac6e35aaea8be0ef34001e0ae920f09554aed692685061fde24ca7704efac96e15dca70aa38c67d3b45e2a2e2ae017bf5dc3c2c051bb8e7ce6fc1e5209d5dab0e86f764e92b94ef3765c7f6b1504d1af014ebfe49a0fdcf43329a17a21756e7355359cc2dc27e95675443dc98fc835bc65663d68f0f6480a554a6f7d0434d74e17113e0175619250fc7d41dc5043443b98109187ceec5913f8616664c9eb62bca30111780de7f36ae8222c0c394a0bb8de77b6399c6f0641d97324a592d19e40ac34f3ac2a43ece5abd798767436a876edd51c9b8bbacaa8d0fcb5742659a19a3bbff3a586976a75af8a72b1766828e24f90033cbdd3796f46d0e961f0a1a583bdb3efa2e72d0c9a1dace116f453513550f86be03c00b914ce3fdba82665f84f70e345687aab4084d2b2e921f292d58d05a5332de2c37cd0924d546627b462ae7c377fe1974cfdbd6d704ea4dffb92f6fdeb40a1b7e73d0535a790d2de9c84971c6d7fca99bdfcc7a1a0e7bb652172f4de7c11a7505d482aa56a773535f2bf576706b829d226025bc271cc3b5fd518dcb85b6a43de6a5682056030f11dd26300e34ece18ff28cf2b5c2bb06e8327513b8cf7d48e13a85b5dd3324317f1aae71f7c182804c7e62b2ffbad9c13ef8a10875091beaa95883ff77fedbd3cc4bbf3a8fe98c106be10a5fb7fc84f327c0d46e813cf4a51da90eb4877f7c5ea752d9172779ca57c22fbb93ccd3f0baad2f116aead0ed8ca71892a14d1a9f61efed1c65f034be4587b46cbac2b81bd2fbbff6785360f6561e5b31d316924e6af3bbc0e6d9db3bc7e12c46593f3029b4a29784868b5acca037500fbb1f0fa6fb9da0397efbf9beb92720b4fabfb783a6724c462bbb7a9b60383e1bbff5e6254a6d8c14fea5e52e45ac5c51fd67dbb15bd92b5bdddc87573fe884e2b9575797a66ac854722b14361e8776a5072bd9a694424fbfb84622a4ef66a57926079b97d3609b39d7f19330ec8efd06040e4d482b403bb3db3aee806fc6415c196cc20c3658b75b5f76f02fba14eb6e844dd5ca43c3ebd82aae62474ac0fccbc74320e203efc3595aa285722d14b9b1a9b94e1493014f19f7b3803c520ab245e33b17f71994d81874fcba2651d1c94df9f7aafd025ea4bd012365ff651a1229d711ec49c7a70974cf47bdf6bb54531b46c903cecff86313167de129d8c5950855504226c78bcf98d2357265979c4f28e6ba9256906470413e96ef51730853ad89b39dac7ade99a8513cd3048cd1629e408de8c54b8d783c272c643b7ee1f1278b569d41b20870f35bfb008e863fb67e96b591839562d63402a4e3dc7425c4c9a7273c2543d601204e2b8c141214da6ddbaf8643bd7548007e58c674bc00f10ea6fc6685dd0709c06179e5175529d9bb193c40c0104fae65f078cc9f54bb06092fe8728ec42e8863526616a6d1cd5e85978771de4c84c53c131d13c59cb81c618fcd6150b99211be4d91fc33b6ea1e10b5ba87874492538fc7658bef0082faa3fd8b9f1e15ea8f3668e8fec7c314dd0c0e3b394070e6737087fe82671baaf7dea51b706adf08950eb92ac109ec27582b9a834594e4657d2cd5ac915f6f610c9d0868cdf2661962a389c4a8308a683ce3567cb8696a3ded0df2161e32017e446c0d05425d8ee9af0f4f1897064e76910ef38f58551c211592f5b26a532290eba6ec158de42a9596c6c43046fcb483522a8e66ef483544af41fb1c2ff9d16cbe336830ca8351840be4f95bf6f34aef08566f6c520099cf20c2e8ea464c058b6a92039ffdcc3264e6152552b8bfabfc2f8e1b742a0907338766baa7ebfc9dd6e2f527f699256c9fb5a931593b15bf7de06d7481ef034f36b525a08fae50bcfbe6520c45895d76c9eb3ee077eb60e77dac764b802b3b443ca615f95ae56605d5dec6d9fd2f41c5a72e0cd8af5472465b70d93f055541ad702c5d6737b4216cf479b0539dffc8d9055d2942ccf146edc7c7451389516a4e1182a7e1b0d18860443779c83e297c73b430ce5c63e940e12d35f5a6a3af30e0647ec937cc172622c73bd78f03c696688d0f1116452dbf9e5be7c3415ad8e071be91673033f9710993d83b4b72c21581ee9ff960b463ce6def186069c7a8c78336a214bacfa5c2b9011350adaede40625047227edd45db54c05dca3a370842fd011142e68ec4a0814f191ef7309a884520c52faba47312a0c8334016d9b24601e82ff0c91622778941d635f511c948d3289a95b60492ece2856a5e8f3f6f5a2076717987ef0205277374229b83f10eae66070b5087dd59abf69989cd6fd4e4e9d4881c5eee6d0944af0656706328b9ab52c3aec07864fd96cec4dac2498e25d68d39d48b9d14320b0773da2ea0e22f39119296a71ab55974622f16842bf99f7595fda8d8daba3f724e16bfb00dbc9ddc347cf49fcdcc030a07eeb9aef873266ae5b6ce01bf6e896d52e27283ada80cfef75c043e2039ac7d12f656a449556d92dc8a0a758acd57f7b16fed1d213f89b4f9503421754f4fa3105363e1f419fbbb5e37f54f3f73519f609a0a0a28cedf8481cc86d7fa33de95c552ea6777bdcadd2409cf211eeb6cd0cc7b1cd2df633f81de04519a6885868b10322d748c8a4a791401acfed563edd3b14317489820e2669320cee2572bd5b90da028615f64419ffcad703f25a0b5038880bc4232ca6236ae5ab9144f03a7eb2ccfad26fcfd76652b7c62228f543b745a858f53163eea15f4c832e7ecf44879d57dbe2d22739021664305606f04577b79e494da4e26bbd040be8ba55b746cc8c62f16d55bef266491931d75ba60b0c9698336d6a22863d30b1228a177af0cc7e319eb3ccdc226edd1361233df8c001bc58f95e4a3bc0bf7544929fc8571decfa1ed0ad06754049736de086afa734a591dc71d9f1f78ecadf54d8197f19a16378052e6bcd26a2c6aae5d92321f51c3df1fee9ad12707341847e729823497d05f454732aa959e7934a91c813090a0be01d005656d278c992864a25a7b7c870e9c0e2c77a359e436d8ecfb3b8c063a89624f19e00926759943d51796ce5a50fb1f73fc53c3ef5b47e802378f6e3675399fc7b3c23963b1180c9f0de44df4ca2b886b6dec7dbca69cccab89e103caf46b215c118b7082f10e5871cb173c84460676941c772186fc33197e38dbcedcb217fc8842747e3ed04a4f4846ff149b687d2d732987cb294c16668ff14b946ea0bee3403734056f4ab13e282e8d12f06183b22c8697088037683fde2771140b70a048c1ba5d673e507a7c1ee6fa106cacdde87399ed17ad3d8aa9c54d83ef8da48804f5d39b64aa25f1fb03758260728b057ea905e37ff769e8a2cd054a021e6e08f468f6acc038145805de6ed76aef0a42ba762129e98c0b3e410178881454ec708fc239a4c9744b9a3f6c80e07780fbf439c769db8da471cebc41345812f70014a4d8479a9bbf8c5659c2d4e127c784fb009e7471b0f56a9c6017fec4647606c186af70452910c8e96d506622aa2adbf42e1c1e33394ea9ba12f3eab176ffaeb1c9c0190857ffdb6b2023d130115b438035bb7401f456bf1a45d892b5674ea304b4ad94461258ee09bd396ea13e03499a3b7f6d010cc8319e4a2d0b81cd48c61cf32c12cd5f65e3f742ad640d7812954788e5cf69cd223fabd65ca79a1ab508052042f17c710d17741f53e0622410592d0841ce748a8f7d266a582cc85690ac46f0d127ce1b75cdd303ef1af0d3b8c62d9c31c0988a012bee76080f547474209c46b8968a02b6d5173c91a2d8090b3a3da7d97c0c69d2e368c78341d31b72829002e7d078f3029054d18540a61792ca3cdea65cc43bd3fe517885fd20cc50c1a879c13f6ca0ce2ed4e10f920e93999ed570b9621eb7a08ac329ccf516cea6efe4c362d67d18d689af4b2ac90bbb26ebdad98b1d384af1f70dd6aa0124dd7e381f0987d265619bf16c45797f96a4d54aad7d0d544ccc00024eb5c062c65c793c0e5d0883ad8c472de8c4e23ff7f65b395c34e84132fa0cc90dbbc144001e5e9b72075bcad59f9c584262d42637fd684fedb4ebc0fa93de1e497bc07e1864a55f3e355a0e3210838799838aa67563bcab9826fd9a075ed0c2bb9afeb565dc3bb1a5a65ad6185b6845972f7103f14f68ab2597216813ac9231d104256263edef38cfc46fdb400d842113d16f64a8588b18e4403fdbc80db439cba4ae0af80c26a0cae2e377b6505a0ababb04a0f43e72a3917fa85ef1984eda2b145bf003466abd96bbc48ce39e3f2d32ec424a6f23369a04742194122d00d4cf366cda39c75881a9b259399f33907557fd60495a1f8da20d0bfc4df02c88186aaebb24a8c111c4f3d94be29218366bf2c069a960c862f2b3fed05f78f0d57beed99a2a359be2ffc801c01e8ea19d0be993bb47e485340b5b3baefd0958a1d51375163332246385f021bb4e94211e40f34e5479aed9b5b490ad1ae6cf6abf1bdbbe666772868f6306a0f75325b28abeaa1db38e02106714ba56677c90a1d3a25153335d8b01059f679c8c96ae68ea008085547d707c3e22a3774bf763d49038ee6ea252888d2e4910cfb4121d23f163f3490612694fbda00f1edc4d8e9ce21d97d23d323c086e293d47402d682a573836a2db6b040765c7ff8dc77d1ffaa6b327aafa4e03929454b3499fa4a7ea95648c567c9bcb4eb7d0f49536bc3629277cd669e33bf2ea46a23b12eec7a96bcf6e1164312dfb9c370e3e623a39f9199159f4bd2ef41cb88e4d9f962958afff33c979ace5df2b7c88fd2a88a8806aafbe16017a9e7294d31715e1ef5d897b24ba50bc66b2bc0cdd170720df74837cc3f191629c5586901e758973946316c74ee2a70c6fda83a35039b216ca41906c1b88696b6459d63d8a8ca5d9e253d89ad06ef665614821a3735a037b56c7c34b4038649694573d3f25106c41c4b6a480a08159504003f2287af074726caa0a97293181344b9bce968b50b29f75101e70df3d07be4083f3d6aa982eef7181b72f6a67d6af9d2007945612a3551983bd9041d305e6f94b8fce33f56ab8c9dcd8b5982341779bf276e1482be96164256152a05388e7cc5453064f2fb186fbd15f93d2f8563ca8057b2f2b26484204342a2206a6def4784606d2c977f7efe423c146e5e4f52b472961a9ff4e37ec8c412052b89c2997dcf0806c0c9021475303820a0cd630977d265e1042f59b6ff195dbf3eaf9eb549af92037c5882b1fb829304c5577b9618f7288a3b74a81d25555849b800d84bc465d4ff1748cd92b7eaea94bd7687fe4ee55d37d5332e68e260080a0d9f3ef4e76b51ecb3d60b5b01875dfaede883ce80f40ac763c04f172c1e9fba3207e918073945ad927e655d28a83a394e6c045f54362fe4b2a815b9fbcb3e452fbfe7d5e36975e81c5604a84ad8f5104d95601f43af7107fcce04fa74c5ed014b4debd2548700cb80624a0969b0bc365a5c0b84b5e90c50440a247c722190e84b4bc09e1aba5836d49b9f4179d32b0f717550df882b3bee88cd94d46c087f94e7a05b70a63ed6d115c6bd457911aa522f0ea1ef2112ff0e4077819ba5f8330f1b584433aa63375b6af007a8ce6f915e8d5913b80b8aec55d738b3f14b67f978f743c4ba5abc99c381cd5f867ed3d9ceb4f5ed09a393ee6bf3571c0fe5c1e6a42d591be4549a9fa22b678ad88c295c6e732c33f3d7b703200d64623d043ccf131e8737cbc0ae42ed3c8bc62cad39112cfa349bf68ad4f037d2113ed42cb8552633783af245e5e31a5548d1cb6852bd760341dd74c83cf3ab0af4a33b8ec35ed04ea06d6ca10906dac0520f73f3ff6481bee06a01aba1c6c36bb89a7ca2003c208f078c5445fd0b6e4193f4799ad88af7f8c2e137149dc30f80178ba120d0e058c6706b6506e2f6005e29b7ffa88e42f9b423cb1de3e72c901979ed3af8b55654fcf0275f4a2acdd1850a12dd16fc24d2586c12caf13ca67adca3b299eec119a9806ffd84d4b71aa2e3c8a7e672a5a4985510f0b0e03b5ca8c484e44791878eb59bad27d4c8733048e6d82dafe679206167a79153e1b2659cc72b989f9cbd2f45ab1735c66bacfa72ffa1bfe349c9c01e9cb01a8438b656be05a050abb0b3aadaf49c6d548421a06c621675d513e8e5e144fa3c14c27d63f1f9de8c8d77fdc4c62b457d3c65d894b3d1c7385ac8aa0e8be43fe23cd6d25b56820857372aedab637ae36f0cc6f26e9e914759d186fcd9ccd08b707cb1612f9b4c8751aa0b6324dc00ad2c66ecfe9eafb1de99a38322a50054dd15c7b88bc01778d4241e6832de4207091a594ff63eb911b485a4e83ad0eaf20bc39ca96ee0c0abcc16bff3af7760f9ae5faf1603ae31d674e06c702dc2561a3d29ff5737bde331fd63a708885a5f48aecb15c88cdd3240ba14c945613c7701f20e68cd15b19a5317fcb71ee19256a57d49f8dc06c3d39b0df9118d3356b077bb2f58875daad8759ba03e66eb106f9a2f41f7b61c65259c237ef1dce5075af4f59a457ec77e863fecee713d107c03c81f84dfb25f0f581e0da76f5f3739c3dfe80368d3bfc85e48424c4ab3d7af34b76255837b3acc0f96344deee270274643d94f6d61db5a0791e43d62952c3aedc3e9f383c9871be09a985e93d31c3282070a00faaf1f7d5655a386006510f7aa51a170675b5aaf49316e366056e78e241c2813b26ffc4f8672a1c0c76d19cecf3f27e8b202c538d9665297587f57c55be43617420ac1cd4f89aa7faae8d96e72389b9590821f96bdf9b7bfd3314220ad1af2a37a98473f648f1f8c166b28339ab4d8fe9b51fe504235ab95d8bd47dc5792d665b5807ff21f1773a3792796c73cb9b54a81c410d2ff1f91c00bcad92e5a13241d9b020c5664a0b31d85512ab82cdd410a19381dc6fad52b9ecd49e8b8b8472ba17d69ee183caf1d22a08f7b3f8ff23642f2c6c43f93f74733cac493348f5ee9975ec307becea74a814da6bea9612e3598abd35708603c678864832e68de5d6ff399c9e6620e75eec59fbac6ed1e6b450c7e39db2338044987e7d82d55e0cd941ccaba51a36831f212c3b7724c456af2f9d06e261a80d96bac4adc1024b8aa63d32c8162238203ae739e27c60f4c7900661a45e79d10106169156648fb0476271156031ba832b3af4f13c46187405f855377517dfed4b1d32ec69a0efad90fbb0e5ada28488e8dea32d6ababba8b74e2b936e8236fba90b27cd29dfc9acbc8a88ef9561bed230db24d92c9671070f76a81b77021eb448591ce3f8318264ebe480a303e127899489d8b6c899ad5cfdb19ef011a330e65b5e6aeb5eb4cfab8e5e28c82f87936fd20b5adf5b7a0a0d0f67570db1794f26aa09414337e3f4d10725990db5cf7885f5205927c25df75b28a97e9724fd6c4f41810a44db0662b6494211edb2825d9f930d76cfccbbe17bbe4b3ee78e36d7a3289a565bfaa4a4c0d8f53de5ba9edce0b379716ae2107c784874cf3701f8c8124e88b5f7fdb57c5560e11a6493aba9e912a494ca6d953ee935a73930731eb59b18f7fb5732b8e1412384afd1943c0fe85f1ccc5189b17687ef15ec593bba40fb61132b250e8a2d3626278d52400c6115d6b54646247f71b4a7f9cca3b084e04fbf291f091c8dc42a3badf9f5f909eb85b6e4cc61376d75e1974d08b91d9cb7e9604c134700b2632125f582c87ecdf1cf049517a87773a58961ce68cde5fe43947b7a76604dad353f591d6be77ca1828a7b31b86aad8024c1a5d54c0e36fcba9534f48ffa13cc5ab0a7b6ddb65e8570dc709c10ddcd28a437fccc8206d3fab0ec54b80068524427f36de9458ae09f68f4200786c96269f2a018c41eb129171b65a504dec960d4ebb0bb9c9f022507b5545223339532e0333cd421467dae6205d4da5d3ea88f955b7a6e7dd332b4d64e5ddd7f645e5cefa0ae17d675f74d70b224fe9216de36c77cc2898d78831b55ea31ca0a1bd84672fd587c1eeb1c29790b1bee2e2a0e1c528d5f14cec1f37ccb14cdcd11f3321e0a07b3dd69f11e6aa91382f6d62fc5b94a6ad44094ca4c80617e81105e214cea5fd2b58b57b658293683c8c8832743f8e287899c0cfb468ea5193b9d6c1962896702641700f1f74393508ebe32a95783d9b53f0fe6dbad13e481637a2321fc7b2bbc729cc7d9338ca39ecfc737c473a614f4d6d826466ca586bb1709b8a74bc4dc3b9a64dcceb893701ef70420bda66968c6f344e53d84d8a894b489cc51366142dc9aad82a4db3b48b58bf6313d7a91395b30cb0b875b455e87febcaa1cf6d01de9ac14556ea491d7bafa0a52f409e42543734208501e3a726765ba82be2ccc38c0c33174e7fc057f2fbbcc8c6677432c332508a9e594f58e8e2b4c504d73d257deb7073769fc0f98c1e045915cd5284bf82462d8f76f653202151e530d33a7387e9fb3842d5ac78282f4b747a2617aaa1b86b4d34f150c755402b9e8fa1e520ea7d31ca722e14669c38ddda2ea9c4e5617af149e3ef867a5900e8be8784e0a4be3b7721de01fa6779ef4cbb615b88b70730e19e0c0d3a38b50a8a0a1734b17b82dafb0db664993cffd62987c000edbe17143efe6ce01091048ab2b1af9952890aa2c00af34673a8a0c047ed0a80558e3557bfcc87e6a78261533e71e1c3350a68b80815b9855fb798308a7db8b4c3c2fa42b7c1914b29cd957b67800c43ab1f948fd6f8640e63b000a8d15513fbf9350f4bd4f20bd3fddb632d7bb5ad7e7ee4a6d8bd3fd9a515b7439d02cb691f58963e83928cac0b2750283de89af3eb0a38db96799e875a8e437a145fc1535b13b7a066fda2f730e531ac1ee812335c20847c8ec9cd49c6129d7edea088d4e9feacfe1bf2d6e1de2ca253b2b8a89163595e680d2ce9048c46ab6f2c920790864d551560a23f3d5c71630049ff4f9ee801a3c03dc1305d5f282316bf80e78f560394fceb2f59ebce337cd39da090aa71002461b7f149297f14b9948beffd2ab09c4c845cdf2676519ad4086d1dfcb9c5470327f3cf19cbd52ef06348bb19ad86a8f6f09a4756f2a0b55c2479c5dba5e7fd94c76257b2b0a735a1746df1051e3b17fe0468480e7de7178ca7f6e1055de451578040a260e34af6ddee526f82e6e18581d3efdc76f437012a2f299c332c4d5532eac3a152168785d60c2ee04ce6163c25257b11adfeb871245774e63e1a097e4a5e1f6db2a7cd89ed7b929514dcbbaea96a28020d9bd7153ab351263bdfabea25de10c4e376aa5619c310c17d47cd2fae5ae41eb5fdcafdb8f98b8c679e1f6cdb3ab73ecf8985a46fa48a2f8fb35cba2db57865bc5d36655af99dc45db2de8733334ffa2b21a39b1196d3cda4108b9c5cbe23e31194fdf9e67fcfc9a71824814e6ec836f44ee73665a585e0d9f842dcea0871e53be616d27b37a40ce945906c653c57d01fc591f69f7e8abd4fa9665a92fee7aabfe79cc31fe33866ce9a83faa4f4b394f50fd9fafd8e56a9520da763c10b24babe18075a573d3ad063326983b580209cea255039c9ec3a4f286ed4f2626636fb63a9138a6b21e9fd02876669c1aeabd105ad697b42c3b9a2a58bef325e1f21e092e30d71f51b89f7b18fd4aec0422c5e4206d10777279413fea163e55dee0d44f3beca4430e703d8ddeae9d3da4ff3d03c66adaaf51567072d8d630c7b2febce38e86ba30774243ed7a849f1c55593bd7735d5c34f14e435e1c3a13887ee27936c5a8f27ff785a2eacfbb3ce85b8cfbcff88a58ad2db5862ba1fe395c8ac623265aab6dc9b09fdc61c6175359a3f128179e0f482d939b6475f47d966f45c44bb85e9bb5942519b12584385adb4c6c0a5ae43c4ee3f5e2783cdaf019edcb4b89201a5a040ef430df0f958b65baec19a124bc79e440b8c6a788680e60fc5fba8e89c0eae5c279ea1752fd69d0e286c5c1f8272cd8c263a00d0a04fb6125d979ef8c4e75a2ccb919273353e11865ddebd29e1dab08e535b4e949e07d6f4ebda550d5ee663b75fdb68286ebe0a15197a103ca178c5d0e91fd723f62f288bcee43decd3c38e54b2695bc145f011493596ad5c99e1b0c7966c8aea28b1f95b0654c96c49bae5e88c2d9bbf1ecf07dcb37ec4fbd2aa4fae514bee8d43b235dd17ddf70f38f0782172212d906115c8c679af1951d1476c5f99f8515feb4535ce383d20b2b57fb9ca84522784a1a1f9a0c899b137477ff40a3faf0bedd36039c43f63aa01d1e12730cda2054053c836bbfc393a77c6a3ccb1c7455a5f93fa0802749c25df457d7cf32007ac11cca71b35abdaa3dce2396520fdb3b87163a26928eb6e4fd448052dee0d8a2ab63b0d73e62c017080da275b443811ea30b20025109648a334487112df1662c9af6c34eb00197679c51b469370690f0acda2548224391486256bcf3517ce535a4924512e0ef29d23ed62da6c0d44d9412bdb465aa12b726e3d4a25a97310bb4e4d0508bb37a858d878abf7954cfabba767e15bb0e93f26d5dfb7473be12c285feb4df5672eee6cae36a7e24ccb4893019999d4aa4d3b9fdfe31d7d333ebcfcc7598942ed246a4a0422f820390b3dd4e178f6bef5b9ab7df091812c08a7ea453b2eb23506b8c07a83df3c4aa1284b1ce07a77c1e9d08007fd11f836f3ac180b0cf5f0f5142920ac52f884f972d898892e460c5aa4a39f2f67026c3c9cb1a6165e0cd0eca8d77871d08362ab40a781af0d00fb062e948cfdeaf986a8d996383b75635f7374070828ea4935ec3d11863efe1b5dcc31813d31134a41449e859ed9c1d57f4576c32c74fe4615df25255df7cc69c2dc84ecc634b1b6fc15644c2c78db174f002a941ff5ca42bc947f1dac67a053630fc71ee21c062e55b600a0c2ab7fb106c62d1008f06375bdc0cccaea4536db8907ff4ee0c9b7d813999e4e9b26bed4f68b29296e3e0f8f49b43766664e5eba1d14fe87b068beba100838f5429f5fb36e7a96944febc96ac2b2faf58199e6bc0a9042e415bd56f4030c62dce32934b2209861f87b1b89ea49b2c3f228f377d1fdf4d6288cc3683d84e143199d2ac414de8c96ef3201451fb1f79028cc2bf156edf974129fd5c9e6360b1604e51e8b32841aad76b95bf41bf9adac6a9d4ed408e5a21d19a0406796e8a688070ab41873993730ee520150a829e2c51a8893eefce23453201ea8047e2acfeea827007bab4d199491783b127736cff06927cd8d455f37c6935c81b92936f397e5141b8bf607b0e0bffc64ffe8232b4be086231535e294a74c0264a7540ab599a0539b0f7c116b5f61913679dce98c6ef8278c34799d2d35c155cbb6d83d058bb6dd2463b1c9d022918ba824b9936f2208685bf7f12af0f036190559c009ac327557a1c21348e20c2556f7e5d79e4c7f8e6ea4ce16d68be0d25fd5c8ec4a7f98cf49cee9fc2bd275717bc4a7489c47d141ed76e8b6700c8e48fb6bf33fe8b4e05ce2dbec6b1ddb969a522b7f8e41cb5d7eb39b7a6e6698b330158facc54b4bad0732840b063f7847fb99a868366e4263d42b8df80711176abe479b69f60baf5e6e2f35c8cdcf6b709052ad27ba15167a0dfc423a79e093999d19e8c0eb91b860468bb3af57489455c8e27b9cab9522a1d157ff926dcbc0eb818f3423d3253e7989d0ae6473d6a8e7166dbab77ce05c93e97a353645f2c6fd3938c0fed141761458b30a10ecfbd8d59dbe8c373c38e3f52e09d135df18cc31233b7dd4d890d2cc007aa16f638cd1010feba6ae4ca41524d228ca85a3f4dc5656294fc8b31b6c52018a0bf05bb0a4e9aecec1a300512b0e998f2a0cbc8e14e3e39ff6d8b31ab12bb6f7b73a7962392cb81a7de8032ae9f9044764adb4dfedf70f2a93ee108ece7f585f47ebe96eab67d202dd25110227800fc7685dc2a8d55b2cf3b541e19d330d9699e3ea11bb37e67adccd1f26abfc1b70e5bc705feefff713effa33b699aaa00a87242b3549adf29cccfcbea7008a3a1042e82ff5bedfbf833f28fc7af8b8527508d504e6db6e71136c36acae8a84e736bb40ec8437193bd59255c00402e35b2d139d8d9478d9a6fb75025043b164c5853b51975de12c8c39ad47fbe3673175b9f8703735df67b7a31295f72092490a06629d5d391263a5c40fe4c90e536c73b5b218b3944a08b012f4be6169cc0d1d650730e6485a6b18abebd361d625e9ea2c0469296fd61885cdcf2ce186050f3617f85f902502ce12cb0b6913e85fa20ea5e9a156aac0cf47e3704bbef6924da6648a6d42e772ee1f8581c49ef50cbdb4d00fa04342e3d1126c34163610819bd8ef81906c3ca2a04f2ed7224a354f0396cd725b074b5c5aa09ff1bebfaee460c07b29a8c0fe64634ddc80d9692362750f3aed0a03534e63d750b1433bb047441bdf8ef4c40559b49d10bcfd5fdf88b293b6e5fe4ab2e164f7cfc63102f68e5bc938c953c798276cf5ac8d82004555829eb4a69aaeb8c0c96929a689389934c1f8cc2294d820d140bfbf0640655a4986a5e17af7cddf37bfc6fb9e9c91c01b5991025f5f753217c1c363734a139c88c5c81a9ff568500f658f13c8c2c203ec7b1c59371a935796fbd6c6c0cbbf673c65bf2892234f6cf6de2eacb7ab1f021bd18fe3a1e9d5cd31a29fa49d791d05f1e27d2465b51443cd6a03a020a627e83aa07f139864a3b4971735a78126a4b0210fe87cc3bc54573a37ed95ffabf14a593c2b4312a0e98e50b97bc530dae12f9cbb8f7b3c0c6216056853e239cd07357ac628e31f8bdbf0d9224df53f201743a45ff743a1d3f31142517f669e27569a1692ee4fe3ad95f546f673afde613ce77d748844b8e30c131ad19fe8e13c69533ba807b0425966612373b8b65ecf1cb4923179b80860cbbe816d2fd594074a1685f7f5eab531c4622a80fdd3a71a62339d3fe403f8990311131390de699607d61a2ea949c8916339cd4b6a7cfc68f0ce5b30f65e745c0660f23cd0fcdb8fc88d3d1004a92244e62b3df8e71161896b7972eb6c44adea8f7006ea2dedef42ba71da6b7d46d60bfcdeb765f0ed53237b89d5c8770489898930e54805b9de1deef7cf2aaaa2d092f1ae3456e1cf10ab7f4573e58e929d526dacbcf77f64302bab3f0c53940248734a911b7a14bab3c094552ee8347374f26065b9f9ef80aa0312f83657500720e6afcceb6437e104ea93fc5850f105c18c4e1a83619beedc70d91e28e0f36f052b82ea96415899e55b818a210b54a2ae8a9efa37ed6497c1cfa948e53a59bb0bde3b289dd0ef38c07a2388fa0c4d74424e8d5397c0ae6632d9e9a3787ff474a2049c3e3b660fa386ca95052f9fad67eb79795f0162499fc8ebf12ca1735dc0ceefd478e59f9b2e5f78dd73471778dc908816035b0385d5fe9d9710b5875e5c9d7b0911bab19dbf2e56aa0f4c602cfe50cfc7c2c474426efaeb6a746173d90f8c1acab4629df8c5db6e3cf346a99f1087e849623f39fc931e7d18d3a563688c899e579bd1a7e8b3f2e0c272592b5f46e126dbf7bf26e9f02d1894dee63271d133d87398590e929be1bca52e3a409a5555e3d228e1ebacb4bfbc0cf6645f36f3e8116e407e85a5ab3a9d07ccf207bca1793b7004e2422d61de82e6d8f99b4210f7e8a9cf34245f0e9b95700a30a73f2ea86caf102a9bd6eb54cf5234fedb371eb397b042c75421ebf17d3574175e9596e3a86305790c6d5849f3b9533c0e186086220725c442ea88cc318c7e90cc289f5ce4a1a0b9bd14e3b6065998a30dd4f03482b7ec5af6ebecbd43a55e07daf780d6df996b1733631d54ed01ee5cc10c763d992b1f24e5784aae1573b698668b61e01a7e4df2a56228d1db0c7d1f0a7a120588de75959a225a05cedf8af608701d598ff6da798a907961f5cb64735f1022d5accc42e78256184506b2716d751f6da36d69699e3d771b6ff5bff34bad2e0a05628865956e7a90951274c1b0eed9684a43ae351b3857354fbacc65ac3b75ee8ad6db9ce4699156e67d84d1c18b215f3b57d328a2c53c8c8ae3fc2018f44df76636f444a63f2dc6fd488d20ab15369eb5420e06f642635030d509d2768fd39e9abc3dc9b545a37a87b9fd09de8ea9ff4f139ff5cbcf39cab783ae34faf07f44ccccc8f44081a30f9517a22042064ac0fa97446956b32ae180a01266203a5c7f16178b1f8f682f717c19d94e82415b4e47722d38380090eb612ea071c73bd5649fc6ca0291901fa1ec17bea8835fc2a8420eeb884eddfba3d4c44efe01ce8dfe3bfa1df6acb61b0c05480896b5f63f41dbf1b012ecfa7397f78f4d037f6021043b504aeedc0810036080579ed3f82c0d8afc1aa8bf185be0a51cae3ece9451bcc81519aee3fe340a7b383ee931fcd543520dbd419d96b578239832c869640925cc15abd008b312638729f88ed4e155623ac0c60f7eef1fe453d3ea27eb06c5780f7fe341cc2ecd1a8012feb975a209a83a3eddc97af877b4a21d218c425fda41f5f6fd5988832f20ce972b30359e5f7f4f0b3e6cbd03741f30d7562f4873a450077794fddb11929de61a704efb6649afb22f61807d5940e9827c25342aab4ecf8f61edd39b630043585d52516dc1c39e5ecdc903a43847b21dc3183de48851cc3087727355650121253e4ae84a0133c52334a0f9be292772408ef98e74d18809b4d5dd615c222de85d46f43920ab1981358323f6b17f1bf0f58f3e075a94950a3abcea24bc94f6087a9ef0350cd9da297b81f9a63b84f21765cb12efb01ca4839d844e04a3c7977c231d3a614b7e41b4f4a6e721e5fbebcbd0fde59cf5718ed4d3026f6dffbb95c0ad5a8d1ca4a6ad2ff477d5f11528b29fb8927a5f3114c2abecc03926a9f5253742756fcd3cd15fbbff4479509838ed2a67f1fabb247e2762616de7da2bd08c0c9cf919004c03495192bdff8b55413c39ce33172ee82230a5e236400f854994bbd1213946a32d6ec6ec11eddf6bf1e7478f24af2cf7a371e91c2d2ac93ded228f5496a5cbe7d44811897090ca479c9bd98d10d1d0fda7c7fd0a63af26dd9da76216d21f262b3ad8fd98f3e317cced69c1746e77b5454046b8d28dc784de3162a47d5d4c42bef70698cf96c54ed9a494de26d0d36b6021b11ea167c7132e2c0aad4c4d1ddc157ecb4567cd2c5f4230efb7b9e5cb261714bd08e12c679c7c8360fb870efcc8239a243fa6efdb74ef9eb9445c715d736278570821ea8686399d4051586dd75924af4afb69d89970c75046c9b6bdb0bade3b34a2bf2d65e44b6f1f0a1d933d1baea7fc8d4e3632016bd48dc85add4f2061bac373e067c2b230414d385496d8a29d9878141e34f32aa910d53c444e8b449ffbdac89b57e1135589d4b7295025e917115158801a6c2f8d6103a314ce6944c51f3701e4b7b0bac554284860a8f8b5ff215ceaf10758330fe87132c91d0d75d365928203ebf3fc7cf44c9e9cdfb9ba61b3a68657488895c4b99993657fe8eced1a11c3851be01aafa8c7516cf5a5d443b06a8a3fa965545a15668b46dc4de018a499b91c16b0d96daf6bd2d4e73e19bcb84247ccd22604d524994e0323e7484347a1987e3862e8ee4a4534b7269b3450fc6d93f5d12ab4af680838f52a7ba2a59543283a73d0038df657918c14a1947c8dc327c3e0028737093a5c4276f16204a6745a11fdfb1692b518c4edeb8638406c62f80d0ae42b92831dc99f5389c8038f4ad8f60eb28cbc2ad3b4c4c4f94b859d287da2adb658f899b689053dab82f4cd95363123caf7e68bec95f366d6273ecdd54ae77e99b43e1a61f31b75e38cfde0aa39068332a991d4ab38f3a224ecb2e4be4cc258861bc41fcaefdbdbd74ecff398cd2622f30eaa15e0d44b97d4a575adf122531fbce3c21c65d200929d22fb999f61c194cb489217c250d41d74ec5e533f8744014972b1289be8f757c1cd67b116289378dab23b2d1be61ad44db6c41f4d4c3155d0209136560c266870ecd0bf68d98687ba752205693c92c163ced1717318457fde79129f33e953ee1d96ffc5a2b6c1c224df4694babf6372dd5e3f3b89d5fc5823c5ba97fed95d79469c59c981bcc55ea09b53dd176e67a209d9b896497334cfcf9c277eec8fed9e41076f593eee4c847c0b56291183d77c44f2465184384323c28b1916c130b72afb20f6ce128442719d324f2dcf4f965afb6c50cc099ec8ce27d6188403f5eca7b666d764993f783655873bf89e027642616bb52d942064d3939bf077fa787b1dd22cbc97fe7a4dbefc51b7bcee2037229f369259bfac6f068b80caf82f35690a712bc84e32ce58822607e6a0ce8a3f9d0d9e09895ecfe337241be11e6e5100f7346b3b01be4f6e397037c4dbdd379149b2959a637309deff2e1d7f5e4b84cca60ebe8c9fc0d5768701d01ce2743bda1b1784458c6c4e7c155613a79d73abcabd8c1707ffd5dcd2ac9d184dcf27e6c2c1c9ff29fef057d6e7a96e9ba5773134960ccbc8d15efeb209fd14d2cdb24c723d33eda4b77d8bf480c73dba8aea965b044749524adbecada217f14f3feebede997b4d4fe19e3e341b0c16e3513d5e146dc2f3ba1123e3457020781407b408cbda9a0d6f7b18df3c074f2ff299e3445a2fbd91d2f074e16f2e76748a178acbd19e9db5748201f48ad5e6fe9a43d538a6220702dd3b1cdddb6799fca63f1cc2c79c525b1461aab01a0d0b80a7a41c0b98af3ede28d3747bf70ca8600ab75fd803596192da1ede64016aa55975149e6ffc3138b0acdef4d2e1228d1d3c9cb183428e8034f9b682b3c804f29a48a7abf13d905b0e3d8c1623fe3f638e75b72dc0e92c02b7c6d194221df5b888b5e7793a637431ecd5e4cb2bf778111d7fc6846fadfbe5c02dc8ef57beca7e746c2aaec98078f65fe4d19aea11db02c8719b113ee31c35d5b4fcc442bc8a660fe3b1b223c06e7134f26ccab21884002640f7eab1bb9dec19c1251de695897f7162be3bfb30011144b423af59b14ab535c3a3361b1ad20f6649f0e98307279947f94bfceaa3c78e8533a9c330f4b8837d09fd94a0f4159b21cceaf8123382e5d058f223acbfc24d2b231b74a2b665e661e45f62d7085b2a051bc2967f33465784e273c0afd0bae9b341a731ceeb41b6cb5dc5cd30a0edd223a65cf36e3c3ba7b062ee35ef3fb9977a8f83e2b13db3105e3004cd5d309826be5e800b98586ab62d3840db591bb3ccbc2f3bb4e4b078e1dd1c04d770d04552f4cda692ac5b481ca9fa2e78b18e56eb549e52ffbc21cf532eeafc87b9a881b9f464a15c81cb867c74c1f39ae43f998c82086ecf1c470cde0ad63692b8edb5ceeb874924add415ad3440514bf6963542cfa0f7043dc94bb6ebd9a0e19d0cb0b3eee9dac89be73aeccab51283700d8895b02605fbcbbd1641990b3d2bbcb48779b58f2aa1a6e2a3d023326337ae3b1171c26a14f9815637ce8adfc3b4ff344524976040288dc00808ff31b4a2526b8977dcd722053a919ed7aa28312c2d51814bef9314d7fc65e4163473b424fa4367b93a13e7c2dd39a66ba75fbc09f52b17d7118e6d16993cde66b0ffe8e2771a542806e136a7d4249958868699816fad1d0e692b02707f282e933cc365bc6b1863aec09183cd0ba780294c5791f728abdddab947d9e7946cbd6cf081b72073b6945ce768a6f33d754d3637f6d6d4062eae341695048b5297214bc2e08ae00f427d1cdc1cd3beec6235d5b4306da1968ddb00ae6f5ced9a31346baf7e522f4b4d881453097d55848574e2625132f2065bf730d17012e9714f1edb50d8f4d144915d679c0699be634d1a6b957a3f11d7f76943c20348a447468c457a89779072813e593ad1212d07375fdf88eda7ef6014acde48d1de180f0290790c57e6110a61e36857eafe1bebe9796c5ff5d023acc573679e8eefb0c7b009c51d1e2fc234eb553e9c9f524603be6c887a7ed6f594ff0ae33add6ef2236b4f7938b7c53c741dddfa1efe61b64f119c281fc4267c6163878230df1766e16afbfdf557505b16781850395103e854ede65ce4a77389dbb62a8d659fd7c90a51bbf4b3ad2ff66c848fbbfe1a3a39d2c6191c7a1c04c675cfdeb208a648875808e4a1b5eff11b65725c40d1f22df1a14526f104bb88a7d472dabadd03f5e8678fd10f7a174c9a39e3d4cff203f0e1a80e1de75606823b742c49d76b9f5f57c6608fa17fe42f45ce011c5b676dadda4639c300bce336d0b92c5195b3fd28bede1ec3a27d39833c2ab7ded843a03735496535bdc627cfb78d0e43866e422089dcc307d8bdfd9f3b2b60f5d5855a797fc4cf0bff7ee3af9dded17734050a11017c61d5a239401c7503bb112a7524ed80a3d87b4117cb462777e37d1ef68f285754e9621a3da93aca6fa98495bbd92075a98b820f5684b0d20715c776ff754bf6591afea1f23b0202d227f3a90866a30c56d70dfc84ca763f22a81879e67ad77b9300002e9cce3ec7d7bd65232e9eec49a0bcc9462ef4402686f823c48a6a207437923943f526f4632eacb8d4ec8248c86e1020a5e20066e11ecc661de8105198314661bcd1500fc634fffff1a4375cd3a32890b11940c08152ae0c11ee040e7389a7fb804e825847f33cbc1a208321bcf7a9478f947ee762be9612dba3280eb718ea634e782af5177de814444adba1ebbfe388782004dc0c150f0b206fe9b0182259add2f29d3f585f1e3e72728e53be5c5bf837856525a013df7f41d3accd9558a9e5e360d2547d368663a228745fbcb9d519b9143c1e9f12c4dfb22b39813aabb1c9768c096c6779522b54b8121af7c34cb497561f7e24e005e1ba98bd66d4e25beeec409e59905f7aff8b50cbb066995d05865a5e38ab969e45295e6ff66eeddf32fa0aa9d6211424677c1020634565d951cf9c62d24db7baebdae303d9cda7697aafa4a2fbd63de38b3acca40fa0ee8763d5ea35f4135f56fdd45d0ce114148b07f47821aacf92a6bb240d171745169283f792f432180dd9316fb1c9a085771e815b3ac9e082a7065b9c5b536bfa3df1572a62547451f994f1fc634b05485b229c2a3900f8ed6af9286ea4b69fe2ca6b69982d95d498e060fa42f1ecb51c5930a03034d77ba5130d67e5e2bdb4a56899decb07c53a28ae85d5586c3f58fddc5e0fa6ca8c8685b713cf18c03b8b42f281144f7506474e76b5e96447e697aa98cea1037dcfe09e538a60e3edaf723a6afb722a0508e1631569c9d53b4df2a13e350915ec84310fe4d2c57166cf2f7be422e8724c826f96cdb4e744e71057c92ffff99e7da3de40e24c2dc50a202c3fa7712fa643777d48e26c7d9ddd3db8090edf02b5e87403a2e925cb157f184b73846c27a639826bd24ca9328543d764ca8d5fd1552af827424b739d8ca94f169c2dd1fe07b781ad9573faaa428e47c26ea49c720200580f275025fc949a484cbc773895f495f305cf07767be4e992827a258d0c5ddc7210dfed19f144119501dc7f19f043d483cf7401427b7329ef60f6d71ad0708a43f346f33967d90b70ae3ac0ac322a90d3d88e79d889f98d878931eac6deb15682501e1f681e37a42ec81a4a02b415a1d3adb940ae6454ba715ade6532a2df3f3580081f82a009b849126ee63dd98e8197e93acbb5b8386b8140735b465a90229a45c1ce555698d456fe5d3d9f06000d3758b76c1f226b4c6cbdcbb9f453c286205eee84357f723f9e02e27ee6636fcd6a4de1491c4626fdce0ff36908211498d9e5079eae19eaae2d8b7ac245a31e5f7d4ecbeaf794bc5c451484fee0ee5b01281c7736dee1175e3d78dffd58cc146830c4dc85da564a97650d74cee3a9bf69fac21264a8f33d773ef8f12d3b611b1443f080f49cd08d07d4e6ac120564491aafea11db1aea8a7fb5882806b1eeb23ba97283cc8d202c68910150a73daa6632fb9c8335e1ae7472d4986ca76132e4a5ea330222677f7e1f679369ed0e35ae856d33b8699d00b98391167d251d1077e7da608d902478009a19db0ef20b683230d316c244a2e8ee33cdca6842fd8d4dfe151b1bd0ebc976d0c7f88e009a8eb9fbd483dcba22984d3095e216abc1a968e6b122322e2489fa4701d624332717190509a79220662d71ca7cca08f436e4c2f8af8136d97a644a4c99c273f803736639c3a178a8aff1c19a2a4ea2b8b54800f805db8995e6fb827e3bdbb924e1fdc05ea1fbde6a31c07803beaa2a01f7391916329e3eb0bd950d484fdc9c5382648b32b5ca07cbf59c0a9c8c124e516339c21fba900220347f9480b020a2b28da56b2a3e315295d513b8487cdf01fcfd4054e11f8b2c4349f813234fcef1fb006997b9d4358f5846a38b0fb8ed21b6fb233471f9dcaab88b797b00fa8b18f77202579683194583b685be505c1ffa65f571ddd346fd3a8e909c2c8551a536d5119f9d97ae2797971d02e722ffa61da90047b0ced5a4f0056789838d39e3c0f624ad3a6168e260a318cdd3852449df4b61d85c9491e0f3f6d2c90c3ef8dd6ec98346f71ae60b3c556b53ea0ab088be7212d39be37bf904230cba5b2567cf21c2b054efaab89eb9d1681ed278c9faeaaf82479b3c5b1f7cd96fcff37211f5362c7f791a5c9d908f1f00b273ae9efd4725ef3402e589df5a7034b2f7810568507d12312f8ae716a0780814a24a2bcaf72f397e093a25c9cf8be5701a3139bab28eb3fa50da351c1120450a95d858e77031ba59b9916073d9c7082ddf3be96a17fca9e6e221774503f1a1846f4428f1e57f873d8d6312e0065a42047e8a40dd08bfe4e237f3ae72a227b4a1cb25271bbc7983d336edb02deab3060760d1c9caaa425b10798ed6834c35b94b4f416f1ba09629f8a3d956b5e889f7d3d05b7a36195f73a89618e838710f0b3c305eebd2002fcff273b2d5d61637acc0b26811b29a839a578d4d66c2d8fbfe6f4fb9b2a0433f96bbfef6ce3c6c23ed62ee72ac51341a02236fdedf66dcb873fc1b406ee386dce8abe115c50fd9052a81f56945ded1d88d982d15f87a08ccc730eddc122be9dce8e96fbd9c5c6ac6311c6e5f3892d036f57ed132a982daecf155a45e53979b18f995ff35d7293702d2f7e897e4b980ae357ccf02bd62c6f95d15b7c02636fabdd6b0613da3b7b38dc941eb4010a135d15f6398621d2620e46e165e9a0c83f6b09384378845ee2e1bac0244aa3689699e201b837b48027937e0ffdbb5f895f328341f517c4ab9842f7e880bd939103a4de9fa5ade21aa555567078a2eb1358a2758836832631d206e16b58271345f1dd184ac0197fc7482ac777019dc5caa65d59311961a72d4dbb9dc54d9d3cef2719be56efc5dc386bf8f9ace815b3e706d909fa55b6675bd673124bd0f12ec1d52c79f9e601dc977964a71493b2c0e07f1da338beb6791d6fc303806d7b40ae1446053e00c7c95099255e4b357758107ec21f4b8e7efa6ba10fcce3e35dc35639aa4a03bcab9029d031dfb65d3acce630d20886fbbf0f1c6af30f1bcd49162c3c75dbd89c0da46d9e73e605ec8c7fd1774c6f3f17c4b1760c00c88e499e901b6fed1e080001dffebe7b24787cebc5b9f9857d111a5a808be9a17e34e5e34f1c7e66e4aa2c8b3205e508fafc282e9aa069d141a10096e7d3ba691b8d0c38bdd0c6274d662fe1db4203863981ee38d7f22e9a09de82bc2872b055298369336746b9274fbfad4dcb53435aa198a5e59cc7ff1947ae320efb6467755d45a51a33edb3d5dc56b7905e2db4488fc7a64c461b885a03f555b9556f448809537f9b940540b0e2b211934dc7be57013a9674c16d1db1e8e20e26bbd00f2f26be3a401a119477c54b66f844bf05cf98def7bd0a4311ab55a7dd4e66c3d9fd28b51bd67e6fc074b33f5db2bb6a8953a6a0572d75c2ddbac8ea36fdd07a9d5dbb47a18738427462d5e95cd0f1ba419c3492d5fe7022ea9808fa9cd938db3a5797ed89208e578551390d926e84a5ea2ad60ca954964587f0c140011b1d62aef408782a76df33c8d9c3cc1bcf246356a9e379941f7826eab52279c2308c0f53057292380e1c25b09277a8b1496acbc40fc217b9e0a364a35adf0737e103dc6b86fc05eeb0da7ceecc27c507d9763a413f92ef821125e373eab0e1e3391a26b2d27c43852460f974038e218b875f209b3b5309c13fe5cfd39877cef7a5738b2aa4d7890ee75c893dc665b2f1dd9465e58e8cb9760ffde37a8438439c6a5b98baaade2aa179eb0e3950621c3e20b306a75a1c997748082c455ac927134d9e66a032807f0286cfb56b09e5828315fb7868935930974a04868d937691297c4d309b4fd814fe532e7240739e6be7647b8a860122863bd98f7a016c83c8adb31353f9a076434469ba686c7a65af59d40918eff2b92f7cdfff6c0d6f3db19bf3bf79d738ab98097723d6df0b41dbe02d97ad7df1a336462f5119aafe903c8d8a2dcb3ef70f4231b9b5620b4032c9e458b2c0814d1ce1de97af44ff815077341a304fa76b8477a19c71df9fff0b4e5605a19678f4bbec1cf10c5be0a4f72c2e504438b3b3c561b2517ec5d02d5d1ef8561a8dd9bf8c56c2b7d8265aa44129f22580b6a7da4044e658544b37d78350be4f143e679665f325fa8ac4ffb4aa10b780891188b3d8874c14415f12e22ca76f42be650dc68d79139a372b42736c4ccc77247bac3554b80b52bfbce87f2fb8f96dcc373ee55655cf17c2d75fdfa4906fd38beb93cc9b744e5d9809b80e301d6f1a71dfd328ac5aad0deedc8242e9e9ece1a25ba6729eebfd1e88ba2ceb6084e0303fc7b694b5e2fed3d319eefe19838f4712f8928e86a1156a900d9ca19b9f66eb716c9c4e68baf99a501a49b18edbe67afb8ba77bd0c0cd50fc8e4bac1b794a08e6f360a86c59f84f4eb6c773ee93b26c2cd0aaf7f9376f6cae67cbced07d4d3f4d5cd0711103488634032f87b99c25c66d05794c06613bc3d13ae3c98cf47900a6f34b1216a0b66a1f71b8abb28bb5437260e00003b51bb9c3ccdc84199d4a29160fbd0d63678fc0d4e3ff519efcf2fd9119716fc7d555aeadfd042d6fd0da311d765ee5ed54c5c0241641668c7b2a4f95a5c636bbaea6b9c6dab080892e4e750c3c344dcb3da9a6f0fcbe9f9cf9ff06bafd812d46d884451fb4ef5c74f5859c1ff5d20a6a55ea6c98e2fa18f6f3b64d24d049f851b95e33dade1736d4ae2aea11c25723301224f3944553a34c08d09ae07319adb19243ff6f9325bcc38d69aad81371f6dcac575042387252efe1993c652d229a70517954acca0a9a0f08f1ec9c2c56b90cfd1c9a7063d56084a8446387b8ecaa78562366084f4b61a6a4e52fd2a9ac5208c359c62db5f53191c49595220834bd8e54877bf8f09d5a9c9320c9eaa59221566868589f9fb183863058afeb4eef128c736f9dd79fb985a0e6fff0ef15db05dd6d8488f3f20df674fd15b96c8cb37ed712f53d1eb0fce53d56b2ebabb87bc025494553eba552c22fe056d12bc20856571abc4df698b27a495fc741bd0f2d62c11680b5a66dc7dbe8cb13594e2a9e85bd5c5240fac3715e73ad23fa2b3f94a4d092828aeb0031f1e789f08fd3743ba821c098be1f7a363d2600114e2e7afc9cc751cd59236a2b9ed33377103de3329dba815a8782fa339323e971acde13b1e11cb03caa920f3e12b3882f21c18821d7e13a4d18a30bdac3c15d3cbfebf557ba361f0111a92b44e91d5e08b775d511a174a39397ac9bd57b47fee3f74ba4eca8b7e6c223d2418d0a77a557c4b3da052374a3966f19912defc2ce76e1195314d289a10db54664016771bb0d34b233497575714766c408ea51b547a6fe71bbb5e33d500686aa6dd085d13d2adf9bab280756a95cc0e2b4389f662bcbde7699add2317a3fa0e0f41ddfe7590673e8013e5f8047525370252fbd2ab3837ff7fd1e27802fa629c94fbd21a03cc3f4f7ccc49aced3dd4e5a4b01612be55f7591779fcb2e1cfeac9ae1c5e4c7a9b58054076b76009808275cbf501ab73685c2bc8d1fd0ee7cdfd200d2f37a82a8f98d851459c35054de50cbd3206c00ff0d5c9d220e5cd9c81e96c4643001845efb19b7b77485381651d31eb59f24ebf940e980974ba38fe51275dc5ddb8fede42c7494d21f2371c28ce780bde218f2c7064fdbb34d717735d4e6162f4ac49ce15a19137901bf07d97a81e38f45e3694a1070a70f9eaef23141ce1e441e57984f47af65ae1fbe71eb94286e36a02ab2e0e2a571eeb84fd83b421545405ce1b93e73a085461513a568bd7592063d50bd8bab08a159e62d85174fe7486f0b4f5df79b1d08c27527fdd6ed7c399b005db897737892e860db4e3e1be33441d7faa8890e30c682b058a359d573e49c90813599280da4ce33cb29748fe223fc88a93ba8e10a9ea8d242560df26e4c7c49edd0d6fa79afdced4942a914fda5c6803b8f83fc088dfb609582adb8ba58eba2ac03b38767f7dfe2cd2bfda042c0fa2dd2f2df806b22480c9e68f4cc7177eee282dd094d4d650cdbb985ca743303340e700369e142b005e979506914bda017e4cb96d4a4952921d626562fc186a100530458a55e4a8d8971e96aba465aa1c98ec99176b75b71003d7040096394caa41cb9e37316e09cbe2cb0060b7b3acbc248aa5cda0b505c15b03bca9369ee822733e96509cc5ed91c49847ea308b26cafe662d3ec16d568b3a50b7abaca945a19975bacc810c179cdba791fa3cedb3502546e3f72d4b1bb3bbed5b0443a0f4783a722125dec829c40fba2f8ed34c107b917b526d44cf8adf204d39791d6d01e578f74ac6d4ff3f6a35609872e11da212829ce7ed70f0b9ae0dbd7a96a9bdf4a1cf2d66a8dc1a770e7621ef1e01b77b91843fd6598ff95439916eb1602303dfbd8ea437aa8ae793a6366d1afd868ceb4bb87f68629cdbc249831208463dd2f475fd5cadc1652986b6a9f4b023c54cf74061129d6d99b7f25c03d46e5d75c74256c2221e12dbf30319395f07d1154c3640e50f8305a3979d36b9f294f390638d401140c48f8b489e0acd8d21453d80819602a8c34c43fb9f2bebbe61544a34bec0cc906e286bd0506b171396c72156363d843a998f6f1a81493a65c2947dbe823994157c011c5f3827092a0c7a0addcdea67817b45a3598836339bdffc5ffa8c108e0659fc69de3cd83b0b8db6980c99bcb03d427abdacb07c1db98a389165286f535ac80b78026999da6658a7c122cdc44e64d9b67153de3157ef53bf0ed5b2c97f6817b9b1c5cd599f605a6eb26fd7640979674f8b146f80b31a83a4b3877d33ab690514cbb11d3b4b522f71fb57ebebb6fdf40b8e536c37f3a00900e8749bde0f18cc3530b1b24d74759de389522c6466f389d2dd60dcb4d14d2a37493a4b24d5430ec981ac1015e062854dc9622abf4534a8b4d44f277bd85ff07e8f9b519bd79bbac7f6b4f7bb2af8ebdf26a8dfbc7d185c57bee0449d22cf9a12c4a42b2c963e43168b7cfaa466d50c021b4d78cbe6314ef1727087dc1d46098e0ff37034febed0e8294cac6b550e2c9067b0bd2b1ae07f33e438192a6743ec8f87d30695430396a3c1e3b44312f9838170970127462bf245d5a7bffa4f42bae381cb21d0b030f1b78d6dfc139e720e9314b64114e9c0770a0db9c7432f77174ba9467b27fc6fb1e71e5132f8381aa4f33d6fb4ca4dcd93c2cca8df0b45e575e1f25ab323b1fa7b40f32111d3636ea8a9269e3fa98f57858c5ac378438f197d158787d27d0527415877f11611fb1a3a95874f94adce841ecdaeaec2c09589ca4be0b9bbd5b8969c6a36e840a80c3fb8f26be486c052577354949a61d7f0c734de2fd81ea4cf441e94cb6805d09b4f319f4eb3048f69dce07bc73832b21ef7a10cd6acc596fbea9dd75a4a4d314726b287accfd2c69f1d103e9775be21394b88226ea3df53552883da4582eb1a84b7bb4fb203eca61c82e5e3e568c8d2f3ea3717965c6e2886b596d3c375d73cb41c23da787c821043963c36e5771a18b4e3675818520526895b3d324bbe6e6b1df5c0581b10a6c5601aa1a1adf1b3e3ad0b39757a4d2903cb6fcf7f28d205ad4c0f629b185451c5424c366a2d899a30c79f741e826ca4d25882cf2a6966949933f21e721ca17f6d3ada474091d05de4cf692326b83eff61cd567ee105c591b299049ecc210f7ed9ddfc36cf8d48a7b7ee336f8701d8e172a689c77425bdd00d6d507ab52399582ea4552e0758ec0801cf4f267f61e6a78bec400485970143a643a7e55659ce04fa9f21b3fc12e251d16a59f594d429fafbe8d47ada008c8fe48cb45e7509d9ac105e53dd121c9d0c1bfc7f642cbd22f21a36af23f82188b5bcb49f53829be59948fafb61c1f3a5d864215890568fd214ddaa1a15d9b4b26aee45c3b455f9b50b4c56eb402bb7ac7de841c5e096b1ccb19fa590307acce285a9c0653dd48aabe2ab1c95cee54cf687c2ca8d00be0b6115f3c6c2c952a6f7eaa42709ec995a93debeafc6745e5893786ec76663dc84a6098058b1f2a3317e1a15ce9c0ec4a435fb87547536b55c64a120a4e243a7fcda226b5e02a3482c45837f590cf73bd7107dd404e76473e12780573117da7fd33e334528c680788e4a281aa526c3263205a24fecb5dacd869d0dfe6e6c41106b06567e90bef1df307bdb787c3804b998870381b31288e2cce88a82f303eec78cc08255f5d6265efd54257ceb5ca261b71be3f358af69623e5ea3197280017301fd24ff666e4c270d8d377f1e08bcec5258e703c822b026b3f87b77e743e3001cf66f4390b330c7507169875ded7f19bd3a2821e77eb5a62d9f82a574d815fdac74ad30d922f302b58db1af772f043e2844ae1552b30264e3c2de3cd893410a0b2d71d561bf2918d5ebeab0aabf8afd86c31de10f6702461f300f46413c1a0bd2f00ad49effc8fec9511c039040126f6ca26714634fac6a581bb065b4d85035edef49c17ed5e935bca5dc0e910df0e3db48860c1170fc981522fb308a09848cf291cab9bd44537c30ec0ca5c8822b93ea9584aa73eba97c629798e330b590159ce61cc30f556a8d26f2221dfdd76cdd98a26eb24340d8d19bd4d51c0d08a25cfd446048c45e307f83777a7e028da2fdfc3f91ee3188371573e33f6a5b55cfd86580b8e581bb3e5e3edef830bb23ce38a872923ba9f5785da4e8a6155f072fccf0a8b862b1b26763101503a4edf2d33f678d29265300059f6abf7b655878ec12bcf15eab154bd7f9bbbc09c18d00dd798c54a9fa19e206107550ced8f620908d74a4634ef9f499e5cad96dff48c99587aaaf72aa02d0cb89b9be746b2e111b4bd24600705964b0caaca3f5bcd0084e096ff345f800b3ca9e362b29561320ff0743366a3cbcce08a95a0f803063d40698935612424599f5e20275be7506a3936e68fa3d11e0b56d42ea1ce3ce57ef9f36f4ee268b597deab5a341e338b5b18414165a6b7e940cda596f3dce48abd8569964960dabc0682e3dbfb1b61da1c904df7fb29b2b589aa7eea1b0e862708ea5111147a9fc5b5d44c02cde3536a5c932be903e3338341331e5d05f0547af73ed6246dbe5f468c23e03b0c8da24b30b1bb2bb91b104e29506dc866cb494a4b2d60b658b9d891f7490d042494e5604eb57100d4230e439e1a59bf61f15f4d1476bbe2a6ad5ebb74a50ccd9c3a7905ed26ded8415e6cfb69bf6e7b200d587c75fe3ddb5cb9e1f03bd6d08342c1b0c4f1951db5cdbeade2aab760da4f43621ef9e66020b1a63f1efd9676e9ba252bbb16a36855545978ba3864b071fe85c25cf351e1f29be3243c811ffdbf7f2b0309d87e1d8a1c868ce1b8d577bff21fc815cfd5c2f93500be8778f59422c5b2970f2499c977cd77f3c7c3e4c46eb9778f36e7c1142f16955ef582c0db5da0b14ce28ac9459677a1aacdaf27a96f6cd0c73c0c81cc16a28a9531770df7b628209d6d9945b7c14e928144ffbd834b7526e007d7d9ba61a0fbe6745ab15c6cb7a36c223ed7f9827e56488c836c65d6f0d8d5407ff6f84407faee90699a4b9859aa71d27258d6a2fdaaf16c1f8fbd4259cb819737e05b8b6508616b8cadcfc0507d2921db939c4365d753baf6e21886f78d57d86aef5def6ac7d212b24ef481d3f8e41405360f607c107101e9e20b6c2df67b706168e720301d5a2f55856f9518fcd456a5ca9a0c5a4ae99dec48e8d4d0905a22ead25716bb9ab6a46d0386d2e6ae151d543b11ae30b9744b2d8639ea5a8a3b5e6f4d7265037cdaa1048f9add09a66c8723c4643766ef0066d128c103b7dafb09c93cf8f2e5421e9b032f9b89279555e3ac5d5c134edf121772675e8830edb586573f36f97d4e02ae3e7880ee43972c254da3586cd2614d15717d40c7add09648a76f3d853d83ec5ffafe5b0c719d39b506013bd5bac942e8aeef66b4b2eb911740ea40347fa406103ffe6cc4145db888c09948c98c428a95125df550b871ab99489bd1aa1c5787b253be2fd9c365ec3e5aaa09c7fa8a75dc0e56be3a7dde8a5bff582d9d6fba0390930dd336220058754955640d683a724fd87318490d81e97b6ceaa1b3a64c1e789bb49989a69ed40a65c0f3a3d613fa1734af14203405cc62d441d8f6068a8e2302a6a0665549ded76c82f74c8fa8cfdcc7c4585f91dcb17a84286c6a96a12e8cf8073930e0809b6e1bd367c572ae498877fd5b170d174737c6855e75f119d28971b9452b0361c7dc55dec94161a5a70c0368ccf6950a345143e3111d003570d1a7b56b58e9ae551ed902051c839a7b7df3c62a7fd7e5516a77d214496768df1cd6568238aa814dc1db51d3c32d341fb7a0c3d0b495652dd458d2037bdce261cadfa8b46da7f3140b6286548b23dc18c909ec95f80a0beebfbdf3b2efaa4c54b4d53b571e24de2a2bbf5dbecbc6cccfc5a6f51746fcc17441f5f727f147f97cfc84e70010fa857e124af79fcc571b7a53cd02df0e8ba1abff2cdb5b9fa8ceb5669bd0789f5861806f54f178b547c22b000e850969cfa52328c33799b28c7bd0db8b18ffb21dbe20f8f2cb2e82c05e2ce11106b4b9fb461863780ce3d82d4f7bddfb3825823250b59c92037d6b37f3a93800f9fd4346d50b7d97e53ddfda2e8e1e3525d3a4f02548d602c81a8a9129f5dc2786a12b66516efa8a3f48a5013ceb02009ccecf9b95bdab9fe4069b4e64ffbe1cf907074cff55a75fcae079b65d3ca22b4c8f8b42cd8b6aa2aec4b0d6c0c78622e43408397cadd6adf5f6a7f48e21f720d98a055137af85beb9c35388ef053a981e5f439a1f3f30d02c9802df6b2fb2b6d0206db0d13a8d5d5dfe4347fc6a801b9396df3476de71e471837293a14645fbfc4dd3ad1af337cbba3d8aac58bc36e078080ac0960a70219e8316828c9ccd279a470f2d8aca5024af13d648006ce7db853ab9e5ef90d5388be66833981dae2a83668cd0f9156c8b33fb495ddb964572041a8ff9ec95f2d7aa9f5fdb4627cd122fa59093507306737c15ad9cbc64b5a23e46bfe4f294d845ad459de9d7d36254cf0c2eadc8481eccca7107d3396c343ed84a703397c8448ba6d44a98a7f94d019fe7bccdd4eb5abe46b802d20de302575d23d35ce11fbc0657cf41b7b0613dd6a910f193cd19f338848ba93d5220a55f4fd11786bbef7baaf818008b8ea643266c270ae1967ca3909393e72e048a24ea7c3c4ebbf8904a4917e275ccf7d000984bcafa1ec72097b9db756082ecf22a225f0ff67f08f26aed7f23124a33c637f1256e87b984a90330ca81ff7ac3567d6daea717254c93a70ced188f64c8ce54629c5318e5c3293be26c2fe5d3d63a3780540550835da5ee9078aef9fbd42d3cae6fbf69b5efcb6f5b30b13031a416249c852c3d8c6f76d67e03027872ad660d13e97d48bf15bdf8441e92c288a4dcc611c45823c8cfc200fa518490cf538f502d3624d2c123871494b1565acdc96fd4c33396c476537ed7f18c418cfcde6355e1560d46122d93dcec6d09bc4e9ba5a22aff2a2682eec3d2228f47ebdf6a09ee27b923d5bd52a7783be9b487d0868b3a68ac9cf5f9b2d585b23ffeec92a908aa0a56f78c4f6635b08a2dc19c968eb145434fc7556acfee7cda2e18b6cea2016062ba7c3769051454ea9acecef8b96e4fe41e509da058f3fb8effae7445d9ce5169f1df69550419990dcd482fbc4d819c7ded7fded43d6f10a3a64124bd6ed6bc28432ab5d7a131be99180cc45b3e19f0542c43fa0204cc66ba8c1848955fabf637f26b10f0ca3d587ec66858c77b890322298e7770e4c401245cb7a37ea3bad903fdfbd5cbb67b84ccc04d6abefff85aa5312637941a78fb0133948ae249a0aef7212613ffe52a508cdf18413b88128f599050af4f97f3056d37ba62b126c0bc3f52ffe9e253a6801c958f32f8233d044d877233d9088ee035786c1eb4aed5640b969184677ea01975857d67998741347fefe71bbf1ab66efd343d350c3065e40c4bfea5b0213221cc916b77b36e9973f464bab08a4bff6fde2d22d054614416250d7cc7925a8a613719fd112398185a0c2aa5e7ffaa6cd90bdbc8b3a1e2c4a5e2ce7139ccc8841313e100f2a57019e00b9d65c186f13bb6bb6f75b2ea29cb80b598d8210dceecad062f351fd8f60b08d89dc534fae6ad26c8e8b9949e22cbb8c22fda6eb2bd0b5e14218c2c53ef2524c2a5b70516b74b766d59e7e27ad616f7b0221c2c5377a8e6e69f2fa2b4f490ca1d18f4c465a5803c97c509f0c4298ae3da4c8490e3fcaee97545473bbffcbe8424c96c03b908b70479a15256be16cafc6fa84feb13da731712bd291c55059bd49950c9c4c94557b628c08ddc42da52c9c1fc13570f1ba67895b354e575638dcbac3e34d9818ca0883d0e28916d60d76888b2a261a0cf053fbb02317ba9c074f723326fe3a855691a6055529579eced46b52ca4a40dcd1fd35ba95856741e25f7cd57f562cfca8695c7f6bd7920d1c999ec752231141043fac3eac5841ec0233b2074ec83d0781764ece03fd4874b27150229cb1ea75e887a09d80ea6a378e3381b49b0ae402746d3fc8b843c636a39ecd78d2cfc9cc8f377805d5b716e4021f9667e28dcfd07d9df5d846cfa62808a37374cf14957788abd7e96ab321592218807b5304c891afa99844b1a75701f4b45a8ed43c45618198149b02f9940661e6fe99bebcd302f3b14b691e97a500c0e2270ed81e34bf9ce5d9c5dc92fe2a6b139b60dd41b7d3ff20008e4a27b8e3a4c0a078ecc857895b040b86c59c121ef44ce3f6cf988c9c5ba85b349a1f18600d18f47af66892eec871fc1eda870212e9a5d98a825901352ab03d48a45cbc89431866798c9b907d2662ba0573e2500afe921f232737f33077324f47a93cc7f586d4e7988343ae5730188e32a6a54102cf9094cb0e9cb91c75b6e783b147a9916254d780ddca5522ba951329c6fb652bbb290be2c96e44aad2b444f6309f2ffa8110321686a24a06bd1fb09c3ab3c63d6a78538df2b1e346c4bf8fe429a2c1d44483fbaed4ba6706ccd5fc53cb3b4699e91b01d9f565e8fea481dc7b0f6bf896e61f9873079383842d1a2a63b01b0b200cfcc2f99834bb2682919f1684cb451fc887146c0c5b3d343d5cd5aed6a51ae41c46f1adc9c433d88b2729b33f96a246740379f575bd9151385810736bf81e8f39ccd8de66d31ae3136a8ca2fc099a2369f6654c3ee20f9028769833924bf52f9d81670e61a401261dd0650722f26c9a19ec930b3ace69b04fd1603da720578b641e32e482512033739d8ff6d149d645e3dea7fa0e986c3639af76d019d6a235b72c2439fff5a9de25838fc47fbf303b48732b7604924b47d2e031911c3a975b57768cc25d83e4299f00374e7eea7c906925577314dcaec9dddc003381ddea961b475bd1fb63bd06d074b974b8ddc3620103db585066afe9a3a7b0f2cc1f1a9994fb25ffe45e368a81ae3f0d4eaf8064120ec45401d55f61a3d82692a9916a713a244acc3485aaaef95caee7f980f532a3a3eed467975d12fc7d1eb9d4cdea2671c154ea355b1fca074f484a87529d1fa5c731f17de4c68ba525e835611a88cab5f933b80c2754bfb03d461ac87ea1d4ab88b2e3b8f722c075c6e583bf3d48d228ec43a0c0dd38acc7d86228a113a87b411e16abc0d30d2141a0d4efd7ecb71205d03057366b329d1a56b2f454cbfeecca0df33ca91d0ca9595ac97afd3b2ecfedd712459ae4ffb95a339ce6a44f966c86c3987455027b43ffca46df897515e29ee7f27d87f43960757cd05e3208c51aa11e97bde749c82ee49a2ddf2d9fa7465398a4a6bdff4d900c8fb3fef50b3287713183aea2031bce197276a175f762bd0d7de8c36010d6f03862747bf9ebc09530a7b6330e603d0881816f3ca3a12e8722f9868def0f3a5e749ec3cfa9c685f76d98c07c6199fb142889db49cc522c7e695198b794e1ad81de649d8a768c6fff9854de95e2ef4209e7b5d6e03108d1bb3821d54380dde60b034d929c825dfb4dee21c3f456292232bf25e0be905ac87519b4a945acbefae8c119f064a1afa9de2f5f533b9a8364e8e0f5ca6e522684d0fd6881c0b1c6c562bd5edc1fbb83813db4f5865c133da8ff4691bdcbee92996bdcddb7df86b4cb124cbb0fd69b6645d1ea73e3836be6263196633b5e281c33b5dcdb6907894903607ce4b4e47aaa8429754d98471bc75d596a368bb943b1d6a0dca85c1cc162e405b7dbf8b0bfa64a9903237015e557daa2fdd8e86bb967b0440c4ff3c0328ea77809881a4c7a0c2d817f7ac16a7f36eeba160464b8deebac29e6fbb6a3a6b3d18be40b93bddb3dc96f08fe2e18065e0981fe6fb125fbd32adb62158e8e48bcf87c263d6befa7ea0bf96e77226797e130a657fe1f0c48fc626e3827e174d7f94d7a916eb325fb0bfc718451608f2693fbee5b8f921345a741ffd239ebd3d28b9eea5cbeabc28d48bbfddf80fc330a787e5cd844120cde098d35c1c7175a079a42f5da38c52c7ffdc8dacc3c9687733169e9e4274dccf95629916ffcc519dfd6ae12673652d98c77a1b1f462ef13b959b9ea48db35a2ef424ff9e65266241ea4e09bca1646539acdd6afefdc32b48154f2720a50885d718938d4fd6aba27c423276d99607b979534d6a147a48c13e77a248002214deb27837102eda2f8614a14aac910560dda1a1a1f3dbb5e5466a0a87ea8f1ed31b98327b280b4b3bd0ba31bea376dd11285687fb9b8089fce2bc0002f118aad0a0db06e0044b1d52ad7575a6d2b15007cf4a6ada83c693e92631c10f2b53cdc11f72e1c720cc6552663926bf8a9be46cda38625d4dc1d8637292ab431d76fc157bbbe562dfc419e4742aef8bee1bb1b2fb9f741925133b6c99383449eeb1e32ca6538af296ea3fc3c743c92adf24f413b83e630c1446055bd86d4d6419e3e1049294a3f079269d04ed753c07843ee757b5319ecd485eef96a5103876c1fc539e7156773115c821c4b4df4bcb5c8d98adebf21b606eae6e26cbf88a58287523d2bd71a4d62372a3d3ad65fcc87a0efb09beca5edd530f6140cc8cff4a138de1efe70bf71832b68e18027383960afc7bfd2e1e21cffaadb77fcb4646f8823a1387233d284f85c507289842692dedb911b003279c74f1d0cc6d35ce34c261b9ffaf94202ee9d0a49d92aca7fc1777995343ee517cb24fe2d29121d9938356c2484e841302efa7e1ab5c62115067f4fd83461e111961f21960e0f924b20fa811fed1b1d66d8977458095304b045e10a69c28e9b3e70c366c2d14c9e439a663105a91301b196ba269e0eff7c90cf312ac4cc1dd6958a8ba26b51c0c43bab784b578afb60f1726db6a86c0dcecc88ee4680b802303c7720415f68083735cc4ef6bfcac80d4e14a915b4bf0cf5d933febda866fd1757a098622a599b2835e56a71ebfe81b3901a9efcfe7d1e9d2deb88ae3359baa8e47a010892126ed675032573552acb229683953aadc690a297ca246866aa15892e801b478722c95a523a00449056b341754ef3c9594b35a7405d2d368c86d19e56a1c576fe85b6a3f80447b492cdf9b7672e549fd340a954d59584046ca935c2cc8143b3b965c615b64130c7a8f5c6e3adb73889d97de5c1bd84b38dd580f2636342370d1d34c05b895fd6d9b25c48d783d7e97b1f7405128e3c3b0fe7031a93516f6383ab108e5f38d08eb13a6c3e97c966bb6662ac6aa3e0eb2f83b254f480f36df227146a7267a5b318044fddd8805a1a22800f4e829a0b8081e72260abfee274abb0835cbd9b4f79e6e55a5f492b8588f3ddc4bc16e8fef60b9351b29e1a752553673685d342a52a173cfdb141ec8d25503b058d1023227e71e23903fbc762f30e937115b20187382cfd31a59bba6716842949ab589957afbbf5ba37af49a9740e8ea6b29a722433cad3c3c7cc95678f580253e6cf950b6b6ea973e5183a5ecea6be257a8c1026711a5d786977a216dc39a88ed3cccbbc6a12a7710b9a124fa09087de5499e16d7d9d082b4b8cb54e5b054dee24600d3e52439e952c078bb25f26ebf0b641db293081e1ccf972f6af52365e9e51ea7ada48de7dd4399513cf23780ab71fb6010a930c324e4160b255926d36ec62f095b03c261169980da5ec17e3f7edb9895c1606ec58eba379e32ad2885aa7b93e14df1d29cb3aa26a16f4c6a868a851128368634e34ccbddeb91cb79a26be8afa903dffe63659cc403eaa8562a21685369dc841234c922b84ce0eea20443a77ba86d79b47368fa8429d5921237775d77f741d367690f3ffebfb471d633b148ad8b26512089507b2ab71ff744482e5a1bf0f5178f608921d7923982a6815c87e1280b0ecc0a43ccfc7d36bf8f20ce217302a5dad6a4ace730161e920100a0c7ba3f05d88b2760ccb2a64a18e5d35982e1588be07dcbb9adeb056433824bc22517ff3b52cb4ddc56458986cf2a781275a28ca7537a9b2b7687ca441a2281696b7e4382c8642c186c927b2f5722d0e038bd292e0671b29c923469efdc51864ee24a965d0a22e55a15599da2c2030c7976b4bf1ead982e58de65c9302b5fc3fe2bc36c66b76d54b9898252997e5838a4a63e915edf40088184654fe62cc9908531118a12b4efde7624f68481aa58067a357f1ec2fe06400661c560d8fb1c95de34275efcd6d0d40b444e7fce243c39fa85cc1d5849ebe0db8b8d7e8918f0442b173e070e544992fc3b8e440ecf7f6269ef45731d925829b4214df00df29be5ce7c46c9af63712aefa9fd46523976d1ee246d3b8f216037a443600d7214f7b91e09cefe0208187fc1aae5f3c75079da3d9414deeb4928ae8728d7e0d3de730f7f235784feb298847107ec7a32c3c795ba3b17b6a521b444f29205c453e4556b1345189d8f24904a205b3bfd3eed56b0a1b9f79096f0a06bd336ef626e50eb6c6f2ab925a1c817ce5f2894ed22fc6fa1bce6bbbe177aea077f32ccaf71f9232ad50a0a4d80bf9e851b509b6b8a05b2a771b8f60956a2dce708202b98bbd38405833d02710d08f7719d4abb2f090603bc2638499f52b194010ae3a36db025ff79e42706b52ec629f36e7d62b46de139cf39ceff942ef3bc357531677bf982a590367a3fa7fda5e882e34e898dc2fed34d020bd433c2245a6c7ca1f6d365d4f951f28e45d9635e3f2a96d712bd491aebbaf7285190d084514c73b28ca315efd05d5b3925affdf4f10e4055f0670f576911a08e633b85ed1b7f9aea44708ce9d1ad2fdf987a5787d485d0eb027fd9750b33321bcd0ebb2494728035af233c31eb5be93657e7f096d04db86e64f8ebd583bcd3a3f59652315cb3c36f14d991e37187a9f83f5bd21bec167dd8eb63da3737cd335d937cb574bbec80a702782361c79a85befced0657ea06e742c47a692d93f4891fcf7fe2efee26f83c8f4bc32454be4ba9411bbeaf6f0b39f0a5ded4cbc4c97d15ab50e0d4896c64027475fb83c79ae003797305125c079d666722729f2d600286cb5000d77bbfe68bba988053b6821e6ea229e5700ba0d5cc4179e88f7e9a9b6292ef22a89fbefc11fd66e0368e7d1e9c72869aa261084990b2982f0f36bf106d9d581d3034d7f3275ba3c26acd4d7b66c08f175f7ace2d9898c2a3f087637f136865e709d8d3d5832ac84e19cb7400367c7515d119cc3649c40219cb10da1cb43fed504d4fa89b1d90cdb0a74d37f0afecc6e066f4b00475765d7865f6df23a605a274d07ce35e7c70fe45d774916189b1c732ad0cd815c075e4a0896cf8e259681b446cc7d7dde8669e966cf96c83f92c0727b7fb3d7b6b2732effc8f4aaeacd87aca624a9cb7ed1875f6cdeb5095fdf075ec621056d9f5cbecd539b3893d58565a053485ef44d009bb8aee33da2e49d1e6ad1412ed2b5734f76b1f17681a2ccc3d5332366ebd12e3dd8cf1cb307aefd44f3bc6849afeb72de02f255544bdd111c5a1c4749e13f1acccb6050eca711bb514fb039aab7a4d4be939c680733fe5c443301627c702cd14618f83d7fd0e6a21147f0d6f3f8bf3c0d387e6623a4f1c8421db973fe854f160b1170b0d0e4584024ef96bdb9404b04c63a22df325c4d30756cfbe7dda5859203729c6c6ee6344a1b497cdd776a8ce5238c0a1b24608d3a3c5b29f88005b4f2144029224e98ec3259c1447f9858153d7835984a158ab7c153f1ded594d3b3b9b8924bbc4cebc2882fcfd2f401c96c2c7cf92111cd68dd2883998398a1810e9ea540e08c87ec91e9d288140c8c4816f0a7571f7a6c52e60a8ef0cd900fd9499cd50eef41ff002d3ce0d137a14b7baad46e18bdb677380199bdb4e9bacc220e4700b5f755d7b69fe0fe83367fc18407dd9aa6fcc833b653e3fb9cf90d310acea57ca20720cbc35ec1a1d3fd1a6871a364982862756d2e687f538c924112ce082df7f861eec0f39fa3ab45a42f5bf7be9ea2441216dfcdaf9d3552c56c6ed5c0fc8d35230a1ac740cc0fa769826a60a9dbc78318817af82ab59033cbdabe480d9ccd52e951c2c1b49989a79217f5eabe933ce860b1d02fe168d6c94865dcecb42a16e817b2e0dffff554e38587a86ba81dba807cee2287abe1b9023111891a8992f3c1652a4271d656f75e55af2a1f9656362c7c4de00d777edd2f8daa76fa21b7d1482ca0393c50fe3f18a26e20cc23919cb34749b745910682312f3956c1c99f55cd983e7a72e623b0ed2986cfcd167461d01249346ee0ee8e4adf098e9f24cb778685187848172efd167ef33a6ff0b75acd207ed38907053c6f4b633d868c2f5888715302bec4440829427b112594eae23aff0a580876a42a1be67791bd8c50ac932782f47eb4b8f4be4ca01499103890cd64fa32fa55cd45ac667f284e1ceb6a1cec26b3ee5368284b710e1e10ca512cc92359605845d009e82dda7f4e73a8f499754c70bc1aa9689e8a524b46e1e6575576e4137a1c2ecdb7b431236ceade6cbe3b2e925fde02d004b4374d68effdcf0cb99ccf61d42b97b688c552de3b90925ec0fe39400f9a341df5e29adc65a208fa0333e7e18f1b4dbdf9c875d46bd6082f437f8632b3aa2c712de89056adf117b7f03816243d10b852677b35b1a0dfabfd8809345133c1fe59ef32ed53f126aa8211b3431d9cbaf92f411e88a99eac24e570f77530461a7ebc645b0c0d3d0928417cd4d17288a75bb792a7946e8116a2fcd26e67c567bebdedd93295a172e0571f94f705949400d55dd8d80f7dcf34123d3edf4f683b20dc04a59752ca17c04aa4884ab80e3fd7e9f5fedfa65283f3a58ef3d7c10f97b78467c94440670bc8ad09fd0645c2bce00272fc499da84a71b8c176447de46793b21ccc7a575354cb736c95b2fea4bd51837f31b73352e3254ddf03eed9db4aad0e1364f246ef661233407bd8e64198f8bf60d9a313805e5358084d9af0b63998f085daceb24d5b8f36116a48d506d37db06adf11512562a25d9e28894d1636b0fa789b1d734a586e94eca84cbaf51caffbd7b555dc7c02a75c971e6646e34e1de336bbd5d639ede2815f99ae96a617735e4b6e72579a6a88a0bae4e8a412c32e5b355ca63bc94c19dcadd5f89c9df5d52d9f13b1bc06d483e6a1f345cb4067ec7c7b4c0381081888286039155b33a9a7c341b11a9104cdbb0180115b03ea6c427cfdf05e240fb2ab700bc36fc4a765942b90182d02aad61cd05a93739b12d684ff886f6817b7775a28679c4a4a13753f8eec747dbd4e2b318852abb139d393797e07bf56f30a06b96652a3d773ca4e7c5c20449662baefe5a0c47cc74682bb2928a0404f543ca7c19b2f40a9bd11bfbb2d679005712f56bd1975342f7e010f132624ff62a5460ae5331f3515e04ba779b9d109148a13485b96077c1b012467fc1602f458ba96351fa8ee699902aa1adba4e078265a97836a2efcab18658284587333c98f83a50d1052b34a35deae8a03b6ef5836990903561d05d43fcb43bfba857780c5a9224f0c68bdc58b8fabade09d84dfb5469006a438fa1a4e29ed3056960fbd8032a4701a6640ab1c4250d92e4d8aade92158a5ff4f0bf7015f6ffb48209997ffb80e28e2c8a9d62690b2bb3f1dd8964f1c9d297a0878fb1f5e5ab3b4288a0a613f43d3c29ed22e75d4bd25938c6651118fd1f054276174a8b73607ae62848f35c8456de90c3c7edb3f795703523d6291b4e122531bdbe73e0b493a747233eb37c479a4bb47b9d5563046287cf944585c90523dc72e20a8f4f138a07be1ae1f4bfdd16960822fce6b6dbe19867f229279ec924b660ccd12ae405134e8c03a7dad6912bef1ffcdfd3ac5a4de9148e6977945676182fc1423f5fc666d33342f5edba9edc10d9d071925a7bb93fcf8d67765019dcfbc2ab63b92a6f383d0547b1b922e9dc9666f3ccce93c531f55cd6028ad21e8c74624e5e94a87a543886d3771ef15403293d7cc504b496a51f19fe8be870c72ae46b34d5979ac2e8f9348b7707cc38cdc42995f4367da2a8e7c64a9d30a29d8d844122c072dbb4c3bb689ccfeda597e4abe4d14ebb465b18ea3e146c993c58f76ff3f6235c36275fbd0620b2a1eabf1a2b4b92dd884f2d7f7789f340a029d88b0693ada6dd9b1d355f021238632dfd98d330f0244a2aeb27dded137b17395d5e81a1a2f9ed1d115ad6e1e31289ad35a79ac61043fa5b1a03e1302f0a870ed7584f984d0f3ec717e01e755779c11bb69cf5dcb16309187f59636472f357d9eeaac2a91e77f4e6684c12708f8df5c75e101859fca947d97f87133adfb97d26fa882118f07dd2e112f54e65fcd2a4c1944d55369c97cd11a426011077bcec781811120f30824280f3b58ddf67a00cd45e5ce79091c15449b8a265e1542a31e1595c7229b804fcf9b2a743ad8d5e68ecf185007df3d74f6216f0a855748d68f130785bf3a2ee2e75e83c0956a0741126d9781118543ec33f537d9c970df58c5f24080f65bc72edda9cf5a393d83d0bf3000755162d2bc062929ff34d1072fc3d2def88d44c38e5283bdb368af82f64ea5a998788ef25141e33b5f931b816f283efa6ccabb3ca6ff65b7648e31b357c0aee967bb06b3d5a77c6d27779374e69ecc71254a3845f10bdb31834856c9098723f926ab65a40e54bf07c1d8374e5e3fb4e8aff0dc28a39252fa6a05d9877db7b58b2c34a2037aa135159d65a1b8850c3e3a4168e20295e0629a28a3ab4dc537229b3d0469f3bdc18fef40ef7641e8effc7c695de35730839e55ae855b4b41db7032aaae3accc0f8207b249dd211eba3307a8f66dc550fe2f286ee9cf22016e54ffbd956a69d834dde1471d61dfa00be555f8d03cad6121d29b1015759fc030fd753cb44aa5f8a18b2b8ae53b841f7260ddf0450fb290cd8fe1675fa71af48c5479ff466d486005e082b767137574a4dd9df9589f83a8814c4ff60cc8333d25d05a9abc1ac53ce02c38cefab53cdfef3b3c3efa7bb6422b0b2eaaa3f8b2127a1d8ce4e8c3cba84f0b7511c9913c90ca46ea92fe2daab60ab5d32e8bfdfa6c02f88cf5477d53054fbb8c6fde58036fb7230ed2708306c9e64358e2de63559243823186c28b259e3cc45da4a75a0a257e0a785ee83ba9248c42daebb07263615c5e1dac990a52d9fcd859f428adedeb1216f8d882f79136707c31ba0e07d4acda218102a58cc8ace226081d5ef94a4939e3587494d49cae1b04c76b96b9b446b7013e83c1d2a6e35117552e9fcb3e68d5f4a5d3cbbe79138bbc75934d395b8aa857e42493d0968ce19abb57fc5c685bcd1dabeace3d59d2bb9159e24165eb18c389f3c629e1fc84730673b3ada0dc7e14451515cbe4248a546eb721edea4dcac8a90125160d5f059f11c5f61f77f612a2c82d2a89eb6f25b19d68c51ae3e1d44ead7c1ca027f0ed28329634be645932e1ab7c321bf27b8cfaf9aed30f2cbf5ee4478952b2074e4b64cfac3a17618a69de47892e81023b97caf77e33c4db9048dfac1a09b96bef130eb3973332837cfb7a78f7ceffbef0a1fa9fb5c09c4d73747897cec36f1468ee311b8a6a2359c0d4729387e5fba4927e6071fc5aa47eefd0dc3aec1e831e1c9d5e720fceb5b656a61352229a3cb45505af6c47b4978dcbeca765cb383a2d1334c4422182f377b8845851077473f16e18dd869055d3d5b8d3db7b076844deb9a4206ff4fb29760c16020a5fd6831ab8c20c9633167b37dc849758ad92erootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootroottomcat-9.0.85-150200.60.1.src.rpmtomcat-javadoc@    javapackages-filesystemrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.1eПe@ee@e@e)e_>e)1@e 0@e 0@e;eRdld0d?@cc@c@c{h@cQ8@bγbbN@b!b@aaaA@a@a{@azamaamaama`X`Q@`OL@`OL@`3__F@_@___FN_!d^@^^_^@^Y^U @^1s^%@^!^@]҇]Γ@]4@]?]V]@\\\r@\k\j@\Yz\X)@\LK\?\8@\'a\[v[u[@[@[ug@ZZ_:Z!D@Z@YYYY:Y@Y@XZnW@WiW|W'A@WWKV@V2V`VA@UlI@UlI@UlI@UQU hU hTTи@fstrba@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.comricardo.mestre@suse.comfstrba@suse.comfstrba@suse.commichele.bussolotto@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.comfstrba@suse.comfstrba@suse.commichele.bussolotto@suse.comfstrba@suse.comfstrba@suse.commichele.bussolotto@suse.comolaf@aepfle.demichele.bussolotto@suse.comfstrba@suse.commichele.bussolotto@suse.commichele.bussolotto@suse.comwittemar@googlemail.comwittemar@googlemail.comwittemar@googlemail.comamehmood@suse.comamehmood@suse.comwittemar@googlemail.comwittemar@googlemail.comwittemar@googlemail.comamehmood@suse.commalbu@suse.commalbu@suse.commalbu@suse.comjengelh@inai.defstrba@suse.commalbu@suse.comfstrba@suse.commalbu@suse.comjavier@opensuse.orgmalbu@suse.commalbu@suse.comfstrba@suse.commalbu@suse.comfstrba@suse.commalbu@suse.commalbu@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comdimstar@opensuse.orgmalbu@suse.commalbu@suse.comfstrba@suse.commalbu@suse.commalbu@suse.commalbu@suse.commalbu@suse.comfstrba@suse.commalbu@suse.commalbu@suse.comecsos@opensuse.orgfstrba@suse.comsean@suspend.netmalbu@suse.comecsos@opensuse.orgmalbu@suse.commalbu@suse.commalbu@suse.defstrba@suse.commalbu@suse.comrbrown@suse.commalbu@suse.comecsos@opensuse.orgfstrba@suse.comecsos@opensuse.orgdziolkowski@suse.commalbu@suse.comastieger@suse.comtchvatal@suse.commalbu@suse.commalbu@suse.comdmacvicar@suse.dejcnengel@gmail.comtchvatal@suse.comdmacvicar@suse.dedmacvicar@suse.detchvatal@suse.comdmacvicar@suse.detchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comwittemar@googlemail.combmaryniuk@suse.com- Link ecj.jar into the install instead of copying it- rpm 4.19 requires dependencies on tomcat user and group (bsc#1219530)- Fixed CVEs: * CVE-2024-22029: run xsltproc as tomcat group (bsc#1219208)- Update to Tomcat 9.0.85 * Fixed CVEs: + CVE-2023-46589: Apache Tomcat: HTTP request smuggling due to incorrect headers parsing (bsc#1217649) * Catalina + Update: 68378: Align extension to MIME type mappings in the global web.xml with those in httpd by adding application/vnd.geogebra.slides for ggs, text/javascript for mjs and audio/ogg for opus. (markt) + Fix: Background processes should not be run concurrently with lifecycle operations of a container. (remm) + Fix: Correct unintended escaping of XML in some WebDAV responses. The XML list of support locks when provided in response to a PROPFIND request was incorrectly XML escaped. (markt) + Fix: 68227: Ensure that AsyncListener.onComplete() is called if AsyncListener.onError() calls AsyncContext.dispatch(). (markt) + Fix: 68228: Use a 408 status code if a read timeout occurs during HTTP request processing. Includes a test case based on code provided by adwsingh. (markt) + Fix: 67667: TLSCertificateReloadListener prints unreadable rendering of X509Certificate#getNotAfter(). (michaelo) + Update: The status servlet included in the manager webapp can now output statistics as JSON, using the JSON=true URL parameter. (remm) + Update: Optionally allow ServiceBindingPropertySource to trim a trailing newline from a file containing a property-value. (schultz) + Fix: 67793: Ensure the original session timeout is restored after FORM authentication if the user refreshes a page during the FORM authentication process. Based on a suggestion by Mircea Butmalai. (markt) + Update: 67926: PEMFile prints unidentifiable string representation of ASN.1 OIDs. (michaelo) + Fix: 66875: Ensure that setting the request attribute jakarta.servlet.error.exception is not sufficient to trigger error handling for the current request and response. (markt) + Fix: 68054: Avoid some file canonicalization calls introduced by the fix for 65433. (remm) + Fix: 68089: Improve performance of request attribute access for ApplicationHttpRequest and ApplicationRequest. (markt) + Fix: Use a 400 status code to report an error due to a bad request (e.g. an invalid trailer header) rather than a 500 status code. (markt) + Fix: Ensure that an IOException during the reading of the request triggers always error handling, regardless of whether the application swallows the exception. (markt) * Coyote + Fix: Refactor the VirtualThreadExecutor so that it can be used by the NIO2 connector which was using platform threads even when configured to use virtual threads. (markt) + Fix: Correct a regression in the fix for 67675 that broke TLS key file parsing for PKCS#8 format keys that do not specify an explicit pseudo-random function and rely on the default. This typically affects keys generated by OpenSSL 1.0.2. (markt) + Fix: Allow multiple operations with the same name on introspected mbeans, fixing a regression caused by the introduction of a second addSslHostConfig method. (remm) + Fix: Relax the check that the HTTP Host header is consistent with the host used in the request line, if any, to make the check case insensitive since host names are case insensitive. (markt) + Add: 68348: Add support for the partitioned attribute for cookies. (markt) + Add: 66670: Add SSLHostConfig#certificateKeyPasswordFile and SSLHostConfig#certificateKeystorePasswordFile. (michaelo) + Add: When calling SSLHostConfigCertificate.setCertificateKeystore(ks), automatically call setCertificateKeystoreType(ks.getType()). (markt) + Fix: 67628: Clarify how the ciphers attribute of the SSLHostConfig is used. (markt) + Fix: 67666: Ensure TLS connectors using PEM files either work with the TLSCertificateReloadListener or, in the rare case that they do not, log a warning on Connector start. (markt) + Fix: 67675: Support a wider range of KDF and ciphers for PEM files than the combinations supported by the JVM by default. Specifically, support the OpenSSL default of HmacSHA256 and DES-EDE3-CBC. (markt) + Fix: 67927: Reloading TLS configuration can cause the Connector to refuse new connections or the JVM to crash. (markt) + Fix: 67934: If both Tomcat Native 1.2.x and 2.0.x are available, prefer 1.2.x since it supports the APR/Native connector whereas 2.0.x does not. (markt) + Fix: 67938: Correct handling of large TLS client hello messages that were causing the TLS handshake to fail. (markt) + Fix: 68026: Convert selected MessageByte values to String when first accessed to speed up subsequent accesses and reduce garbage collection. (markt) * Jasper + Code: 68119: Refactor the CompositeELResolver to improve performance during type conversion operations. (markt) + Fix: 68068: Performance improvement for EL. Based on a suggestion by John Engebretson. (markt) * Web Applications + Fix: 68035: Additional fix to the Manager application to enable the deployment of a web application located in a Host's appBase where the web application is specified by a bare (no path) WAR or directory name as shown in the documentation. (markt) + Fix: Examples. Improve the error handling so snakes associated with a user that drops from the network are removed from the game. (markt) + Fix: 68035: Correct a regression in the fix for 56248 that prevented deployment via the Manager of a WAR or directory that was already present in the appBase or a context file that was already present in the xmlBase. (markt) * Other + Update: Update Checkstyle to 10.12.7. (markt) + Update: Update SpotBugs to 4.8.3. (markt) + Add: Improvements to French translations. (remm) + Add: Improvements to Japanese translations by tak7iji. (markt) + Update: Update UnboundID to 6.0.11. (markt) + Update: Update Checkstyle to 10.12.5. (markt) + Update: Update SpotBugs to 4.8.2. (markt) + Update: Update Derby to 10.17.1. (markt) + Add: Improvements to French translations. (remm) + Add: Improvements to Japanese translations by tak7iji. (markt) + Add: Improvements to Brazilian Portuguese translations by John William Vicente. (markt) + Add: Improvements to Russian translations by usmazat and remm. (markt) + Add: 67538: Make use of Ant's task to enfore the mininum Java build version. (michaelo) + Update: Update Checkstyle to 10.12.4. (markt) + Update: Update JaCoCo to 0.8.11. (markt) + Update: Update SpotBugs to 4.8.0. (markt) + Update: Update BND to 7.0.0. (markt) + Update: The minimum Java version required to build Tomcat has been raised to Java 17. (markt) - Added patches: * tomcat-9.0-build-with-java-11.patch- change server.xml during %post instead of %posttrans- Fix server.xml permission (bsc#1217768, bsc#1217402) - remove serverxmltool and use xsltproc- replace prep setup and patches macro with autosetup- Update to Tomcat 9.0.82 * Fixed CVEs: + CVE-2023-45648: Improve trailer header parsing (bsc#1216118) + CVE-2023-42794: FileUpload: remove tmp files to avoid DoS on Windows (bsc#1216120) + CVE-2023-42795: Improve handling of failures during recycle() methods (bsc#1216119) * Catalina + Add: 65770: Provide a lifecycle listener that will automatically reload TLS configurations a set time before the certificate is due to expire. This is intended to be used with third-party tools that regularly renew TLS certificates. + Fix: Fix handling of an error reading a context descriptor on deployment. + Fix: Fix rewrite rule qsd (query string discard) being ignored if qsa was also use, while it should instead take precedence. + Fix: 67472: Send fewer CORS-related headers when CORS is not actually being engaged. + Add: Improve handling of failures within recycle() methods. * Coyote + Fix: 67670: Fix regression with HTTP compression after code refactoring. + Fix: 67198: Ensure that the AJP connector attribute tomcatAuthorization takes precedence over the tomcatAuthentication attribute when processing an auth_type attribute received from a proxy server. + Fix: 67235: Fix a NullPointerException when an AsyncListener handles an error with a dispatch rather than a complete. + Fix: When an error occurs during asynchronous processing, ensure that the error handling process is only triggered once per asynchronous cycle. + Fix: Fix logic issue trying to match no argument method in IntropectionUtil. + Fix: Improve thread safety around readNotify and writeNotify in the NIO2 endpoint. + Fix: Avoid rare thread safety issue accessing message digest map. + Fix: Improve statistics collection for upgraded connections under load. + Fix: Align validation of HTTP trailer fields with standard fields. + Fix: Improvements to HTTP/2 overhead protection (bsc#1216182, CVE-2023-44487) * jdbc-pool + Fix: 67664: Correct a regression in the clean-up of unnecessary use of fully qualified class names in 9.0.81 that broke the jdbc-pool. * Jasper + Fix: 67080: Improve performance of EL expressions in JSPs that use implicit objects- Update to Tomcat 9.0.80 * Catalina + Add RateLimitFilter which can be used to mitigate DoS and Brute Force attacks + Move the management of the utility executor from the init()/destroy() methods of components to the start()/stop() methods. + Add org.apache.catalina.core.StandardVirtualThreadExecutor, a virtual thread based executor that may be used with one or more Connectors to process requests received by those Connectors using virtual threads. This Executor requires a minimum Java version of Java 21. + 66513: Add a per session Semaphore to the PersistentValve that ensures that, within a single Tomcat instance, there is no more than one concurrent request per session. Also expand the debug logging to include whether a request bypasses the Valve and the reason if a request fails to obtain the per session Semaphore. + 66609: Ensure that the default servlet correctly escapes file names in directory listings when using XML output. + 66618: Add a numeric last modified field to the XML directory listings produced by the default servlet to enable sorting in the XSLT. + 66621: Attempts to lock a collection with WebDAV may incorrectly fail if a child collection has an expired lock. + 66622: Deprecate the xssProtectionEnabled setting from the HttpHeaderSecurityFilter and change the default value to false as support for the associated HTTP header has been removed from all major browsers. + 59232: Add org.apache.catalina.core.ContextNamingInfoListener, a listener which creates context naming information environment entries. + 66665: Add org.apache.catalina.core.PropertiesRoleMappingListener, a listener which populates the context's role mapping from a properties file. + Fix an edge case where intra-web application symlinks would be followed if the web applications were deliberately crafted to allow it even when allowLinking was set to false. + Add utility config file resource lookup on Context to allow looking up resources from the webapp (prefixed with webapp:) and make the resource lookup API more visible. + Fix potential database connection leaks in DataSourceUserDatabase identified by Coverity Scan. + Make parsing of ExtendedAccessLogValve patterns more robust. + Fix failure trying to persist configuration for an internal credential handler. + 66680: When serializing a session during the session presistence process, do not log a warning that null Principals are not serializable. + Catch NamingException in JNDIRealm#getPrincipal. It is used in Java up to 17 to signal closed connections. + 66822: Use the same naming format in log messages for Connector instances as the associated ProtocolHandler instance. + The parts count should also lower the actual maxParameterCount used for parsing parameters if parts are parsed first. + If an application or library sets both a non-500 error code and the javax.servlet.error.exception request attribute, use the provided error code during error page processing rather than assuming an error code of 500. + Update code comments and Tomcat output to use MiB for 1024 * 1024 bytes and KiB for 1024 bytes rather than MB and kB. + Avoid protocol relative redirects in FORM authentication (CVE-2023-41080, bsc#1214666). * Coyote + Update the HTTP/2 implementation to use the prioritization scheme defined in RFC 9218 rather than the one defined in RFC 7540. + 66602: not sending WINDOW_UPDATE when dataLength is ZERO on call SwallowedDataFramePayload. + 66627: Restore the documented behaviour of MessageBytes.getType() that it returns the type of the original content rather than reflecting the most recent conversion. + 66635: Correct certificate logging on start-up so it differentiates between keystore based keys/certificates and PEM file based keys/certificates and logs the relevant information for each. + Refactor blocking reads and writes for the NIO connector to remove code paths that could allow a notification from the Poller to be missed resuting in a timeout rather than the expected read or write. + Refactor waiting for an HTTP/2 stream or connection window update to handle spurious wake-ups during the wait. + Correct a regression introduced in 9.0.78 and use the correct constant when constructing the default value for the certificateKeystoreFile attribute of an SSLHostConfigCertificate instance. + Refactor HTTP/2 implementation to reduce pinning when using virtual threads. + Pass through ciphers referring to an OpenSSL profile, such as PROFILE=SYSTEM instead of producing an error trying to parse it. + 66841: Ensure that AsyncListener.onError() is called after an error during asynchronous processing with HTTP/2. + 66842: When using asynchronous I/O (the default for NIO and NIO2), include DATA frames when calculating the HTTP/2 overhead count to ensure that connections are not prematurely terminated. + Correct a race condition that could cause spurious RST messages to be sent after the response had been written to an HTTP/2 stream. * WebSocket + 66548: Expand the validation of the value of the Sec-Websocket-Key header in the HTTP upgrade request that initiates a WebSocket connection. The value is not decoded but it is checked for the correct length and that only valid characters from the base64 alphabet are used. + Improve handling of error conditions for the WebSocket server, particularly during Tomcat shutdown. + Correct a regression in the fix for 66574 that meant the WebSocket session could return false for onOpen() before the onClose() event had been completed. + 66681: Fix a NullPointerException when flushing batched messages with compression enabled using permessage-deflate. * Web applications + Documentation. Expand the security guidance to cover the embedded use case and add notes on the uses made of the java.io.tmpdir system property. + 66662: Documentation. Fix a typo in the name of the algorithms attribute in the configuration section for the Digest authentication value. + Documentation. Update documentation to use MiB for 1024 * 1024 bytes and KiB for 1024 bytes rather than MB and kB. * jdbc-pool + Fix the releaseIdleCounter does not increment when testAllIdle releases them. + Fix the ConnectionState state will be inconsistent with actual state on the connection when an exception occurs while writing. * Other + Update to Commons Daemon 1.3.4. + Improvements to French translations. + Update Checkstyle to 10.12.0. + Update the packaged version of the Apache Tomcat Native Library to 1.2.37 to pick up the Windows binaries built with with OpenSSL 1.1.1u. + Include the Windows specific binary distributions in the files uploaded to Maven Central. + Improvements to French translations. + Improvements to Japanese translations. + Update UnboundID to 6.0.9. + Update Checkstyle to 10.12.1. + Update BND to 6.4.1. + Update JSign to 5.0. + Correct properties for JSign dependency. + Align documentation for maxParameterCount to match hard-coded defaults. + Update NSIS to 3.0.9. + Update Checkstyle to 10.12.2. + Improvements to French translations. + Improvements to Japanese translations. + 66829: Fix quoting so users can use the _RUNJAVA environment variable as intended on Windows when the path to the Java executable contains spaces. + Update Tomcat Native to 1.2.38 to pick up Windows binaries built with OpenSSL 1.1.1v. + Improvements to Chinese translations. + Improvements to French translations. + Improvements to Japanese translations - Removed patch: * tomcat-9.0.75-CVE-2023-41080.patch + integrated in this version- Fixed CVEs: * CVE-2023-41080: Avoid protocol relative redirects in FORM authentication. (bsc#1214666) - Added patches: * tomcat-9.0.75-CVE-2023-41080.patch- Modified patch: * tomcat-9.0-osgi-build.patch + make it more robust to change in number of artifacts in bnd + do not enumerate jars, just take all jars from the aqute-bnd directory into the classpath- Require(pre) shadow because groupadd is needed early- Update to Tomcat 9.0.75. * See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.75_(markt) * Fixes: + bsc#1211608, CVE-2023-28709 + bsc#1208513, CVE-2023-24998 (previous incomplete fix) - Remove patches: * tomcat-9.0-CVE-2021-30640.patch * tomcat-9.0-CVE-2021-33037.patch * tomcat-9.0-CVE-2021-41079.patch * tomcat-9.0-CVE-2022-23181.patch * tomcat-9.0-NPE-JNDIRealm.patch * tomcat-9.0-hardening_getResources.patch * tomcat-9.0.43-CVE-2021-43980.patch * tomcat-9.0.43-CVE-2022-42252.patch * tomcat-9.0.43-CVE-2022-45143.patch * tomcat-9.0.43-CVE-2023-24998.patch * tomcat-9.0.43-CVE-2023-28708.patch + integrated in this version * tomcat-9.0.43-java8compat.patch + problem with Java 8 compatibility solved in this version - Modified patch: * tomcat-9.0.31-secretRequired-default.patch - > tomcat-9.0.75-secretRequired-default.patch + rediffed to changed context * tomcat-9.0-javadoc.patch + drop integrated hunks * tomcat-9.0-osgi-build.patch + fix to work with current version - Added patch: * tomcat-9.0-jdt.patch + fix build against our ecj- Fixed CVEs: * CVE-2022-45143: JsonErrorReportValve: add escape for type, message or description (bsc#1206840) - Added patches: * tomcat-9.0.43-CVE-2022-45143.patch- Fixed CVEs: * CVE-2023-28708: tomcat: not including the secure attribute causes information disclosure (bsc#1209622) - Added patches: * tomcat-9.0.43-CVE-2023-28708.patch- Fixed CVEs: * CVE-2023-24998: tomcat,tomcat6: FileUpload DoS with excessive parts (bsc#1208513) - Added patches: * tomcat-9.0.43-CVE-2023-24998.patch- set logrotate for localhost.log, manager.log, host-manager.log and localhost_access_log.txt - use logrotate for catalina.out * update tomcat-serverxml-tool and spec to configure server.xml - Added patch: * tomcat-9.0-logrotate_everything.patch * tomcat-serverxml-tool.tar.gz - Removed: * tomcat-serverxml-tool-1.0.tar.gz- Use catalina.out for logging (bsc#1205647) - Added patches: * tomcat-9.0-fix_catalina.patch- Fixed CVEs: * CVE-2022-42252: reject invalid content-length requests. (bsc#1204918) - Added patches: * tomcat-9.0.43-CVE-2022-42252.patch- Fixed CVEs: * CVE-2021-43980: Improve the recycling of Processor objects to make it more robust. (bsc#1203868) - Added patches: * tomcat-9.0.43-CVE-2021-43980.patch- Do not hardcode /usr/libexec but use %%_libexecdir during the build * Fixes for platforms, where /usr/libexec and %%_libexecdir are different- Fix bsc#1201081 by building with release=8 all files that can be built this way. The one file remaining, build it with source=8 and target=8 - Modified patch: * tomcat-9.0.43-java8compat.patch + Do not cast ByteBuffer to Buffer to call the Java 8 compatible methods. Build with release=8 instead- Security hardening. Deprecate getResources() and always return null. (bsc#1198136) - Added patch: tomcat-9.0-hardening_getResources.patch- Remove dependency on log4j/reload4j completely (bsc#1196137)- Do not build against the log4j12 packages, use the new reload4j- Fixed CVEs: * CVE-2022-23181: Make calculation of session storage location more robust (bsc#1195255) - Added patches: * tomcat-9.0-CVE-2022-23181.patch- remove instance units from post scripts, they can not be reloaded- Fix NPE in JNDIRealm, when userRoleAttribute is not set (bsc#1193569) - Added patch: * tomcat-9.0-NPE-JNDIRealm.patch- Modified patch: * tomcat-9.0-osgi-build.patch + account for biz.aQute.bnd.ant artifact in aqute-bnd >= 5.2.0- Fixed CVEs: * CVE-2021-30640: Escape parameters in JNDI Realm queries (bsc#1188279) * CVE-2021-33037: Process T-E header from both HTTP 1.0 and HTTP 1.1. clients (bsc#1188278) - Added patches: * tomcat-9.0-CVE-2021-30640.patch * tomcat-9.0-CVE-2021-33037.patch- Fixed CVEs: * CVE-2021-41079: Validate incoming TLS packet (bsc#1190558) - Added patches: * tomcat-9.0-CVE-2021-41079.patch- Update to Tomcat 9.0.43. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.43_(markt) - Removed Patches because fixed upstream now: * tomcat-9.0-CVE-2021-25122.patch * tomcat-9.0-CVE-2021-25329.patch - Rebased patch: tomcat-9.0.39-java8compat.patch -> tomcat-9.0.43-java8compat.patch- Update to Tomcat 9.0.41. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.41_(markt)- Update to Tomcat 9.0.40. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.40_(markt) - Removed Patches because fixed upstream now: * tomcat-9.0-CVE-2020-17527.patch * tomcat-9.0-CVE-2021-24122.patch- Fixed CVEs: * CVE-2021-25122: Apache Tomcat h2c request mix-up (bsc#1182912) * CVE-2021-25329: Complete fix for CVE-2020-9484 (bsc#1182909) - Added patches: * tomcat-9.0-CVE-2021-25122.patch * tomcat-9.0-CVE-2021-25329.patch- Log if file access is blocked due to symlinks: CVE-2021-24122 (bsc#1180947) - Added patch: * tomcat-9.0-CVE-2021-24122.patch- Update to Tomcat 9.0.39. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.39_(markt) - Rebased patches: * tomcat-9.0.38-java8compat.patch -> tomcat-9.0.39-java8compat.patch- Update to Tomcat 9.0.38. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.38_(markt) - Rebased patches: * tomcat-9.0.37-java8compat.patch -> tomcat-9.0.38-java8compat.patch - Removed tomcat-9.0-CVE-2020-13943.patch because that fix is upstream now- Update to Tomcat 9.0.37. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.37_(markt) - Fixed CVEs: * CVE-2020-13934 (bsc#1174121) * CVE-2020-13935 (bsc#1174117) - Rebased patches: * tomcat-9.0-osgi-build.patch * tomcat-9.0.31-java8compat.patch -> tomcat-9.0.37-java8compat.patch- Fix HTTP/2 request header mix-up: CVE-2020-17527 (bsc#1179602) - Added patch: * tomcat-9.0-CVE-2020-17527.patch- Add source url for tomcat-serverxml-tool - Fix typo in tomcat-webapps %postun that caused /examples context to remain in server.xml when package was removed - Remove tomcat-9.0.init and /usr/lib/tmpfiles.d/tomcat.conf from package. They're not used anymore becuse of systemd (bsc#1178396)- Fix tomcat-servlet-4_0-api package alternatives to use /usr/share/java/servlet.jar instead of /usr/share/java/tomcat-servlet.jar. Keep /usr/share/java/tomcat-servlet.jar symlink for compatibility. (bsc#1092163) - Change default file ownership in tomcat-webapps from tomcat:tomcat to root:tomcat- Fix CVE-2020-13943 (bsc#1177582) - Added patch: * tomcat-9.0-CVE-2020-13943.patch - Change /usr/lib/tomcat to /usr/libexec/tomcat in startup scripts (bsc#1177601)- Replace old specfile constructs. Remove support for SUSE 11.x. - Drop %systemd_requires, which is considered a no-op. - Trim redundant license mention from description. - Make documentation noarch. - Do not suppress errors from useradd.- Avoid hardcoding /usr/lib as libexecdir- Don't give write permissions for the tomcat group on files and directories where it's not needed (bsc#1172562) - Change tomcat.pid location from /var/run to /run (bsc#1173103) - Use the /sbin/nologin shell when creating the tomcat user - Use %tmpfiles_create macro in %post instead of calling systemd-tmpfiles directly- Update to Tomcat 9.0.36. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.36_(markt) - Fixed CVEs: CVE-2020-11996 (bsc#1173389)- Update to Tomcat 9.0.35. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.35_(markt) - Fixed CVEs: - CVE-2020-9484 (bsc#1171928) - Rebased patches: * tomcat-9.0-javadoc.patch * tomcat-9.0-osgi-build.patch * tomcat-9.0.31-java8compat.patch- Update to Tomcat 9.0.34. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.34_(markt) - Notable changes: * Add support for default values when using ${...} property replacement in configuration files. Based on a pull request provided by Bernd Bohmann. * When configuring an HTTP Connector, warn if the encoding specified for URIEncoding is not a superset of US-ASCII as required by RFC 7230. * Replace the system property org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH with the Connector attribute encodedSolidusHandling that adds an additional option to pass the %2f sequence through to the application without decoding it in addition to rejecting such sequences and decoding such sequences.- Update to Tomcat 9.0.33. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.33_(markt) - Notable fix: corrected a regression in the improvements to HTTP header parsing (bsc#1167438) - Rebased patches: * tomcat-9.0-javadoc.patch * tomcat-9.0-osgi-build.patch * tomcat-9.0.31-java8compat.patch- Change default value of AJP connector secretRequired to false - Added patch: * tomcat-9.0.31-secretRequired-default.patch- Update to Tomcat 9.0.31. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.30_(markt) - Fixed CVEs: * CVE-2019-17569 (bsc#1164825) * CVE-2020-1935 (bsc#1164860) * CVE-2020-1938 (bsc#1164692) - Modified patch * tomcat-9.0.30-java8compat.patch - > tomcat-9.0.31-java8compat.patch + Adapt to changed context- Modified patch: * tomcat-9.0.30-java8compat.patch + add missing casts (bsc#1162081)- Change back the build to build with any Java >= 1.8 - Added patch: * tomcat-9.0.30-java8compat.patch + Cast java.nio.ByteBuffer and java.nio.CharBuffer to java.nio.Buffer in order to avoid calling Java 9+ APIs (functions with co-variant return types) - Renamed patch: * tomcat-9.0-disable-osgi-build.patch - > tomcat-9.0-osgi-build.patch + Do not disable, but fix OSGi build since we have now aqute-bnd- Change build to always use Java 1.8 (bsc#1161025).- Update to Tomcat 9.0.30. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.30_(markt) - Fixed CVEs: - CVE-2019-0221 (bsc#1136085) - CVE-2019-10072 (bsc#1139924) - CVE-2019-12418 (bsc#1159723) - CVE-2019-17563 (bsc#1159729) - Removed patch: * tomcat-9.0-JDTCompiler-java.patch + It was not applied- Update to Tomcat 9.0.27. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.27_(markt) - Uset aqute-bnd to generate OSGi manifest, since we have that package now in openSUSE:Factory - Removed patch: * tomcat-9.0-disable-osgi-build.patch + not needed- Add maven pom files for tomcat-jni and tomcat-jaspic-api- Distribute the pom file also for tomcat-util-scan artifact- Build against compatibility log4j12 package- Adapt to the new ecj directory layout- BuildRequire pkgconfig(systemd) instead of systemd: allow OBS to shortcut the build queues by allowing usage of systemd-mini- Update to Tomcat 9.0.20. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.20_(markt) - increase maximum number of threads and open files for tomcat (bsc#1111966)- Update to Tomcat 9.0.19. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.19_(markt) Notable packaging changes: - File /usr/share/java/tomcat/catalina-jmx-remote.jar was removed. The classes contained in this jar were merged into /usr/share/java/tomcat/catalina.jar. - Fixed CVEs: - CVE-2019-0199 (bsc#1131055) - Rebased patch: - tomcat-9.0-JDTCompiler-java.patch - tomcat-9.0-javadoc.patch- Build classpath directly with the geronimo jars instead of with symlinks to them- Don't overwrite changes made to server.xml contexts when updating bundled webapps.- Set javac target to 1.8 when building docs samples and serverxmltool- Move webapps bundled with Tomcat to /usr/share/tomcat/tomcat-webapps (bsc#1092341). Affected packages: - tomcat-webapps - tomcat-admin-webapps - tomcat-docs-webapp - Remove %doc directive from tomcat-docs-webapps files section so that zypper installs files even if rpm.install.excludedocs is set to yes.- Require Java 1.8 or later (bsc#1123407)- Clean up OSGi manifest injection - Put embed maven metadata into embed subpackage - Use the .mfiles* lists generated by %%add_maven_depmap macro- Fix tomcat-tool-wrapper classpath error (bsc#1120745)- Fix tomcat-digest classpath error (bsc#1120745)- Update to Tomcat 9.0.14. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.14_(markt)- Add pom files for tomcat-jdbc and tomcat-dbcp - Add org.eclipse.jetty.orbit* aliases to correspondant artifacts- Update to Tomcat 9.0.13. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.13_(markt)- Update to Tomcat 9.0.12. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.12_(markt) - Fixed CVEs: - CVE-2018-11784 (bsc#1110850) - Rebased patches: - tomcat-9.0-disable-osgi-build.patch - tomcat-9.0-javadoc.patch - tomcat-9.0-sle.catalina.policy.patch - tomcat-9.0-tomcat-users-webapp.patch- Declare following files to config(noreplace) to prevent override access rights: - host-manager/META-INF/context.xml - manager/META-INF/context.xml- Empty tomcat-9.0.sysconfig to avoid overwriting of customer's configuration during update (bsc#1067720)- Update to Tomcat 9.0.10. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.10_(markt) - Fixed CVEs: - CVE-2018-1336 (bsc#1102400) - CVE-2018-8014 (bsc#1093697) - CVE-2018-8034 (bsc#1102379) - CVE-2018-8037 (bsc#1102410) - Rebased patch tomcat-9.0-JDTCompiler-java.patch - Added patch tomcat-9.0-disable-osgi-build.patch to disable adding OSGi metadata to JAR files- Update to Tomcat 9.0.5. See changelog at http://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.5_(markt)- Modified patch: * tomcat-9.0-javadoc.patch + Don't append to javadoc --add-modules since we are building with source=8 + Avoid accessing Internet URLs from build environment- Update to Tomcat 9.0.2: * Major update for tomcat8 from tomcat9 * For full changelog please read upstream changes at: + http://tomcat.apache.org/tomcat-9.0-doc/changelog.html * Rename all tomcat-8.0-* files to tomcat-9.0-* - Changed patches: * Deleted: tomcat-8.0-bootstrap-MANIFEST.MF.patch * Deleted: tomcat-8.0-sle.catalina.policy.patch * Deleted: tomcat-8.0-tomcat-users-webapp.patch * Deleted: tomcat-8.0.33-JDTCompiler-java.patch * Deleted: tomcat-8.0.44-javadoc.patch * Deleted: tomcat-8.0.9-property-build.windows.patch * Added: tomcat-9.0-JDTCompiler-java.patch * Added: tomcat-9.0-bootstrap-MANIFEST.MF.patch * Added: tomcat-9.0-javadoc.patch * Added: tomcat-9.0-sle.catalina.policy.patch * Added: tomcat-9.0-tomcat-users-webapp.patch - Renamed subpackage tomcat-3_1-api to tomcat-4_0-api to reflect the new Servlet API version. - Commented out JAVA_HOME in /etc/tomcat/tomcat.conf - Added "tomcat-" prefix to lib symlinks under /usr/share/java to avoid file conflicts with servletapi5 and geronimo-specs - Fixed wrong %ghost file paths for alternatives symlinks- Replace references to /var/adm/fillup-templates with new %_fillupdir macro (boo#1069468)- Build with JDK 8 to fix runtime errors when running with JDK 7 and 8 - Fix tomcat-digest classpath error (bsc#977410) - Fix packaged /etc/alternatives symlinks for api libs that caused rpm -V to report link mismatch (bsc#1019016)- update to 8.0.47 http://tomcat.apache.org/tomcat-8.0-doc/changelog.html * Fixed CVE: - CVE-2017-12617 - rebase tomcat-8.0-sle.catalina.policy.patch- Added patch: * tomcat-8.0.44-javadoc.patch - generate documentation with the same source level as class files - fixes build with jdk9- Version update to 8.0.44: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html * Fixed CVE: - CVE-2017-5664 (bsc#1042910)- New build dependency: javapackages-local- Version update to 8.0.43: * Another bugfix release, for full details see: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html * Fixed CVEs: - CVE-2017-5647 (bnc#1033448) - CVE-2017-5648 (bnc#1033447) - CVE-2016-8745 - Renamed and rebased patches: * tomcat-7.0-sle.catalina.policy.patch -> tomcat-8.0-sle.catalina.policy.patch - Enable optional setenv.sh script. See section "(3.4) Using the "setenv" script (optional, recommended)" in http://tomcat.apache.org/tomcat-8.0-doc/RUNNING.txt (bnc#1002662) - Fix file conflicts when upgrading from SLES 12 to SLES 12 SP1 (bnc#1023412). Added explicit obsoletes for tomcat-el-2_2-api, tomcat-jsp-2_2-api, tomcat-servlet-3_0-api- update to 8.0.39: (boo#1003911) * Improve handling of I/O errors with async processing * Fail earlier on invalid HTTP request - includes changes from 8.0.38: * Refactoring the non-container thread Async complete()/dispatch() handling to remove the possibility of deadlock * Improved UTF-8 handling for the RewriteValve - includes changes from 8.0.37: * Treat paths used to obtain a request dispatcher as encoded (configurable) * Various jdbc-pool fixes - drop tomcat-8.0.36-jar-scanner-loop.patch, upstream- Switch to commons-dbcp2 fate#321029- Backport fix for inifinite loop in the jar scanner for 8.0.36. (bnc#993862) Added: tomcat-8.0.36-jar-scanner-loop.patch- Version update to 8.0.36: * Another bugfix release for the 8.0 series. Full details: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.36_(markt) - CVE fixed by the version update: - CVE-2016-3092 (bnc#986359) - Fixed a deployment error in the examples webapp by changing the context.xml format to the new one introduced by Tomcat 8. See http://tomcat.apache.org/migration-8.html#Web_application_resources- fix maven fragments paths to build in multiple distribution versions- Version update to 8.0.33: * Another bugfix release for 8.0 series, full details: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.33_(markt) - Rebase tomcat-8.0-tomcat-users-webapp.patch - Rebase tomcat-7.0.53-JDTCompiler-java.patch to tomcat-8.0.33-JDTCompiler-java.patch- Fix fixme for the prereq preamble value - It seems systemd prints error on adding the @ services to macros so do not do that- package was partly merged with the scripts used in the Fedora distribution - support running multiple tomcat instances on the same server (fate#317783) - add catalina-jmx-remote.jar (fate#318403) - remove sysvinit support: systemd is required- update changes file for CVE information - Fixed CVEs: - CVE-2015-5346 (bnc#967814) in 8.0.32 - CVE-2015-5351 (bnc#967812) in 8.0.32 - CVE-2016-0706 (bnc#967815) in 8.0.32 - CVE-2016-0714 (bnc#967964) in 8.0.32 - CVE-2016-0763 (bnc#967966) in 8.0.32 - CVE-2015-5345 (bnc#967965) in 8.0.30 - CVE-2015-5174 (bnc#967967) in 8.0.27- Version update to 8.0.32: * Another bugfix release for 8.0 series, full details: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.32_(markt) - Rebase patch: * tomcat-8.0.9-property-build.windows.patch- update to Tomcat 8.0.28 * Multiple fixes, read upstream changelog at: https://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.28_(markt)- Some whitespace cleanups- Remove pointless conflicts on provide/obsolete symbols- Version bump to 8.0.23 fate#318913: * Multiple testfixes all around, read upstream changelog at: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.23_(markt)- Fix previous commit. Fix one rpmlint warning- Drop gpg verification from spec, it is done by obs- Fix build with new jpackage-tools- update to Tomcat 8.0.18: * Major update for tomcat8 from tomcat7 * For full changelog please read upstream changes at: + http://tomcat.apache.org/tomcat-8.0-doc/changelog.html * Rename all tomcat-7.0-* files to tomcat-8.0-* * Update keyring file - Update windows patch to apply again: * Deleted: tomcat-7.0.52-property-build.windows.patch * Added: tomcat-8.0.9-property-build.windows.patch * Added:tomcat-8.0-tomcat-users-webapp.patch * Deleted: tomcat-7.0-tomcat-users-webapp.patch * Added: tomcat-8.0-bootstrap-MANIFEST.MF.patch * Deleted: tomcat-7.0-bootstrap-MANIFEST.MF.patch- Version 1.1.30 or higher is required for APR listener (bnc#914725)h01-ch2c 1708337420  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./09.0.85-150200.60.1          !!!!!!!!!!!!!!!!!!!!!!!!!!!! """"""""" ########### $$$$$$$$$$$$$$$ %%%%%%%%%%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ''''''''''''''''''''''''''''''''''''''''' (((((((((((((((((((((())))))))))))))))))********************************))(++++++++++(,,,(-------------------............--(((/////////(0000000000001111111022222222200(333333333 44444444444444444 5555555555555555555555555555555 6666666666666666666666666666666666666666666666666666666666666666666677777777777777777777777777777 888888888888888888888888888888889999 ::::::::::::::::::::::::::::;;;;;;;;;;;:<<<<<<<<<<<<<<<============<<<>>>>>>>>>>>:???????????:: @@@@@@AAAAAAAAAAAAAAAA@@@BBBBB@CCCCCCCC DDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFDGGGGGGGGGGGGGGGGGDHHHHDDDIIIIIIIIIIIIIIIIIIDJJJJDKKKKKKKKKDLMMMNNNNNNNNNNNNNNNNMMDOOOOO PPPPPPPPPPPPPQQQQQPP RRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSTTTTRUUURR VVVVVVVVVVVVWWWWWWWWXXXXXXXXVYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[Z\\\\\\\Z]]]]]]]]]]]]]]]ZZY^^^^^^^^^^^^^^^^________________________^^V`aaa`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccbdddddbbVeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeVVVfffffffgghhhhhhhhhhhhhhhhhhhhhhggfiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifjkkkkkflllllllfmmmmmmmmmfnnnnnnnnnooonppppppppppppnqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqfrrrrrrrrrrrrrrrrrrrrrrrrfssssssfttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvuwwwwwwwwwwwuuuxxxxuyyyyyzzzzyyttt{{{{{{{{{{{{{{{{{{{f|||||f}}}}}}}}}}}}}}~~~~~}}ffffffffVtomcatallclasses-index.htmlallclasses.htmlallpackages-index.htmlconstant-values.htmldeprecated-list.htmlelement-listhelp-doc.htmlindex-all.htmlindex.htmljqueryjquery-ui.overrides.cssexternaljqueryjquery.jsjquery-3.6.1.min.jsjquery-ui.min.cssjquery-ui.min.jsjszipjszip-utilsdistjszip-utils-ie.jsjszip-utils-ie.min.jsjszip-utils.jsjszip-utils.min.jsdistjszip.jsjszip.min.jsmember-search-index.jsmember-search-index.ziporgapachecatalinaAccessLog.htmlAsyncDispatcher.htmlAuthenticator.htmlCluster.htmlContained.htmlContainer.htmlContainerEvent.htmlContainerListener.htmlContainerServlet.htmlContext.htmlCredentialHandler.htmlDistributedManager.htmlEngine.htmlExecutor.htmlGlobals.htmlGroup.htmlHost.htmlJmxEnabled.htmlLifecycle.SingleUse.htmlLifecycle.htmlLifecycleEvent.htmlLifecycleException.htmlLifecycleListener.htmlLifecycleState.htmlLoader.htmlManager.htmlPipeline.htmlRealm.htmlRole.htmlServer.htmlService.htmlSession.htmlSessionEvent.htmlSessionIdGenerator.htmlSessionListener.htmlStore.htmlStoreManager.htmlThreadBindingListener.htmlTomcatPrincipal.htmlTrackedWebResource.htmlUser.htmlUserDatabase.htmlValve.htmlWebResource.htmlWebResourceRoot.ArchiveIndexStrategy.htmlWebResourceRoot.CacheStrategy.htmlWebResourceRoot.ResourceSetType.htmlWebResourceRoot.htmlWebResourceSet.htmlWrapper.htmlantAbstractCatalinaCommandTask.htmlAbstractCatalinaTask.htmlBaseRedirectorHelperTask.htmlDeployTask.htmlFindLeaksTask.htmlJKStatusUpdateTask.htmlJMXGetTask.htmlJMXQueryTask.htmlJMXSetTask.htmlListTask.htmlReloadTask.htmlResourcesTask.htmlServerinfoTask.htmlSessionsTask.htmlSslConnectorCiphersTask.htmlStartTask.htmlStopTask.htmlThreaddumpTask.htmlUndeployTask.htmlValidatorTask.htmlVminfoTask.htmljmxArg.htmlJMXAccessorCondition.htmlJMXAccessorConditionBase.htmlJMXAccessorCreateTask.htmlJMXAccessorEqualsCondition.htmlJMXAccessorGetTask.htmlJMXAccessorInvokeTask.htmlJMXAccessorQueryTask.htmlJMXAccessorSetTask.htmlJMXAccessorTask.htmlJMXAccessorUnregisterTask.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlauthenticatorAuthenticatorBase.AllowCorsPreflight.htmlAuthenticatorBase.htmlBasicAuthenticator.BasicCredentials.htmlBasicAuthenticator.htmlConstants.htmlDigestAuthenticator.AuthDigest.htmlDigestAuthenticator.DigestInfo.htmlDigestAuthenticator.NonceInfo.htmlDigestAuthenticator.htmlFormAuthenticator.htmlNonLoginAuthenticator.htmlSSLAuthenticator.htmlSavedRequest.htmlSingleSignOn.htmlSingleSignOnEntry.htmlSingleSignOnListener.htmlSingleSignOnSessionKey.htmlSpnegoAuthenticator.AcceptAction.htmlSpnegoAuthenticator.AuthenticateAction.htmlSpnegoAuthenticator.SpnegoTokenFixer.htmlSpnegoAuthenticator.htmljaspicAuthConfigFactoryImpl.htmlCallbackHandlerImpl.htmlMessageInfoImpl.htmlPersistentProviderRegistrations.Property.htmlPersistentProviderRegistrations.Provider.htmlPersistentProviderRegistrations.Providers.htmlPersistentProviderRegistrations.htmlSimpleAuthConfigProvider.htmlSimpleServerAuthConfig.htmlSimpleServerAuthContext.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlconnectorClientAbortException.htmlConnector.htmlCoyoteAdapter.htmlCoyoteInputStream.htmlCoyoteOutputStream.htmlCoyotePrincipal.htmlCoyoteReader.htmlCoyoteWriter.htmlInputBuffer.htmlOutputBuffer.htmlRequest.htmlRequestFacade.htmlResponse.htmlResponseFacade.htmlpackage-summary.htmlpackage-tree.htmlcoreAccessLogAdapter.htmlApplicationContext.htmlApplicationContextFacade.htmlApplicationFilterChain.htmlApplicationFilterConfig.htmlApplicationFilterFactory.htmlApplicationFilterRegistration.htmlApplicationMapping.htmlApplicationPart.htmlApplicationPushBuilder.htmlApplicationServletRegistration.htmlApplicationSessionCookieConfig.htmlAprLifecycleListener.htmlAprStatus.htmlAsyncContextImpl.htmlAsyncListenerWrapper.htmlConstants.htmlContainerBase.ContainerBackgroundProcessor.htmlContainerBase.ContainerBackgroundProcessorMonitor.htmlContainerBase.PrivilegedAddChild.htmlContainerBase.htmlContextNamingInfoListener.htmlDefaultInstanceManager.htmlFrameworkListener.htmlJniLifecycleListener.htmlJreMemoryLeakPreventionListener.htmlNamingContextListener.htmlPropertiesRoleMappingListener.htmlStandardContext.htmlStandardEngine.AccessLogListener.htmlStandardEngine.NoopAccessLog.htmlStandardEngine.htmlStandardHost.htmlStandardPipeline.htmlStandardServer.htmlStandardService.htmlStandardThreadExecutor.htmlStandardVirtualThreadExecutor.htmlStandardWrapper.htmlStandardWrapperFacade.htmlThreadLocalLeakPreventionListener.htmlpackage-summary.htmlpackage-tree.htmldeployNamingResourcesImpl.htmlpackage-summary.htmlpackage-tree.htmlfiltersAddDefaultCharsetFilter.ResponseWrapper.htmlAddDefaultCharsetFilter.htmlConstants.htmlCorsFilter.CORSRequestType.htmlCorsFilter.htmlCsrfPreventionFilter.CsrfResponseWrapper.htmlCsrfPreventionFilter.LruCache.htmlCsrfPreventionFilter.NonceCache.htmlCsrfPreventionFilter.htmlCsrfPreventionFilterBase.htmlExpiresFilter.Duration.htmlExpiresFilter.DurationUnit.htmlExpiresFilter.ExpiresConfiguration.htmlExpiresFilter.StartingPoint.htmlExpiresFilter.XHttpServletResponse.htmlExpiresFilter.XPrintWriter.htmlExpiresFilter.XServletOutputStream.htmlExpiresFilter.htmlFailedRequestFilter.htmlFilterBase.htmlHttpHeaderSecurityFilter.htmlRateLimitFilter.htmlRemoteAddrFilter.htmlRemoteCIDRFilter.htmlRemoteHostFilter.htmlRemoteIpFilter.XForwardedRequest.htmlRemoteIpFilter.htmlRequestDumperFilter.htmlRequestFilter.htmlRestCsrfPreventionFilter.htmlSessionInitializerFilter.htmlSetCharacterEncodingFilter.htmlWebdavFixFilter.htmlpackage-summary.htmlpackage-tree.htmlhaCatalinaCluster.htmlClusterDeployer.htmlClusterListener.htmlClusterManager.htmlClusterMessage.htmlClusterMessageBase.htmlClusterRuleSet.htmlClusterSession.htmlClusterValve.htmlauthenticatorClusterSingleSignOn.htmlClusterSingleSignOnListener.htmlpackage-summary.htmlpackage-tree.htmlbackendCollectedInfo.htmlHeartbeatListener.htmlMultiCastSender.htmlProxy.htmlSender.htmlTcpSender.htmlpackage-summary.htmlpackage-tree.htmlcontextReplicatedContext.MultiEnumeration.htmlReplicatedContext.ReplApplContext.htmlReplicatedContext.htmlpackage-summary.htmlpackage-tree.htmldeployFarmWarDeployer.htmlFileChangeListener.htmlFileMessage.htmlFileMessageFactory.htmlUndeployMessage.htmlWarWatcher.WarFilter.htmlWarWatcher.WarInfo.htmlWarWatcher.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlsessionBackupManager.htmlClusterManagerBase.htmlClusterSessionListener.htmlDeltaManager.htmlDeltaRequest.htmlDeltaSession.htmlJvmRouteBinderValve.htmlReplicatedSessionListener.htmlSessionMessage.htmlSessionMessageImpl.htmlpackage-summary.htmlpackage-tree.htmltcpConstants.htmlReplicationValve.htmlSendMessageData.htmlSimpleTcpCluster.htmlpackage-summary.htmlpackage-tree.htmlloaderConstants.htmlJdbcLeakPrevention.htmlParallelWebappClassLoader.htmlResourceEntry.htmlWebappClassLoader.htmlWebappClassLoaderBase.PrivilegedFindClassByName.htmlWebappClassLoaderBase.PrivilegedGetClassLoader.htmlWebappClassLoaderBase.PrivilegedJavaseGetResource.htmlWebappClassLoaderBase.htmlWebappLoader.htmlpackage-summary.htmlpackage-tree.htmlmanagerConstants.htmlDummyProxySession.htmlHTMLManagerServlet.htmlJMXProxyServlet.htmlJspHelper.htmlManagerServlet.htmlStatusManagerServlet.htmlStatusTransformer.htmlhostConstants.htmlHTMLHostManagerServlet.htmlHostManagerServlet.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlutilBaseSessionComparator.htmlSessionUtils.htmlpackage-summary.htmlpackage-tree.htmlmapperConstants.htmlMapper.ContextList.htmlMapper.ContextVersion.htmlMapper.MapElement.htmlMapper.MappedContext.htmlMapper.MappedHost.htmlMapper.MappedWrapper.htmlMapper.htmlMapperListener.htmlMappingData.htmlWrapperMappingInfo.htmlpackage-summary.htmlpackage-tree.htmlmbeansBaseCatalinaMBean.htmlClassNameMBean.htmlConnectorMBean.htmlContainerMBean.htmlContextEnvironmentMBean.htmlContextMBean.htmlContextResourceLinkMBean.htmlContextResourceMBean.htmlDataSourceUserDatabaseMBean.htmlGlobalResourcesLifecycleListener.htmlGroupMBean.htmlMBeanDumper.htmlMBeanFactory.htmlMBeanUtils.htmlMemoryUserDatabaseMBean.htmlNamingResourcesMBean.htmlRoleMBean.htmlServiceMBean.htmlSparseUserDatabaseMBean.htmlUserMBean.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlrealmAuthenticatedUserRealm.htmlCombinedRealm.htmlDataSourceRealm.htmlDigestCredentialHandlerBase.htmlGenericPrincipal.htmlJAASCallbackHandler.htmlJAASMemoryLoginModule.htmlJAASRealm.htmlJDBCRealm.htmlJNDIRealm.JNDIConnection.htmlJNDIRealm.User.htmlJNDIRealm.htmlLockOutRealm.LockRecord.htmlLockOutRealm.htmlMemoryRealm.htmlMemoryRuleSet.htmlMessageDigestCredentialHandler.htmlNestedCredentialHandler.htmlNullRealm.htmlRealmBase.AllRolesMode.htmlRealmBase.htmlSecretKeyCredentialHandler.htmlUserDatabaseRealm.UserDatabasePrincipal.htmlUserDatabaseRealm.htmlX509SubjectDnRetriever.htmlX509UsernameRetriever.htmlpackage-summary.htmlpackage-tree.htmlsecurityConstants.htmlDeployXmlPermission.htmlSecurityClassLoad.htmlSecurityConfig.htmlSecurityListener.htmlSecurityUtil.htmlTLSCertificateReloadListener.htmlpackage-summary.htmlpackage-tree.htmlservletsCGIServlet.CGIEnvironment.htmlCGIServlet.CGIRunner.htmlCGIServlet.HTTPHeaderInputStream.htmlCGIServlet.htmlConstants.htmlDefaultServlet.CompressionFormat.htmlDefaultServlet.Range.htmlDefaultServlet.htmlWebdavServlet.htmlpackage-summary.htmlpackage-tree.htmlsessionConstants.htmlDataSourceStore.htmlFileStore.htmlJDBCStore.htmlManagerBase.SessionTiming.htmlManagerBase.htmlPersistentManager.htmlPersistentManagerBase.htmlStandardManager.htmlStandardSession.htmlStandardSessionFacade.htmlStoreBase.htmlTooManyActiveSessionsException.htmlpackage-summary.htmlpackage-tree.htmlssiByteArrayServletOutputStream.htmlExpressionParseTree.htmlExpressionTokenizer.htmlResponseIncludeWrapper.htmlSSICommand.htmlSSIConditional.htmlSSIConfig.htmlSSIEcho.htmlSSIExec.htmlSSIExternalResolver.htmlSSIFilter.htmlSSIFlastmod.htmlSSIFsize.htmlSSIInclude.htmlSSIMediator.htmlSSIPrintenv.htmlSSIProcessor.htmlSSIServlet.htmlSSIServletExternalResolver.ServletContextAndPath.htmlSSIServletExternalResolver.htmlSSIServletRequestUtil.htmlSSISet.htmlSSIStopProcessingException.htmlpackage-summary.htmlpackage-tree.htmlstartupAddPortOffsetRule.htmlBootstrap.htmlCatalina.CatalinaShutdownHook.htmlCatalina.ServerXml.htmlCatalina.htmlCatalinaBaseConfigurationSource.htmlCatalinaProperties.htmlCertificateCreateRule.htmlClassLoaderFactory.Repository.htmlClassLoaderFactory.RepositoryType.htmlClassLoaderFactory.htmlConnectorCreateRule.htmlConstants.htmlContextConfig.ContextXml.htmlContextConfig.htmlContextRuleSet.htmlCopyParentClassLoaderRule.htmlCredentialHandlerRuleSet.htmlEngineConfig.htmlEngineRuleSet.htmlExpandWar.htmlFailedContext.htmlHomesUserDatabase.htmlHostConfig.DeployedApplication.htmlHostConfig.htmlHostRuleSet.htmlLifecycleListenerRule.htmlListenerCreateRule.OptionalListener.htmlListenerCreateRule.htmlNamingRuleSet.htmlPasswdUserDatabase.htmlRealmRuleSet.htmlSafeForkJoinWorkerThreadFactory.htmlSetAllPropertiesRule.htmlSetContextPropertiesRule.htmlSetNextNamingRule.htmlTomcat.DefaultWebXmlListener.htmlTomcat.ExistingStandardWrapper.htmlTomcat.FixContextListener.htmlTomcat.htmlTool.htmlUserConfig.htmlUserDatabase.htmlVersionLoggerListener.htmlWebAnnotationSet.htmlWebappServiceLoader.htmlpackage-summary.htmlpackage-tree.htmlstoreconfigCatalinaClusterSF.htmlCertificateStoreAppender.htmlChannelSF.htmlConnectorSF.htmlConnectorStoreAppender.htmlConstants.htmlCredentialHandlerSF.htmlGlobalNamingResourcesSF.htmlIStoreConfig.htmlIStoreFactory.htmlInterceptorSF.htmlJarScannerSF.htmlLoaderSF.htmlManagerSF.htmlNamingResourcesSF.htmlOpenSSLConfSF.htmlPersistentManagerSF.htmlRealmSF.htmlSSLHostConfigSF.htmlSenderSF.htmlStandardContextSF.htmlStandardEngineSF.htmlStandardHostSF.htmlStandardServerSF.htmlStandardServiceSF.htmlStoreAppender.htmlStoreConfig.htmlStoreConfigLifecycleListener.htmlStoreContextAppender.htmlStoreDescription.htmlStoreFactoryBase.htmlStoreFactoryRule.htmlStoreFileMover.htmlStoreLoader.htmlStoreRegistry.htmlWatchedResourceSF.htmlWebResourceRootSF.htmlWrapperLifecycleSF.htmlWrapperListenerSF.htmlpackage-summary.htmlpackage-tree.htmltribesByteMessage.htmlChannel.htmlChannelException.FaultyMember.htmlChannelException.htmlChannelInterceptor.InterceptorEvent.htmlChannelInterceptor.htmlChannelListener.htmlChannelMessage.htmlChannelReceiver.htmlChannelSender.htmlErrorHandler.htmlHeartbeat.htmlJmxChannel.htmlManagedChannel.htmlMember.htmlMembershipListener.htmlMembershipProvider.htmlMembershipService.htmlMessageListener.htmlRemoteProcessException.htmlUniqueId.htmlgroupAbsoluteOrder.AbsoluteComparator.htmlAbsoluteOrder.htmlChannelCoordinator.htmlChannelInterceptorBase.htmlExtendedRpcCallback.htmlGroupChannel.HeartbeatRunnable.htmlGroupChannel.InterceptorIterator.htmlGroupChannel.htmlGroupChannelMBean.htmlInterceptorPayload.htmlResponse.htmlRpcCallback.htmlRpcChannel.RpcCollector.htmlRpcChannel.RpcCollectorKey.htmlRpcChannel.htmlRpcMessage.NoRpcChannelReply.htmlRpcMessage.htmlinterceptorsDomainFilterInterceptor.htmlDomainFilterInterceptorMBean.htmlEncryptInterceptor.htmlEncryptInterceptorMBean.htmlFragmentationInterceptor.FragCollection.htmlFragmentationInterceptor.FragKey.htmlFragmentationInterceptor.htmlFragmentationInterceptorMBean.htmlGzipInterceptor.htmlGzipInterceptorMBean.htmlMessageDispatchInterceptor.htmlMessageDispatchInterceptorMBean.htmlNonBlockingCoordinator.CoordinationEvent.htmlNonBlockingCoordinator.CoordinationMessage.htmlNonBlockingCoordinator.htmlOrderInterceptor.Counter.htmlOrderInterceptor.MessageOrder.htmlOrderInterceptor.htmlSimpleCoordinator.htmlStaticMembershipInterceptor.htmlStaticMembershipInterceptorMBean.htmlTcpFailureDetector.htmlTcpFailureDetectorMBean.htmlTcpPingInterceptor.PingThread.htmlTcpPingInterceptor.htmlTcpPingInterceptorMBean.htmlThroughputInterceptor.htmlThroughputInterceptorMBean.htmlTwoPhaseCommitInterceptor.MapEntry.htmlTwoPhaseCommitInterceptor.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlioBufferPool.BufferPoolAPI.htmlBufferPool.htmlChannelData.htmlDirectByteArrayOutputStream.htmlListenCallback.htmlObjectReader.htmlReplicationStream.htmlXByteBuffer.htmlpackage-summary.htmlpackage-tree.htmljmxJmxRegistry.htmlpackage-summary.htmlpackage-tree.htmlmembershipConstants.htmlMcastService.htmlMcastServiceImpl.ReceiverThread.htmlMcastServiceImpl.RecoveryThread.htmlMcastServiceImpl.SenderThread.htmlMcastServiceImpl.htmlMcastServiceMBean.htmlMemberImpl.htmlMembership.MbrEntry.htmlMembership.htmlMembershipProviderBase.htmlMembershipServiceBase.htmlStaticMember.htmlStaticMembershipProvider.MemberMessage.htmlStaticMembershipProvider.PingThread.htmlStaticMembershipProvider.htmlStaticMembershipService.htmlStaticMembershipServiceMBean.htmlcloudAbstractStreamProvider.htmlCertificateStreamProvider.htmlCloudMembershipProvider.htmlCloudMembershipService.htmlCloudMembershipServiceMBean.htmlDNSMembershipProvider.htmlInsecureStreamProvider.htmlKubernetesMembershipProvider.htmlStreamProvider.htmlTokenStreamProvider.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmltipisAbstractReplicatedMap.MapEntry.htmlAbstractReplicatedMap.MapMessage.htmlAbstractReplicatedMap.MapOwner.htmlAbstractReplicatedMap.htmlLazyReplicatedMap.htmlReplicatedMap.htmlReplicatedMapEntry.htmlpackage-summary.htmlpackage-tree.htmltransportAbstractRxTask.htmlAbstractSender.htmlConstants.htmlDataSender.htmlMultiPointSender.htmlPooledSender.htmlReceiverBase.htmlReplicationTransmitter.htmlRxTaskPool.TaskCreator.htmlRxTaskPool.htmlSenderState.htmlbioBioReceiver.htmlBioReplicationTask.htmlBioSender.htmlMultipointBioSender.htmlPooledMultiSender.htmlpackage-summary.htmlpackage-tree.htmlnioNioReceiver.htmlNioReceiverMBean.htmlNioReplicationTask.htmlNioSender.htmlParallelNioSender.htmlPooledParallelSender.htmlPooledParallelSenderMBean.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlutilArrays.htmlExceptionUtils.htmlExecutorFactory.htmlLogs.htmlStringManager.htmlTcclThreadFactory.htmlUUIDGenerator.htmlpackage-summary.htmlpackage-tree.htmlusersAbstractGroup.htmlAbstractRole.htmlAbstractUser.htmlConstants.htmlDataSourceUserDatabase.htmlDataSourceUserDatabaseFactory.htmlGenericGroup.htmlGenericRole.htmlGenericUser.htmlMemoryGroup.htmlMemoryRole.htmlMemoryUser.htmlMemoryUserDatabase.htmlMemoryUserDatabaseFactory.htmlSparseUserDatabase.htmlpackage-summary.htmlpackage-tree.htmlutilCharsetMapper.htmlConcurrentDateFormat.htmlContextName.htmlCustomObjectInputStream.htmlDOMWriter.htmlErrorPageSupport.htmlExtension.htmlExtensionValidator.htmlIOTools.htmlIntrospection.htmlLifecycleBase.htmlLifecycleMBeanBase.htmlManifestResource.htmlNetMask.htmlNetMaskSet.htmlParameterMap.htmlRequestUtil.htmlResourceSet.htmlServerInfo.htmlSessionConfig.htmlSessionIdGeneratorBase.htmlStandardSessionIdGenerator.htmlStrftime.htmlTLSUtil.htmlTimeBucketCounter.htmlToStringUtil.htmlTomcatCSS.htmlURLEncoder.htmlXMLWriter.htmlpackage-summary.htmlpackage-tree.htmlvalvesAbstractAccessLogValve.AccessLogElement.htmlAbstractAccessLogValve.ByteSentElement.htmlAbstractAccessLogValve.CachedElement.htmlAbstractAccessLogValve.ConnectionStatusElement.htmlAbstractAccessLogValve.CookieElement.htmlAbstractAccessLogValve.DateAndTimeElement.htmlAbstractAccessLogValve.DateFormatCache.Cache.htmlAbstractAccessLogValve.DateFormatCache.htmlAbstractAccessLogValve.ElapsedTimeElement.htmlAbstractAccessLogValve.FirstByteTimeElement.htmlAbstractAccessLogValve.HeaderElement.htmlAbstractAccessLogValve.HostElement.htmlAbstractAccessLogValve.HttpStatusCodeElement.htmlAbstractAccessLogValve.LocalAddrElement.htmlAbstractAccessLogValve.LocalServerNameElement.htmlAbstractAccessLogValve.LogicalUserNameElement.htmlAbstractAccessLogValve.MethodElement.htmlAbstractAccessLogValve.PortElement.htmlAbstractAccessLogValve.ProtocolElement.htmlAbstractAccessLogValve.QueryElement.htmlAbstractAccessLogValve.RemoteAddrElement.htmlAbstractAccessLogValve.RequestAttributeElement.htmlAbstractAccessLogValve.RequestElement.htmlAbstractAccessLogValve.RequestURIElement.htmlAbstractAccessLogValve.ResponseHeaderElement.htmlAbstractAccessLogValve.SessionAttributeElement.htmlAbstractAccessLogValve.SessionIdElement.htmlAbstractAccessLogValve.StringElement.htmlAbstractAccessLogValve.ThreadNameElement.htmlAbstractAccessLogValve.UserElement.htmlAbstractAccessLogValve.htmlAccessLogValve.htmlConstants.AccessLog.htmlConstants.htmlCrawlerSessionManagerValve.htmlErrorReportValve.htmlExtendedAccessLogValve.CookieElement.htmlExtendedAccessLogValve.DateElement.htmlExtendedAccessLogValve.PatternTokenizer.htmlExtendedAccessLogValve.RequestAttributeElement.htmlExtendedAccessLogValve.RequestHeaderElement.htmlExtendedAccessLogValve.RequestParameterElement.htmlExtendedAccessLogValve.ResponseAllHeaderElement.htmlExtendedAccessLogValve.ResponseHeaderElement.htmlExtendedAccessLogValve.ServletContextElement.htmlExtendedAccessLogValve.SessionAttributeElement.htmlExtendedAccessLogValve.TimeElement.htmlExtendedAccessLogValve.htmlHealthCheckValve.htmlJDBCAccessLogValve.htmlJsonAccessLogValve.CharElement.htmlJsonAccessLogValve.htmlJsonErrorReportValve.htmlLoadBalancerDrainingValve.htmlPersistentValve.htmlProxyErrorReportValve.htmlRemoteAddrValve.htmlRemoteCIDRValve.htmlRemoteHostValve.htmlRemoteIpValve.htmlRequestFilterValve.htmlSSLValve.htmlSemaphoreValve.htmlStuckThreadDetectionValve.htmlValveBase.htmlpackage-summary.htmlpackage-tree.htmlrewriteInternalRewriteMap.Escape.htmlInternalRewriteMap.LowerCase.htmlInternalRewriteMap.Unescape.htmlInternalRewriteMap.UpperCase.htmlInternalRewriteMap.htmlQuotedStringTokenizer.htmlRandomizedTextRewriteMap.htmlResolver.htmlResolverImpl.htmlRewriteCond.Condition.htmlRewriteCond.LexicalCondition.htmlRewriteCond.PatternCondition.htmlRewriteCond.ResourceCondition.htmlRewriteCond.htmlRewriteMap.htmlRewriteRule.htmlRewriteValve.htmlSubstitution.MapElement.htmlSubstitution.RewriteCondBackReferenceElement.htmlSubstitution.RewriteRuleBackReferenceElement.htmlSubstitution.ServerVariableElement.htmlSubstitution.ServerVariableEnvElement.htmlSubstitution.ServerVariableHttpElement.htmlSubstitution.ServerVariableSslElement.htmlSubstitution.StaticElement.htmlSubstitution.SubstitutionElement.htmlSubstitution.htmlpackage-summary.htmlpackage-tree.htmlwebresourcesAbstractArchiveResource.JarInputStreamWrapper.htmlAbstractArchiveResource.htmlAbstractArchiveResourceSet.htmlAbstractFileResourceSet.htmlAbstractResource.htmlAbstractResourceSet.htmlAbstractSingleArchiveResource.htmlAbstractSingleArchiveResourceSet.htmlCache.htmlCachedResource.htmlClasspathURLStreamHandler.htmlDirResourceSet.htmlEmptyResource.htmlEmptyResourceSet.htmlExtractingRoot.htmlFileResource.htmlFileResourceSet.htmlJarContents.htmlJarResource.htmlJarResourceRoot.htmlJarResourceSet.htmlJarWarResource.htmlJarWarResourceSet.htmlStandardRoot.htmlTomcatJarInputStream.htmlTomcatURLStreamHandlerFactory.htmlVirtualResource.htmlWarResource.htmlWarResourceSet.htmlpackage-summary.htmlpackage-tree.htmlwarHandler.htmlWarURLConnection.htmlpackage-summary.htmlpackage-tree.htmlcoyoteAbstractProcessor.htmlAbstractProcessorLight.htmlAbstractProtocol.ConnectionHandler.htmlAbstractProtocol.RecycledProcessors.htmlAbstractProtocol.htmlActionCode.htmlActionHook.htmlAdapter.htmlAsyncContextCallback.htmlBadRequestException.htmlCloseNowException.htmlCompressionConfig.htmlConstants.htmlContainerThreadMarker.htmlContinueResponseTiming.htmlErrorState.htmlInputBuffer.htmlOutputBuffer.htmlProcessor.htmlProtocolException.htmlProtocolHandler.htmlRequest.htmlRequestGroupInfo.htmlRequestInfo.htmlResponse.htmlUpgradeProtocol.htmlUpgradeToken.htmlajpAbstractAjpProtocol.htmlAjpAprProtocol.htmlAjpMessage.htmlAjpNio2Protocol.htmlAjpNioProtocol.htmlAjpProcessor.SocketInputBuffer.htmlAjpProcessor.SocketOutputBuffer.htmlAjpProcessor.htmlConstants.htmlpackage-summary.htmlpackage-tree.htmlhttp11AbstractHttp11JsseProtocol.htmlAbstractHttp11Protocol.htmlConstants.htmlHeadersTooLargeException.htmlHttp11AprProtocol.htmlHttp11InputBuffer.htmlHttp11Nio2Protocol.htmlHttp11NioProtocol.htmlHttp11OutputBuffer.SocketOutputBuffer.htmlHttp11OutputBuffer.htmlHttp11Processor.htmlHttpOutputBuffer.htmlInputFilter.htmlOutputFilter.htmlfiltersBufferedInputFilter.htmlChunkedInputFilter.htmlChunkedOutputFilter.htmlGzipOutputFilter.FakeOutputStream.htmlGzipOutputFilter.htmlIdentityInputFilter.htmlIdentityOutputFilter.htmlSavedRequestInputFilter.htmlVoidInputFilter.htmlVoidOutputFilter.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlupgradeInternalHttpUpgradeHandler.htmlUpgradeApplicationBufferHandler.htmlUpgradeGroupInfo.htmlUpgradeInfo.htmlUpgradeProcessorBase.htmlUpgradeProcessorExternal.htmlUpgradeProcessorInternal.htmlUpgradeServletInputStream.htmlUpgradeServletOutputStream.htmlpackage-summary.htmlpackage-tree.htmlhttp2Constants.htmlHPackHuffman.HuffmanCode.htmlHPackHuffman.htmlHpackDecoder.htmlHttp2AsyncUpgradeHandler.AsyncPingManager.htmlHttp2AsyncUpgradeHandler.SendfileCompletionHandler.htmlHttp2AsyncUpgradeHandler.htmlHttp2OutputBuffer.htmlHttp2Protocol.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlelExpressionFactoryImpl.htmlMethodExpressionImpl.htmlMethodExpressionLiteral.htmlValueExpressionImpl.htmlValueExpressionLiteral.htmllangELArithmetic.BigDecimalDelegate.htmlELArithmetic.BigIntegerDelegate.htmlELArithmetic.DoubleDelegate.htmlELArithmetic.LongDelegate.htmlELArithmetic.htmlELSupport.htmlEvaluationContext.htmlExpressionBuilder.htmlFunctionMapperFactory.htmlFunctionMapperImpl.Function.htmlFunctionMapperImpl.htmlLambdaExpressionNestedState.htmlVariableMapperFactory.htmlVariableMapperImpl.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlstreamOptional.htmlStream.htmlStreamELResolverImpl.htmlpackage-summary.htmlpackage-tree.htmlutilConcurrentCache.htmlExceptionUtils.htmlJreCompat.htmlMessageFactory.htmlReflectionUtil.htmlValidation.htmlpackage-summary.htmlpackage-tree.htmljasperConstants.htmlEmbeddedServletOptions.htmlJasperException.htmlJspC.htmlJspCompilationContext.htmlOptions.htmlTrimSpacesOption.htmlcompilerAntCompiler.JasperAntLogger.htmlAntCompiler.SystemLogHandler.htmlAntCompiler.htmlAttributeParser.htmlBeanRepository.htmlCompiler.htmlELFunctionMapper.htmlELInterpreter.htmlELInterpreterFactory.DefaultELInterpreter.htmlELInterpreterFactory.htmlELParser.htmlErrorDispatcher.htmlErrorHandler.htmlJDTCompiler.htmlJarScannerFactory.htmlJavacErrorDetail.htmlJspConfig.JspProperty.htmlJspConfig.JspPropertyGroup.htmlJspConfig.htmlJspRuntimeContext.htmlJspUtil.ValidAttribute.htmlJspUtil.htmlLocalizer.htmlNewlineReductionServletWriter.htmlServletWriter.htmlSmapInput.htmlSmapStratum.htmlSmapUtil.htmlStringInterpreter.htmlStringInterpreterFactory.DefaultStringInterpreter.htmlStringInterpreterFactory.htmlTagConstants.htmlTagPluginManager.htmlTextOptimizer.htmlTldCache.htmlpackage-summary.htmlpackage-tree.htmltagpluginTagPlugin.htmlTagPluginContext.htmlpackage-summary.htmlpackage-tree.htmlelELContextImpl.htmlELContextWrapper.htmlELResolverImpl.htmlExpressionEvaluatorImpl.htmlExpressionImpl.htmlFunctionMapperImpl.htmlJasperELResolver.GraalBeanELResolver.htmlJasperELResolver.htmlJspELException.htmlJspMethodExpression.htmlJspMethodNotFoundException.htmlJspPropertyNotFoundException.htmlJspPropertyNotWritableException.htmlJspValueExpression.htmlVariableResolverImpl.htmlpackage-summary.htmlpackage-tree.htmloptimizationsELInterpreterTagSetters.htmlStringInterpreterEnum.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlruntimeBodyContentImpl.htmlExceptionUtils.htmlHttpJspBase.htmlInstanceManagerFactory.htmlJspApplicationContextImpl.htmlJspContextWrapper.htmlJspFactoryImpl.htmlJspFragmentHelper.htmlJspRuntimeLibrary.htmlJspSourceDependent.htmlJspSourceImports.htmlJspWriterImpl.htmlPageContextImpl.htmlProtectedFunctionMapper.htmlServletResponseWrapperInclude.htmlTagHandlerPool.htmlpackage-summary.htmlpackage-tree.htmlsecuritySecurityClassLoad.htmlSecurityUtil.htmlpackage-summary.htmlpackage-tree.htmlservletJasperInitializer.htmlJasperLoader.htmlJspCServletContext.htmlJspServlet.htmlJspServletWrapper.htmlTldPreScanned.htmlTldScanner.htmlpackage-summary.htmlpackage-tree.htmltagpluginsjstlUtil.ImportResponseWrapper.htmlUtil.htmlcoreCatch.htmlChoose.htmlForEach.htmlForTokens.htmlIf.htmlImport.htmlOtherwise.htmlOut.htmlParam.htmlRedirect.htmlRemove.htmlSet.htmlUrl.htmlWhen.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlutilFastRemovalDequeue.Entry.htmlFastRemovalDequeue.htmlUniqueAttributesImpl.htmlpackage-summary.htmlpackage-tree.htmljuliAsyncFileHandler.htmlClassLoaderLogManager.ClassLoaderLogInfo.htmlClassLoaderLogManager.LogNode.htmlClassLoaderLogManager.RootLogger.htmlClassLoaderLogManager.htmlDateFormatCache.htmlFileHandler.ThreadFactory.htmlFileHandler.htmlJdkLoggerFormatter.htmlOneLineFormatter.htmlVerbatimFormatter.htmlWebappProperties.htmlloggingLog.htmlLogConfigurationException.htmlLogFactory.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlnamingAbstractRef.htmlContextAccessController.htmlContextBindings.htmlEjbRef.htmlHandlerRef.htmlLookupRef.htmlNameParserImpl.htmlNamingContext.htmlNamingContextBindingsEnumeration.htmlNamingContextEnumeration.htmlNamingEntry.htmlResourceEnvRef.htmlResourceLinkRef.htmlResourceRef.htmlSelectorContext.htmlServiceRef.htmlStringManager.htmlTransactionRef.htmlfactoryBeanFactory.htmlConstants.htmlDataSourceLinkFactory.DataSourceHandler.htmlDataSourceLinkFactory.htmlEjbFactory.htmlFactoryBase.htmlLookupFactory.htmlMailSessionFactory.htmlOpenEjbFactory.htmlResourceEnvFactory.htmlResourceFactory.htmlResourceLinkFactory.htmlSendMailFactory.htmlTransactionFactory.htmlpackage-summary.htmlpackage-tree.htmlwebservicesServiceProxy.htmlServiceRefFactory.htmlpackage-summary.htmlpackage-tree.htmljavajavaURLContextFactory.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmltomcatContextBind.htmlInstanceManager.htmlInstanceManagerBindings.htmlInstrumentableClassLoader.htmlJar.htmlJarScanFilter.htmlJarScanType.htmlJarScanner.htmlJarScannerCallback.htmlPeriodicEventListener.htmlSimpleInstanceManager.htmlbuildutilCheckEol.htmlForceUtcTimeZone.htmlRepeatableArchive.htmlTxt2Html.htmlUtils.htmlpackage-summary.htmlpackage-tree.htmltranslateBackportBase.htmlBackportEnglish.htmlBackportTranslations.htmlConstants.htmlImport.htmlUtils.htmlpackage-summary.htmlpackage-tree.htmldbcpdbcp2AbandonedTrace.htmlBasicDataSource.htmlBasicDataSourceFactory.htmlBasicDataSourceMXBean.htmlConnectionFactory.htmlConstants.htmlDataSourceConnectionFactory.htmlDataSourceMXBean.htmlDelegatingCallableStatement.htmlDelegatingConnection.htmlDelegatingDatabaseMetaData.htmlDelegatingPreparedStatement.htmlDelegatingResultSet.htmlDelegatingStatement.htmlDriverConnectionFactory.htmlDriverManagerConnectionFactory.htmlJdbc41Bridge.htmlListException.htmlPStmtKey.htmlPoolableCallableStatement.htmlPoolableConnection.htmlPoolableConnectionFactory.htmlPoolableConnectionMXBean.htmlPoolablePreparedStatement.htmlPoolingConnection.StatementType.htmlPoolingConnection.htmlPoolingDataSource.htmlPoolingDriver.htmlSQLExceptionList.htmlSwallowedExceptionLogger.htmlUtils.htmlcpdsadapterDriverAdapterCPDS.htmlPStmtKeyCPDS.htmlpackage-summary.htmlpackage-tree.htmldatasourcesInstanceKeyDataSource.htmlPerUserPoolDataSource.htmlPerUserPoolDataSourceFactory.htmlSharedPoolDataSource.htmlSharedPoolDataSourceFactory.htmlpackage-summary.htmlpackage-tree.htmlmanagedBasicManagedDataSource.htmlDataSourceXAConnectionFactory.htmlLocalXAConnectionFactory.LocalXAResource.htmlLocalXAConnectionFactory.htmlManagedConnection.CompletionListener.htmlManagedConnection.htmlManagedDataSource.htmlPoolableManagedConnection.htmlPoolableManagedConnectionFactory.htmlTransactionContext.htmlTransactionContextListener.htmlTransactionRegistry.htmlXAConnectionFactory.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlpool2BaseKeyedPooledObjectFactory.htmlBaseObject.htmlBaseObjectPool.htmlBasePooledObjectFactory.htmlDestroyMode.htmlKeyedObjectPool.htmlKeyedPooledObjectFactory.htmlObjectPool.htmlPoolUtils.htmlPooledObject.htmlPooledObjectFactory.htmlPooledObjectState.htmlSwallowedExceptionListener.htmlTrackedUse.htmlUsageTracking.htmlimplAbandonedConfig.htmlBaseGenericObjectPool.htmlBaseObjectPoolConfig.htmlCallStack.htmlCallStackUtils.htmlDefaultEvictionPolicy.htmlDefaultPooledObject.htmlDefaultPooledObjectInfo.htmlDefaultPooledObjectInfoMBean.htmlEvictionConfig.htmlEvictionPolicy.htmlGenericKeyedObjectPool.htmlGenericKeyedObjectPoolConfig.htmlGenericKeyedObjectPoolMXBean.htmlGenericObjectPool.htmlGenericObjectPoolConfig.htmlGenericObjectPoolMXBean.htmlNoOpCallStack.htmlPooledSoftReference.htmlSecurityManagerCallStack.htmlSoftReferenceObjectPool.htmlThrowableCallStack.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmljdbcnamingGenericNamingResourcesFactory.htmlpackage-summary.htmlpackage-tree.htmlpoolClassLoaderUtil.htmlConnectionPool.ConnectionFuture.htmlConnectionPool.PoolCleaner.htmlConnectionPool.htmlDataSource.htmlDataSourceFactory.htmlDataSourceProxy.htmlDisposableConnectionFacade.htmlFairBlockingQueue.ExchangeCountDownLatch.htmlFairBlockingQueue.FairIterator.htmlFairBlockingQueue.ItemFuture.htmlFairBlockingQueue.htmlJdbcInterceptor.htmlMultiLockFairBlockingQueue.ExchangeCountDownLatch.htmlMultiLockFairBlockingQueue.FairIterator.htmlMultiLockFairBlockingQueue.ItemFuture.htmlMultiLockFairBlockingQueue.htmlPoolConfiguration.htmlPoolExhaustedException.htmlPoolProperties.InterceptorDefinition.htmlPoolProperties.InterceptorProperty.htmlPoolProperties.htmlPoolUtilities.htmlPooledConnection.htmlPooledConnectionMBean.htmlProxyConnection.htmlStatementFacade.StatementProxy.htmlStatementFacade.htmlTrapException.htmlValidator.htmlXADataSource.htmlinterceptorAbstractCreateStatementInterceptor.htmlAbstractQueryReport.StatementProxy.htmlAbstractQueryReport.htmlConnectionState.htmlQueryTimeoutInterceptor.htmlResetAbandonedTimer.htmlResetAbandonedTimerMBean.htmlSlowQueryReport.QueryStats.htmlSlowQueryReport.QueryStatsComparator.htmlSlowQueryReport.htmlSlowQueryReportJmx.htmlSlowQueryReportJmxMBean.htmlStatementCache.CachedStatement.htmlStatementCache.htmlStatementCacheMBean.htmlStatementDecoratorInterceptor.ResultSetProxy.htmlStatementDecoratorInterceptor.StatementProxy.htmlStatementDecoratorInterceptor.htmlStatementFinalizer.StatementEntry.htmlStatementFinalizer.htmlpackage-summary.htmlpackage-tree.htmljmxConnectionPool.htmlConnectionPoolMBean.htmlJmxUtil.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmljniAddress.htmlBIOCallback.htmlBuffer.htmlCertificateVerifier.htmlDirectory.htmlError.htmlFile.htmlFileInfo.htmlGlobal.htmlLibrary.htmlLibraryNotFoundError.htmlLocal.htmlLock.htmlMmap.htmlMulticast.htmlOS.htmlPasswordCallback.htmlPoll.htmlPool.htmlPoolCallback.htmlProc.htmlProcErrorCallback.htmlProcattr.htmlRegistry.htmlSSL.htmlSSLConf.htmlSSLContext.SNICallBack.htmlSSLContext.htmlSSLSocket.htmlShm.htmlSockaddr.htmlSocket.htmlStatus.htmlStdlib.htmlThread.htmlTime.htmlUser.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlutilDiagnostics.htmlExceptionUtils.htmlIntrospectionUtils.PropertySource.htmlIntrospectionUtils.SecurePropertySource.htmlIntrospectionUtils.htmlMultiThrowable.htmlbcelConst.htmlclassfileAnnotationElementValue.htmlAnnotationEntry.htmlAnnotations.htmlArrayElementValue.htmlClassElementValue.htmlClassFormatException.htmlClassParser.htmlConstant.htmlConstantClass.htmlConstantDouble.htmlConstantFloat.htmlConstantInteger.htmlConstantLong.htmlConstantPool.htmlConstantUtf8.htmlElementValue.htmlElementValuePair.htmlEnumElementValue.htmlJavaClass.htmlSimpleElementValue.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlbufAbstractChunk.htmlAscii.htmlAsn1Parser.htmlAsn1Writer.htmlB2CConverter.htmlByteBufferHolder.htmlByteBufferUtils.htmlByteChunk.BufferOverflowException.htmlByteChunk.ByteInputChannel.htmlByteChunk.ByteOutputChannel.htmlByteChunk.htmlC2BConverter.htmlCharChunk.CharInputChannel.htmlCharChunk.CharOutputChannel.htmlCharChunk.htmlCharsetCache.htmlCharsetUtil.htmlEncodedSolidusHandling.htmlHexUtils.htmlMessageBytes.htmlStringCache.htmlStringUtils.htmlUDecoder.htmlUEncoder.SafeCharsSet.htmlUEncoder.htmlUriUtil.htmlUtf8Decoder.htmlUtf8Encoder.htmlpackage-summary.htmlpackage-tree.htmlcodecbinaryBase64.htmlBaseNCodec.htmlStringUtils.htmlpackage-summary.htmlpackage-tree.htmlcollectionsCaseInsensitiveKeyMap.htmlConcurrentCache.htmlManagedConcurrentWeakHashMap.htmlSynchronizedQueue.htmlSynchronizedStack.htmlpackage-summary.htmlpackage-tree.htmlcompatJre19Compat.htmlJre21Compat.htmlJre22Compat.htmlJreCompat.htmlJrePlatform.htmlJreVendor.htmlTLS.htmlpackage-summary.htmlpackage-tree.htmldescriptorConstants.htmlDigesterFactory.htmlInputSourceUtil.htmlLocalResolver.htmlXmlErrorHandler.htmlXmlIdentifiers.htmlpackage-summary.htmlpackage-tree.htmltagpluginTagPluginParser.htmlpackage-summary.htmlpackage-tree.htmltldImplicitTldRuleSet.htmlTagFileXml.htmlTagXml.htmlTaglibXml.htmlTldParser.htmlTldResourcePath.htmlTldRuleSet.Attribute.htmlTldRuleSet.Variable.htmlTldRuleSet.htmlValidatorXml.htmlpackage-summary.htmlpackage-tree.htmlwebApplicationParameter.htmlConstants.htmlContextEjb.htmlContextEnvironment.htmlContextHandler.htmlContextLocalEjb.htmlContextResource.htmlContextResourceEnvRef.htmlContextResourceLink.htmlContextService.htmlContextTransaction.htmlErrorPage.htmlFilterDef.htmlFilterMap.htmlFragmentJarScannerCallback.htmlInjectable.htmlInjectionTarget.htmlJspConfigDescriptorImpl.htmlJspPropertyGroup.htmlJspPropertyGroupDescriptorImpl.htmlLoginConfig.htmlMessageDestination.htmlMessageDestinationRef.htmlMultipartDef.htmlNamingResources.htmlResourceBase.htmlSecurityCollection.htmlSecurityConstraint.htmlSecurityRoleRef.htmlServletDef.htmlSessionConfig.htmlTaglibDescriptorImpl.htmlWebRuleSet.htmlWebXml.htmlWebXmlParser.htmlXmlEncodingBase.htmlpackage-summary.htmlpackage-tree.htmldigesterAbstractObjectCreationFactory.htmlArrayStack.htmlCallMethodRule.htmlCallParamRule.htmlDigester.EnvironmentPropertySource.htmlDigester.GeneratedCodeLoader.htmlDigester.htmlDocumentProperties.Charset.htmlDocumentProperties.htmlEnvironmentPropertySource.htmlFactoryCreateRule.htmlObjectCreateRule.htmlObjectCreationFactory.htmlRule.htmlRuleSet.htmlRules.htmlRulesBase.htmlServiceBindingPropertySource.htmlSetNextRule.htmlSetPropertiesRule.Listener.htmlSetPropertiesRule.htmlSystemPropertySource.htmlpackage-summary.htmlpackage-tree.htmlfileConfigFileLoader.htmlConfigurationSource.Resource.htmlConfigurationSource.htmlMatcher.htmlpackage-summary.htmlpackage-tree.htmlhttpConcurrentDateFormat.htmlCookieProcessor.htmlCookieProcessorBase.htmlFastHttpDateFormat.htmlHeaderUtil.htmlLegacyCookieProcessor.htmlMimeHeaders.htmlParameters.FailReason.htmlParameters.htmlRequestUtil.htmlResponseUtil.htmlRfc6265CookieProcessor.htmlSameSiteCookies.htmlServerCookie.htmlServerCookies.htmlfileuploadByteArrayOutputStream.htmlDeferredFileOutputStream.htmlFileItem.htmlFileItemFactory.htmlFileItemHeaders.htmlFileItemHeadersSupport.htmlFileItemIterator.htmlFileItemStream.ItemSkippedException.htmlFileItemStream.htmlFileUpload.htmlFileUploadBase.htmlFileUploadException.htmlFileUtils.htmlIOUtils.htmlInvalidFileNameException.htmlMultipartStream.IllegalBoundaryException.htmlMultipartStream.ItemInputStream.htmlMultipartStream.MalformedStreamException.htmlMultipartStream.ProgressNotifier.htmlMultipartStream.htmlParameterParser.htmlProgressListener.htmlRequestContext.htmlThresholdingOutputStream.htmlUploadContext.htmldiskDiskFileItem.htmlDiskFileItemFactory.htmlpackage-summary.htmlpackage-tree.htmlimplFileCountLimitExceededException.htmlFileItemIteratorImpl.htmlFileItemStreamImpl.htmlFileSizeLimitExceededException.htmlFileUploadIOException.htmlIOFileUploadException.htmlInvalidContentTypeException.htmlSizeException.htmlSizeLimitExceededException.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlservletServletFileUpload.htmlServletRequestContext.htmlpackage-summary.htmlpackage-tree.htmlutilCloseable.htmlFileItemHeadersImpl.htmlLimitedInputStream.htmlStreams.htmlmimeMimeUtility.htmlRFC2231Utility.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlparserAcceptEncoding.htmlAcceptLanguage.htmlAuthorization.htmlContentRange.htmlCookie.htmlEntityTag.htmlHost.htmlHttpParser.htmlMediaType.htmlMediaTypeCache.htmlPriority.htmlRanges.Entry.htmlRanges.htmlStructuredField.htmlTokenList.htmlUpgrade.htmlVary.htmlpackage-summary.htmlpackage-tree.htmllogSystemLogHandler.htmlUserDataHelper.Mode.htmlUserDataHelper.htmlpackage-summary.htmlpackage-tree.htmlmodelerAttributeInfo.htmlBaseAttributeFilter.htmlBaseModelMBean.htmlBaseNotificationBroadcaster.htmlFeatureInfo.htmlManagedBean.htmlNoDescriptorRegistry.htmlNotificationInfo.htmlOperationInfo.htmlParameterInfo.htmlRegistry.htmlRegistryMBean.htmlUtil.htmlmodulesMbeansDescriptorsDigesterSource.htmlMbeansDescriptorsIntrospectionSource.htmlModelerSource.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlnetAbstractEndpoint.BindState.htmlAbstractEndpoint.Handler.SocketState.htmlAbstractEndpoint.Handler.htmlAbstractEndpoint.htmlAbstractJsseEndpoint.htmlAcceptor.AcceptorState.htmlAcceptor.htmlApplicationBufferHandler.htmlAprEndpoint.AprSocketWrapper.htmlAprEndpoint.Poller.htmlAprEndpoint.Sendfile.htmlAprEndpoint.SendfileData.htmlAprEndpoint.SocketInfo.htmlAprEndpoint.SocketList.htmlAprEndpoint.SocketProcessor.htmlAprEndpoint.SocketTimeouts.htmlAprEndpoint.SocketWithOptionsProcessor.htmlAprEndpoint.htmlAprSSLSupport.htmlConstants.htmlContainerThreadMarker.htmlDispatchType.htmlIPv6Utils.htmlNio2Channel.htmlNio2Endpoint.Nio2Acceptor.htmlNio2Endpoint.Nio2SocketWrapper.htmlNio2Endpoint.SendfileData.htmlNio2Endpoint.SocketProcessor.htmlNio2Endpoint.htmlNioChannel.htmlNioEndpoint.NioSocketWrapper.htmlNioEndpoint.Poller.htmlNioEndpoint.PollerEvent.htmlNioEndpoint.SendfileData.htmlNioEndpoint.SocketProcessor.htmlNioEndpoint.htmlSSLContext.htmlSSLHostConfig.CertificateVerification.htmlSSLHostConfig.Type.htmlSSLHostConfig.htmlSSLHostConfigCertificate.Type.htmlSSLHostConfigCertificate.htmlSSLImplementation.htmlSSLSessionManager.htmlSSLSupport.htmlSSLUtil.ProtocolInfo.htmlSSLUtil.htmlSSLUtilBase.htmlSecureNio2Channel.htmlSecureNioChannel.htmlSendfileDataBase.htmlSendfileKeepAliveState.htmlSendfileState.htmlSocketBufferHandler.htmlSocketEvent.htmlSocketProcessorBase.htmlSocketProperties.htmlSocketWrapperBase.BlockingMode.htmlSocketWrapperBase.CompletionCheck.htmlSocketWrapperBase.CompletionHandlerCall.htmlSocketWrapperBase.CompletionState.htmlSocketWrapperBase.OperationState.htmlSocketWrapperBase.VectoredIOCompletionHandler.htmlSocketWrapperBase.htmlTLSClientHelloExtractor.ExtractorResult.htmlTLSClientHelloExtractor.htmlWriteBuffer.Sink.htmlWriteBuffer.htmljsseJSSEImplementation.htmlJSSEKeyManager.htmlJSSESupport.htmlJSSEUtil.htmlPEMFile.htmlpackage-summary.htmlpackage-tree.htmlopensslOpenSSLConf.htmlOpenSSLConfCmd.htmlOpenSSLContext.htmlOpenSSLEngine.htmlOpenSSLImplementation.htmlOpenSSLSessionContext.htmlOpenSSLSessionStats.htmlOpenSSLUtil.htmlciphersAuthentication.htmlCipher.htmlEncryption.htmlEncryptionLevel.htmlKeyExchange.htmlMessageDigest.htmlOpenSSLCipherConfigurationParser.htmlProtocol.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlpackage-summary.htmlpackage-tree.htmlresStringManager.htmlpackage-summary.htmlpackage-tree.htmlscanAbstractInputStreamJar.htmlConstants.htmlJarFactory.htmlJarFileUrlJar.htmlJarFileUrlNestedJar.htmlNonClosingJarInputStream.htmlReferenceCountedJar.htmlStandardJarScanFilter.htmlStandardJarScanner.htmlUrlJar.htmlpackage-summary.htmlpackage-tree.htmlsecurityConcurrentMessageDigest.htmlEscape.htmlKeyStoreUtil.htmlMD5Encoder.htmlPermissionCheck.htmlPrivilegedGetTccl.htmlPrivilegedSetAccessControlContext.htmlPrivilegedSetTccl.htmlpackage-summary.htmlpackage-tree.htmlthreadsConstants.htmlInlineExecutorService.htmlLimitLatch.htmlResizableExecutor.htmlScheduledThreadPoolExecutor.htmlStopPooledThreadException.htmlTaskQueue.htmlTaskThread.htmlTaskThreadFactory.htmlThreadPoolExecutor.AbortPolicy.htmlThreadPoolExecutor.CallerRunsPolicy.htmlThreadPoolExecutor.DiscardOldestPolicy.htmlThreadPoolExecutor.DiscardPolicy.htmlThreadPoolExecutor.RejectedExecutionHandler.htmlThreadPoolExecutor.htmlVirtualThreadExecutor.htmlpackage-summary.htmlpackage-tree.htmlxreflectionObjectReflectionPropertyInspector.htmlpackage-summary.htmlpackage-tree.htmlwebsocketAsyncChannelGroupUtil.htmlAsyncChannelWrapper.htmlAsyncChannelWrapperNonSecure.htmlAsyncChannelWrapperSecure.htmlAuthenticationException.htmlAuthenticationType.htmlAuthenticator.htmlAuthenticatorFactory.htmlBackgroundProcess.htmlBackgroundProcessManager.htmlBasicAuthenticator.htmlClientEndpointHolder.htmlConstants.htmlDecoderEntry.htmlDigestAuthenticator.htmlEndpointClassHolder.htmlEndpointHolder.htmlMessageHandlerResult.htmlMessageHandlerResultType.htmlPerMessageDeflate.htmlPojoClassHolder.htmlPojoHolder.htmlReadBufferOverflowException.htmlTransformation.htmlTransformationFactory.htmlTransformationResult.htmlUtil.DecoderMatch.htmlUtil.htmlWrappedMessageHandler.htmlWsContainerProvider.htmlWsExtension.htmlWsExtensionParameter.htmlWsFrameBase.ReadState.htmlWsFrameBase.htmlWsFrameClient.htmlWsHandshakeResponse.htmlWsIOException.htmlWsPongMessage.htmlWsRemoteEndpointAsync.htmlWsRemoteEndpointBase.htmlWsRemoteEndpointBasic.htmlWsRemoteEndpointImplBase.htmlWsRemoteEndpointImplClient.htmlWsSession.htmlWsWebSocketContainer.htmlpackage-summary.htmlpackage-tree.htmlpojoConstants.htmlPojoEndpointBase.htmlPojoEndpointClient.htmlPojoEndpointServer.htmlPojoMessageHandlerBase.htmlPojoMessageHandlerPartialBase.htmlPojoMessageHandlerPartialBinary.htmlPojoMessageHandlerPartialText.htmlPojoMessageHandlerWholeBase.htmlPojoMessageHandlerWholeBinary.htmlPojoMessageHandlerWholePong.htmlPojoMessageHandlerWholeText.htmlPojoMethodMapping.htmlPojoPathParam.htmlpackage-summary.htmlpackage-tree.htmlserverConstants.htmlDefaultServerEndpointConfigurator.htmlUpgradeUtil.htmlUriTemplate.htmlWsContextListener.htmlWsFilter.htmlWsFrameServer.htmlWsHandshakeRequest.htmlWsHttpUpgradeHandler.htmlWsRemoteEndpointImplServer.htmlWsSci.htmlWsServerContainer.htmlWsSessionListener.htmlWsWriteTimeout.htmlpackage-summary.htmlpackage-tree.htmloverview-summary.htmloverview-tree.htmlpackage-search-index.jspackage-search-index.zipresourcesglass.pngx.pngscript.jssearch.jsserialized-form.htmlstylesheet.csstype-search-index.jstype-search-index.zip/usr/share/javadoc//usr/share/javadoc/tomcat//usr/share/javadoc/tomcat/jquery//usr/share/javadoc/tomcat/jquery/external//usr/share/javadoc/tomcat/jquery/external/jquery//usr/share/javadoc/tomcat/jquery/jszip-utils//usr/share/javadoc/tomcat/jquery/jszip-utils/dist//usr/share/javadoc/tomcat/jquery/jszip//usr/share/javadoc/tomcat/jquery/jszip/dist//usr/share/javadoc/tomcat/org//usr/share/javadoc/tomcat/org/apache//usr/share/javadoc/tomcat/org/apache/catalina//usr/share/javadoc/tomcat/org/apache/catalina/ant//usr/share/javadoc/tomcat/org/apache/catalina/ant/jmx//usr/share/javadoc/tomcat/org/apache/catalina/authenticator//usr/share/javadoc/tomcat/org/apache/catalina/authenticator/jaspic//usr/share/javadoc/tomcat/org/apache/catalina/connector//usr/share/javadoc/tomcat/org/apache/catalina/core//usr/share/javadoc/tomcat/org/apache/catalina/deploy//usr/share/javadoc/tomcat/org/apache/catalina/filters//usr/share/javadoc/tomcat/org/apache/catalina/ha//usr/share/javadoc/tomcat/org/apache/catalina/ha/authenticator//usr/share/javadoc/tomcat/org/apache/catalina/ha/backend//usr/share/javadoc/tomcat/org/apache/catalina/ha/context//usr/share/javadoc/tomcat/org/apache/catalina/ha/deploy//usr/share/javadoc/tomcat/org/apache/catalina/ha/session//usr/share/javadoc/tomcat/org/apache/catalina/ha/tcp//usr/share/javadoc/tomcat/org/apache/catalina/loader//usr/share/javadoc/tomcat/org/apache/catalina/manager//usr/share/javadoc/tomcat/org/apache/catalina/manager/host//usr/share/javadoc/tomcat/org/apache/catalina/manager/util//usr/share/javadoc/tomcat/org/apache/catalina/mapper//usr/share/javadoc/tomcat/org/apache/catalina/mbeans//usr/share/javadoc/tomcat/org/apache/catalina/realm//usr/share/javadoc/tomcat/org/apache/catalina/security//usr/share/javadoc/tomcat/org/apache/catalina/servlets//usr/share/javadoc/tomcat/org/apache/catalina/session//usr/share/javadoc/tomcat/org/apache/catalina/ssi//usr/share/javadoc/tomcat/org/apache/catalina/startup//usr/share/javadoc/tomcat/org/apache/catalina/storeconfig//usr/share/javadoc/tomcat/org/apache/catalina/tribes//usr/share/javadoc/tomcat/org/apache/catalina/tribes/group//usr/share/javadoc/tomcat/org/apache/catalina/tribes/group/interceptors//usr/share/javadoc/tomcat/org/apache/catalina/tribes/io//usr/share/javadoc/tomcat/org/apache/catalina/tribes/jmx//usr/share/javadoc/tomcat/org/apache/catalina/tribes/membership//usr/share/javadoc/tomcat/org/apache/catalina/tribes/membership/cloud//usr/share/javadoc/tomcat/org/apache/catalina/tribes/tipis//usr/share/javadoc/tomcat/org/apache/catalina/tribes/transport//usr/share/javadoc/tomcat/org/apache/catalina/tribes/transport/bio//usr/share/javadoc/tomcat/org/apache/catalina/tribes/transport/nio//usr/share/javadoc/tomcat/org/apache/catalina/tribes/util//usr/share/javadoc/tomcat/org/apache/catalina/users//usr/share/javadoc/tomcat/org/apache/catalina/util//usr/share/javadoc/tomcat/org/apache/catalina/valves//usr/share/javadoc/tomcat/org/apache/catalina/valves/rewrite//usr/share/javadoc/tomcat/org/apache/catalina/webresources//usr/share/javadoc/tomcat/org/apache/catalina/webresources/war//usr/share/javadoc/tomcat/org/apache/coyote//usr/share/javadoc/tomcat/org/apache/coyote/ajp//usr/share/javadoc/tomcat/org/apache/coyote/http11//usr/share/javadoc/tomcat/org/apache/coyote/http11/filters//usr/share/javadoc/tomcat/org/apache/coyote/http11/upgrade//usr/share/javadoc/tomcat/org/apache/coyote/http2//usr/share/javadoc/tomcat/org/apache/el//usr/share/javadoc/tomcat/org/apache/el/lang//usr/share/javadoc/tomcat/org/apache/el/stream//usr/share/javadoc/tomcat/org/apache/el/util//usr/share/javadoc/tomcat/org/apache/jasper//usr/share/javadoc/tomcat/org/apache/jasper/compiler//usr/share/javadoc/tomcat/org/apache/jasper/compiler/tagplugin//usr/share/javadoc/tomcat/org/apache/jasper/el//usr/share/javadoc/tomcat/org/apache/jasper/optimizations//usr/share/javadoc/tomcat/org/apache/jasper/runtime//usr/share/javadoc/tomcat/org/apache/jasper/security//usr/share/javadoc/tomcat/org/apache/jasper/servlet//usr/share/javadoc/tomcat/org/apache/jasper/tagplugins//usr/share/javadoc/tomcat/org/apache/jasper/tagplugins/jstl//usr/share/javadoc/tomcat/org/apache/jasper/tagplugins/jstl/core//usr/share/javadoc/tomcat/org/apache/jasper/util//usr/share/javadoc/tomcat/org/apache/juli//usr/share/javadoc/tomcat/org/apache/juli/logging//usr/share/javadoc/tomcat/org/apache/naming//usr/share/javadoc/tomcat/org/apache/naming/factory//usr/share/javadoc/tomcat/org/apache/naming/factory/webservices//usr/share/javadoc/tomcat/org/apache/naming/java//usr/share/javadoc/tomcat/org/apache/tomcat//usr/share/javadoc/tomcat/org/apache/tomcat/buildutil//usr/share/javadoc/tomcat/org/apache/tomcat/buildutil/translate//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/dbcp2//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/dbcp2/cpdsadapter//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/dbcp2/datasources//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/dbcp2/managed//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/pool2//usr/share/javadoc/tomcat/org/apache/tomcat/dbcp/pool2/impl//usr/share/javadoc/tomcat/org/apache/tomcat/jdbc//usr/share/javadoc/tomcat/org/apache/tomcat/jdbc/naming//usr/share/javadoc/tomcat/org/apache/tomcat/jdbc/pool//usr/share/javadoc/tomcat/org/apache/tomcat/jdbc/pool/interceptor//usr/share/javadoc/tomcat/org/apache/tomcat/jdbc/pool/jmx//usr/share/javadoc/tomcat/org/apache/tomcat/jni//usr/share/javadoc/tomcat/org/apache/tomcat/util//usr/share/javadoc/tomcat/org/apache/tomcat/util/bcel//usr/share/javadoc/tomcat/org/apache/tomcat/util/bcel/classfile//usr/share/javadoc/tomcat/org/apache/tomcat/util/buf//usr/share/javadoc/tomcat/org/apache/tomcat/util/codec//usr/share/javadoc/tomcat/org/apache/tomcat/util/codec/binary//usr/share/javadoc/tomcat/org/apache/tomcat/util/collections//usr/share/javadoc/tomcat/org/apache/tomcat/util/compat//usr/share/javadoc/tomcat/org/apache/tomcat/util/descriptor//usr/share/javadoc/tomcat/org/apache/tomcat/util/descriptor/tagplugin//usr/share/javadoc/tomcat/org/apache/tomcat/util/descriptor/tld//usr/share/javadoc/tomcat/org/apache/tomcat/util/descriptor/web//usr/share/javadoc/tomcat/org/apache/tomcat/util/digester//usr/share/javadoc/tomcat/org/apache/tomcat/util/file//usr/share/javadoc/tomcat/org/apache/tomcat/util/http//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload/disk//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload/impl//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload/servlet//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload/util//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/fileupload/util/mime//usr/share/javadoc/tomcat/org/apache/tomcat/util/http/parser//usr/share/javadoc/tomcat/org/apache/tomcat/util/log//usr/share/javadoc/tomcat/org/apache/tomcat/util/modeler//usr/share/javadoc/tomcat/org/apache/tomcat/util/modeler/modules//usr/share/javadoc/tomcat/org/apache/tomcat/util/net//usr/share/javadoc/tomcat/org/apache/tomcat/util/net/jsse//usr/share/javadoc/tomcat/org/apache/tomcat/util/net/openssl//usr/share/javadoc/tomcat/org/apache/tomcat/util/net/openssl/ciphers//usr/share/javadoc/tomcat/org/apache/tomcat/util/res//usr/share/javadoc/tomcat/org/apache/tomcat/util/scan//usr/share/javadoc/tomcat/org/apache/tomcat/util/security//usr/share/javadoc/tomcat/org/apache/tomcat/util/threads//usr/share/javadoc/tomcat/org/apache/tomcat/util/xreflection//usr/share/javadoc/tomcat/org/apache/tomcat/websocket//usr/share/javadoc/tomcat/org/apache/tomcat/websocket/pojo//usr/share/javadoc/tomcat/org/apache/tomcat/websocket/server//usr/share/javadoc/tomcat/resources/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:32640/SUSE_SLE-15-SP2_Update/83fa4d4efe8f79c779bd08029bd5d910-tomcat.SUSE_SLE-15-SP2_Updatedrpmxz5noarch-suse-linux    directoryHTML document, ASCII text, with very long linesHTML document, ASCII textASCII textASCII text, with very long linesUTF-8 Unicode text, with very long linesASCII text, with very long lines, with no line terminatorsASCII text, with very long lines, with no line terminators (Zip archive data, at least v2.0 to extract Zip archive data, at least v2.0 to extract)HTML document, UTF-8 Unicode text, with very long linesPNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedR_UJ ~#\xGutf-8939702a69b25db0dedd550fedaf8e1ccdfe138510f9dbe0569936c299399eb1e? 7zXZ !t/<6*]"k%x3 ?`iA;wjc'\@v_ߙx4`q?WA8Fγ@JļLf;󌟰mB򄑩Bm.w힯8 [ EӉ9%ٸ)a`;ȷc+=bC : 'lR.Drsӵixgnn3m9]MZEso;W&Xn[@WaM1F̃^;7~T9o>+!7v¨r`U9UeȦ7?*W8]ݽgWc=gG`-"W R)14Vb엻E}]# @0[ktؚC @q&U ֒e9$ddGWl\r ר0HLSu+0+-Io𚄎)xE*sۣS di5Ŀ5kۿVMgpwC=GiB Qf=%Js#b]Ċa^\=; 8W~4zXȰqd!3U>z62S{Ǵ͓vPw2'fRY{YٟP-h> bdݟՖu,Bh=M:[†'r0 /J]f[q#I2ƍFGՕ4"CCLꮀt5|wErD=' ]=:ό1[lרk5Oԟ'ظr7k,rtLc_06"̧*- j Poo'qp?ſ  CVg_q X" R)&d/$*9 9@]#mrӥ3}AuYm = MzUco7 ِbEIuV| [4X ͢R#N$e̞)TFϗܒ2k .IoHmηжx%|C0,^r͓fBWMlkZ(Ee];P<荢G璀":ڬXzAt&o@Ľ=E\ūt;+t}>q *?mj@ilY|.\,RG EmwɪefqGGliǷY1>So $ ʚ}7͚طCt.4(Ge1(w8~i[O3EK{rhW5BG7gQ}}՞l"ŵ7!1/V(càj Sbl^U;ԁzfBpXEEXг;rpԬ 7\ 6@cYEt 9]JrLasUa"E6vaVP1FiiِCܨOon"r_=ͻ)sZZs^D,o$Zw8IϹԆ9 kgnE,lyA5>w`<&iDh]8\k>4 O#M@`5㒑s4@Sd|g 5cE̢ [ ~j'U]4T3%™DК+?daȬ Yy\J_Ml\:}+Q^q0ihJ5kXTDQ-δI]mH7歫%M4eHGFE#UĤ@\uh^_K)m(k:!eՊ ֽ8P_!#&6/KRTQЅU`& kʷ;ƴ >c0C0p2XȻȟY4e#3@ r&^JmcF!7;|e,rclB I׵*^zLSUVpzZ{۩4vnWzZh?]MM^ʰ%75]CԆ'ZByot4 HR{mJ^"sGR WXba}a'6Q}-wf{%ss%N% Z{jD`赕ιR M$dK}X.5qT%=jبXyY&GS Y3Y6&HrP &+%6''"&03B\\0 a$9'EށkzVzP}M@1X3[bY]Z\Q.;Hl0vxQ:vzGD хH;uBe٭/TVהxa _ g4]h%(IM☾6w+mijaj7][r~b B{pAmXq4_D!Z Yn?fFjwxxGyNDqU/ {g&]VM{Ŭ(y)}t_|+}}|^t{"@iuD_ #diPWF]p\7~!gƉzaG0a][]L|H(]6.l1Fb<4ˆaa_=涘#^5XYJI'YcUPfa: e-1, M K՞L8tK3vt(>gd{uWXJg7ܘwga?_Z#`dՅFj^b}K!s[Yxߎ#MAŃ ;dD? 8 ".l ͥyb c)m{w'iĿ_RzfuC,J}c/*Պ_:0;f X< ce](z٪wYjԠs- rTw(c*>N~c7N +}V .Eb@E{g= 7 7賆Gʩ, 3p!| e(ͦY/{ge>s|I".yi|Bץ65X*!C2LSk![|{, ƴ>{lxBJws<9 OP9if3K|6$]侘3I+G-Yu!9 Hh`cr&Z֦xlf7YB}xNnw'_6$BXlY= ),HЪa/7Fo S[5kg(F; HЧB An9@_M9гPnx) _!4q[#3xY?*'2je$6'oVS%,度 C:Kb:yNNKr U9cmcgͳsBs [Y 2W S 3m6jXZuZ$:ԵD$q\.I&iB{z9(n\4XYItB` )KODFń.Cdv|_A/1N8َh.Q']yT '_jEIV8=LJF\*Wk]L|d7@Rt4fZI^2,Bg8͗V'ki!36  8趔8"ث^ #دg3^$>KJM{> !9dȯm؟iF,}mwh@ftv,œ aKԬB*}>~uQԤ_FȦ߾SA6qA-0RN>IHb>Fuh)i=&P[3-;Tq+(qF9djKcThl<# Z..CW<Ԅv~Z{|A P򆌤Szg'Q5JF@ C)ƟBBֵq_3'b 0ic#Ku^dN!ў!}V>69+b_1W|&"12~i":[X{4lSbӎ T,rβN7_K~zb3@W{O?0)V]qD*jdET %3{ bs Ug}xn30Jp6?]uGLCxcC_cI{23I\{A~`.GpY/XyqtQA* 81$!`N@v%~0ѥBu*A+2Uj74J;dSբ՝(nB/4EbASn;RpVIqȍtKbo$q #4i  :ç*p^-ʶ[*T/I ‪"~]PZ6Jy6mƒ\Pv*|eͭ?Io?WPYN$dh&1 B(lӭ)kÈzn̜%EN-b6^n&;*qiyypZyU" {@q!Ÿ,Ic>[^}W)]!-Aut2mAgHHNFǮI}y9f&씝<]an-# p )W8`S{K7xRrc>%%+Ԙڰ+ ZT[~1l(m mlL#D< y!gj֠S:y?Qx݋(VTO^Ҹt/Ozmt<֞OzyK~1huet?XȸF2;Cw3&RbpV|c-4( Hde7 2[<@pjKS(9"뫈 \"ޅE$(@sÐA0A.qki%iJ9v0TCQ8rg36QƈC4d'f@CKpdl{^y v!G*a c|8NS֋Og/n `>u5cҤgxs\ژ $FyV\zI܄3|W4\Q.f&eܬ>w0<KmvYpE_lC egӠ#)8#*NϨ7,N ]j1= KY@eSPtxISHR 6w@z"/ %*/WĖtT]^gPZ/si&W']MY%zZ~i5n|~]\.ڣj7$pL) '4e,yKuxcO((A ?pumgՀ+đ)U_gPcif}`P *3YM!yC Oh @SOkoc=‰d]L`ImC'N.RQar(C~AB̚턖! Nca,pQ Gw{푾NoyrB bc6d4D3nx|0V9pvVܚQ!Ҹ5wP&ˈS&1H٭>Pދ]`cD(тYc i1zM-;''7xE;!q{ggYTKyVQCRZo_ g^؈Cr ?!{W#%/ F"i2׍nMzsLғg kHHTYIx籫d+R;3~%eʅCM _c|{j3F2WǾth+Yh{ >vvN=5[zzM?&k6()wz2&d[V:\b y_#ܫYzғh^sw,^O :2AGo9+ SW FB29m[m)wW-9G\LxBi\Hx3lT/q!7 ) lb n[IRngTo[qdeÝޥ 96/6; !p d+AOKAc5n Ñ0OMF_5BE6 uW#d2 K۪=k1($j5wFQ`J;1Rx*Pq^ig*B6fjqXY0 .cWmL޵tn1*=+Qa;\;>)q~.* qnyh=rnxj4Yn"V1XuӪ %i7^IjV{EReoւNثȢV&r%v)1z!L)q{EB0ן{Ie6bl?>ƺ#bH{\]]FP{EZpsN~_PuSrd^NB|mAonT%p6maMqF/2d}(!BIhh7괼vŎ"U]$`_&@6ٟ:IV2]CxcMmLh"n,޳6)mA$EX}T%~7Z b͕0 C]a+6ZlMhDAti *8i둹e#KG)ˀkb3okd Nϒq? 5(%S\;WIT_nF^h_a?&ΧkѸdlߊī+R?dv䡽 qZDݟ &فR+w Ml[ ¡zꄭ˝5@X8ΪW\Z/2zg^LxDRPR]"BEܡ P#fh腅[/D" b2&J-|liHGj>DE0 ?-Q (/ybʫi/ɟ3mnth~V,l+Kx]ddl<`.$o rZTWJęDc'.m\Nw (Df5G_yH% |.H@&g 7MeyN+]GpIu,>LVړPgT)9p/> T@D |I^r~y#Y.(H>`j5(6TK })Z'JZy״pr[hx-B4]36G JN9fF+.@/qbOV XBt) -ry\2Ƥ4!qn)&EAB8䪘/m 9]] #6N+ϔXf [BA\[_K6å`HPdEA^ag 1 @kItm ˇSaow3޷vۿd*{c XNuDXjH8G16!BiBl kofyƚX\ -rp~k$$}IUxJx YZ